# Moduł: sidebar
# W katalogu
|--src/ → Pliki źródłowe
| |--modules/ → Moduły: katalog główny
| | |--sidebar/
| | | |--sidebar.twig
| | | |--sidebar.scss
| | | |--sidebar.js
# CSS
# Dostępne wartości do zmiany
| Zmienna | Wartość domyślna | Opis |
|---|---|---|
$sidebar-border-radius | 16px | zakrąglenia główne |
$sidebar-background-color | $color-white | kolor tła |
$sidebar-box-shadow | 0 4px 8px 0 rgba(0, 52, 104, .1), 0 0 1px 0 rgba(0, 52, 104, .3) | cień |
$sidebarAccount-color | $color-primary | kolor fonta użytkownika |
$sidebarMenu__primary-background | $color-primary | kolor tła menu |
$sidebarMenu__primary-font-family | $font-family-nunito | Font menu |
$sidebarMenu__primary-font-weight | $font-weight-extrabold | Grubość fonta |
$sidebarMenu__primary-link-color | $color-white | Kolor linka |
$sidebarMenu__primary-divider-color | #1132db | Kolor separatora |
$sidebarMenu__white-link-color | $color-primary | Kolor linka menu bez tła |
$sidebarMenu__white-divider-color | #dadfe5 | Kolor separatora menu bez tła |
$sidebarMenu__white-font-weight | $font-weight-medium | Grubość fonta menu bez tła |
$sidebarMobile-background-color | $color-white | Belka mobilna kolor tła |
$sidebarMobile-border-radius | 16px | Belka mobilna zaokrąglenia |
$sidebarMobile-box-shadow | 0 4px 8px 0 rgba(0, 52, 104, .1), 0 0 1px 0 rgba(0, 52, 104, .3) | Belka mobilna cień |
$sidebarMobile-padding-mobile-fixed | rem(8) rem(16) rem(10) rem(24) | belka mobilna padding: fixed |
$sidebarMobile-padding-mobile | rem(8) rem(8) rem(10) rem(16) | belka mobilna padding |
$sidebarMobile-padding-tablet | rem(12) rem(16) rem(16) | belka mobilna padding tablet |
$sidebarWrap-background-color | $color-bg | mobilne menu otwarte tło |
$sidebarWrap-padding | rem(24) rem(16) | mobilne menu otwarte padding |
# JS
/**
* Sidebar
*/
export default function sidebar() {
const sidebar = document.querySelectorAll('[data-js="sidebar-trigger"]');
// When Navbar exists
if (sidebar.length > 0) {
var headerFromTOP = window.pageYOffset + document.querySelector('.sidebarMobile').getBoundingClientRect().top
// Show an overlay on the navbar toggler click
var trigger = function () {
[].forEach.call(sidebar, function(trigger) {
trigger.addEventListener('click', function (e) {
e.preventDefault();
document.body.classList.toggle('sidebar--opened');
}, false);
});
};
trigger();
window.onresize = function() {
headerFromTOP = window.pageYOffset + document.querySelector('.sidebarMobile').getBoundingClientRect().top
};
window.onscroll = function() {
fixedMobileHeader(headerFromTOP)
};
function fixedMobileHeader(headerFromTOP) {
if (document.body.scrollTop > headerFromTOP || document.documentElement.scrollTop > headerFromTOP) {
document.querySelector('.sidebarMobile').classList.add('fixed-header');
document.querySelector('body').classList.add('fixed-header');
} else {
document.querySelector('.sidebarMobile').classList.remove('fixed-header');
document.querySelector('body').classList.remove('fixed-header');
}
}
}
}
# HTML
<div class="sidebarMobile">
<div class="sidebarAccount">
<div>Adam Kowalski</div>
<div class="points">942 <sup>pkt</sup></div>
</div>
<a href="#" class="btn btn-menu" data-js="sidebar-trigger"><img src="./img/icon__bars.svg" alt=""> menu</a>
</div>
<div class="sidebarWrap">
<a href="#" class="sidebarMobileTrigger" data-js="sidebar-trigger"><img src="./img/icon__times.svg" alt=""></a>
<div class="sidebarAccount sidebarAccount__big">
<div class="sidebarAccount__name">Adam<br>Kowalski</div>
<div class="points">942 <sup>pkt</sup></div>
</div>
<div class="sidebar">
<div class="sidebarAccount">
<div>Adam Kowalski</div>
<div class="points">942 <sup>pkt</sup></div>
</div>
<ul class="sidebarMenu sidebarMenu__white">
<li ><a href="/poziomy-uczestnikow.html" class="sidebarMenu__link">Gold<img src="./img/icon__star-small.svg" alt=""></a></li>
<li ><a href="/historia-punktow.html" class="sidebarMenu__link">Historia punktów</a></li>
</ul>
<ul class="sidebarMenu sidebarMenu__primary">
<li><a href="/dashboard.html" class="sidebarMenu__link is-active">Zadania</a></li>
<li><a href="/biblioteka.html" class="sidebarMenu__link">Biblioteka</a></li>
<li><a href="/ranking.html" class="sidebarMenu__link">Ranking</a></li>
<li><a href="/nagroda-glowna.html" class="sidebarMenu__link">Nagroda główna</a></li>
<li><a href="/katalog-nagrod.html" class="sidebarMenu__link">Katalog nagród</a></li>
<li><a href="/o-konkursie.html" class="sidebarMenu__link">O konkursie</a></li>
</ul>
<ul class="sidebarMenu sidebarMenu__white">
<li><a href="/edycja-konta.html" class="sidebarMenu__link">Edytuj konto</a></li>
<li><a href="/login.html" class="sidebarMenu__link">Wyloguj</a></li>
</ul>
</div>
{% include '../../modules/frequentLogins/frequentLogins.twig' with { 'boxes': false, 'sidebar': true } %}
<a href="" class="btn btn-language">Change language <img src="img/flag-uk.jpg" srcset="img/[email protected] 2x,
img/[email protected] 3x"></a>
</div>