Commit 12d6d9cd authored by Nikolay Gromov's avatar Nikolay Gromov

Допилил бургер и off-canvas

parent ffbaa53e
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
"com", "com",
"ru", "ru",
"svg", "svg",
"SVG",
"tbody", "tbody",
"tfoot", "tfoot",
"thead", "thead",
......
...@@ -35,9 +35,7 @@ ...@@ -35,9 +35,7 @@
<div class="off-canvas" id="off-canvas"> <div class="off-canvas" id="off-canvas">
<div class="off-canvas__aside"> <div class="off-canvas__aside">
1111 <ul class="menu" id="off-canvas-menu"></ul>
<br>
222
</div> </div>
<div class="components-demo blocks-library off-canvas__page-content"> <div class="components-demo blocks-library off-canvas__page-content">
...@@ -280,7 +278,7 @@ ...@@ -280,7 +278,7 @@
<section class="blocks-library__item" id="sprite-svg" data-name=".sprite-svg"> <section class="blocks-library__item" id="sprite-svg" data-name=".sprite-svg">
<h2 class="blocks-library__item-title">svg-спрайт c <a href="https://github.com/w0rm/gulp-svgstore">gulp-svgstore</a></h2> <h2 class="blocks-library__item-title">SVG-спрайт c <a href="https://github.com/w0rm/gulp-svgstore">gulp-svgstore</a></h2>
<p>Из файлов папки <code>sprite-svg/svg/</code> в папку <code>sprite-svg/img/</code> будет сгенерирован файл спрайта <code>sprite-svg.svg</code>, который далее будет скопирован в папку сборки. Стилевой файл блока не используется. Сам спрайт имеет вид:</p> <p>Из файлов папки <code>sprite-svg/svg/</code> в папку <code>sprite-svg/img/</code> будет сгенерирован файл спрайта <code>sprite-svg.svg</code>, который далее будет скопирован в папку сборки. Стилевой файл блока не используется. Сам спрайт имеет вид:</p>
...@@ -1702,7 +1700,7 @@ ...@@ -1702,7 +1700,7 @@
</section> </section>
<section class="blocks-library__item" id="off-canvas" data-name=".off-canvas"> <section class="blocks-library__item" id="off-canvas-demo" data-name=".off-canvas">
<h2 class="blocks-library__item-title">Боковое меню</h2> <h2 class="blocks-library__item-title">Боковое меню</h2>
...@@ -1727,6 +1725,8 @@ ...@@ -1727,6 +1725,8 @@
</section> </section>
<div class="burger blocks-library__menu-toggler" data-toggle="off-canvas"><span data-toggle="off-canvas"></span></div>
</div> </div>
<div class="off-canvas__overlay" data-toggle="off-canvas"></div> <div class="off-canvas__overlay" data-toggle="off-canvas"></div>
...@@ -1785,6 +1785,14 @@ ...@@ -1785,6 +1785,14 @@
demoNoUiSlider.noUiSlider.set([this.value, null]); demoNoUiSlider.noUiSlider.set([this.value, null]);
}); });
var demoBlocks = document.querySelectorAll('.blocks-library__item');
var offCanvasMenu = '';
demoBlocks.forEach(function(block) {
offCanvasMenu += '<li class="menu__item"><a class="menu__link" data-toggle-native="off-canvas" href="#'+block.getAttribute('id')+'">'+block.querySelector('.blocks-library__item-title').textContent+'</a></li>';
});
var offCanvasMenuContent = document.getElementById('off-canvas-menu');
offCanvasMenuContent.innerHTML = offCanvasMenu;
}); });
</script> </script>
</body> </body>
......
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
.burger { .burger {
position: relative; position: relative;
z-index: 1; z-index: 1;
top: 0;
right: 0;
display: flex; display: flex;
align-items: center; align-items: center;
width: 30px; width: 30px;
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
// модификаторов, псевдоселекторов, псевдоэлементов, @media-условий... // модификаторов, псевдоселекторов, псевдоэлементов, @media-условий...
// Не пишите здесь другие селекторы. // Не пишите здесь другие селекторы.
$gray-lightest: hsl(0, 0%, 90%) !default;
$text-color: hsl(0, 0%, 10%) !default; $text-color: hsl(0, 0%, 10%) !default;
$border-color: hsl(0, 0%, 60%) !default; $border-color: hsl(0, 0%, 60%) !default;
...@@ -37,8 +35,6 @@ $border-color: hsl(0, 0%, 60%) !default; ...@@ -37,8 +35,6 @@ $border-color: hsl(0, 0%, 60%) !default;
text-decoration: none; text-decoration: none;
&:hover, &:hover,
&:focus { &:focus {}
background-color: $gray-lightest;
}
} }
} }
document.addEventListener('click', function(event) { document.addEventListener('click', function(event) {
if(event.target.dataset.toggle === 'off-canvas') { if(event.target.dataset.toggle === 'off-canvas') {
event.preventDefault(); event.preventDefault();
offCanvasToggle();
}
if(event.target.dataset.toggleNative === 'off-canvas') {
offCanvasToggle();
}
function offCanvasToggle() {
document.getElementById('off-canvas').classList.toggle('off-canvas--open'); document.getElementById('off-canvas').classList.toggle('off-canvas--open');
} }
}); });
...@@ -9,6 +9,10 @@ $transition-time: 0.3s !default; ...@@ -9,6 +9,10 @@ $transition-time: 0.3s !default;
$toggler-part-height: 3px !default; $toggler-part-height: 3px !default;
// Переменная ширины этого блока
//
$off-canvas-width: 250px !default;
.off-canvas { .off-canvas {
$block-name: &; $block-name: &;
...@@ -17,16 +21,22 @@ $toggler-part-height: 3px !default; ...@@ -17,16 +21,22 @@ $toggler-part-height: 3px !default;
overflow: hidden; overflow: hidden;
&__aside { &__aside {
position: fixed; max-height: 30vh;
z-index: 2; overflow-y: auto;
width: 250px;
height: 100%;
backface-visibility: hidden; backface-visibility: hidden;
background-color: $gray-darkest; background-color: $gray-darkest;
color: #fff; color: #fff;
transform: translateX(-250px);
transition: transform $transition-time ease; transition: transform $transition-time ease;
.js & {
position: fixed;
z-index: 2;
width: $off-canvas-width;
height: 100%;
max-height: none;
transform: translateX(($off-canvas-width * -1));
}
a { a {
color: #fff; color: #fff;
...@@ -37,57 +47,6 @@ $toggler-part-height: 3px !default; ...@@ -37,57 +47,6 @@ $toggler-part-height: 3px !default;
} }
} }
&__aside-inner {
overflow-y: auto;
}
&__close {
position: absolute;
top: 0;
left: 100%;
background-color: $gray-darkest;
opacity: 0;
visibility: hidden;
z-index: -1;
display: flex;
align-items: center;
width: 30px;
height: 30px;
user-select: none;
cursor: pointer;
transition: opacity $transition-time ease;
.no-js & {
display: none;
}
> span {
width: 100%;
height: 100%;
position: relative;
&:before,
&:after {
content: '';
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: $toggler-part-height;
background: #fff;
transform-origin: 50% 50%;
}
&:before {
transform: translateY(-50%) rotate3d(0, 0, 1, 45deg);
}
&:after {
transform: translateY(-50%) rotate3d(0, 0, 1, -45deg);
}
}
}
&__page-content { &__page-content {
backface-visibility: hidden; backface-visibility: hidden;
transition: transform $transition-time ease; transition: transform $transition-time ease;
...@@ -100,7 +59,6 @@ $toggler-part-height: 3px !default; ...@@ -100,7 +59,6 @@ $toggler-part-height: 3px !default;
left: 0; left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
// transition: opacity $transition-time ease;
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
opacity: 0; opacity: 0;
visibility: hidden; visibility: hidden;
...@@ -108,7 +66,7 @@ $toggler-part-height: 3px !default; ...@@ -108,7 +66,7 @@ $toggler-part-height: 3px !default;
&--open { .js &--open {
#{$block-name}__overlay { #{$block-name}__overlay {
position: fixed; position: fixed;
...@@ -129,7 +87,7 @@ $toggler-part-height: 3px !default; ...@@ -129,7 +87,7 @@ $toggler-part-height: 3px !default;
} }
#{$block-name}__page-content { #{$block-name}__page-content {
transform: translateX(250px); transform: translateX($off-canvas-width);
} }
} }
} }
...@@ -111,36 +111,24 @@ ...@@ -111,36 +111,24 @@
} }
} }
.js-font-resizer { &__menu-toggler {
position: relative; position: fixed;
backface-visibility: hidden;
@media (min-width: $screen-md) { bottom: 0;
left: 0;
&:hover { background-color: #000;
width: 40px;
.js-font-resizer__btns { height: 40px;
opacity: 1; padding: 5px;
}
} .off-canvas--open & {
} display: none;
}
.js-font-resizer__btns {
margin-bottom: 1em;
font-size: 2rem;
transition: opacity 0.3s;
@media (min-width: $screen-md) {
opacity: 0.2;
position: absolute;
top: 0;
left: -4rem;
width: 4rem;
} }
.btn { & > span,
width: 3rem; & > span:before,
text-align: center; & > span:after {
background-color: #fff;
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment