Closed janbarasek closed 3 years ago
Stačí jen přidat do baraja-core\admin-bar-src-\assets\style.css
:
body {
margin-top: 45px;
}
Funguje to, i když má stránka fixní hlavičku?
Řešení musí fungovat i v případě, kdy si web fixuje hlavičku přes CSS styl top: 0
(navíc tam může mít přepínač important
). Nezapomeň na obecnost. Stránka nemusí obsahovat <body>
element a pozice prvků může být vypočítána dynamicky.
Teoretické řešení:
Hrubá představa je ta, že admin bar vykreslíš na zápornou souřadnici, tj. top bude na -25px, a potom se ti povede posunout celou stránku dolů, protože jakékoli jiné řešení nemusí fungovat obecně, a taky nesmíš nikdy rozbít javascript, pokud náhodou na stránce nějak počítá rozměry.
Problém zafixování hlavičky řešil třeba i sám Google v jeho náhledu historie stránky. Zkus prozkoumat jeho implementaci:
Stačí do Googlu zadat: cache:php.baraja.cz
.
Řešení googlu taky není bez chyby. Celou stránku zabalí do divu a nepočítá s prvkem který má position-top:0.
Chápu. Zkus najít nějaké vhodné řešení, které bude mít co nejméně nevýhod a bude fungovat na co největší množství případů.
Pravděpodobně budeme muset součástí CMS napsat pravidlo, jak se má správně šablona konfigurovat, aby s Admin Barem vypadala vždy dobře.
Přesně tak. Co se týče wordpressu tak ani ten nějak nebojuje s position-top: 0. Tvůrci šablon prostě ten styl nepoužívají.
Adminbar wordpressu po přenastavení navigace na position: 0 v css souboru.
Pojďme to zatím udělat jen přes ten CSS selector pro body
a časem promyslíme lepší řešení.
Tento balík přidává černý admin bar do všech stránek, pokud je uživatel přihlášen.
Bar se automaticky přes CSS styl pozicuje fixně na začátku stránky. Styly jsou pak umístěny přímo v tomto balíku, přičemž balík zajišťuje jejich korektní vykreslení do stránky, pokud je Bar zobrazen.
Styly: https://github.com/baraja-core/admin-bar/blob/master/src/assets/style.css
Šablona je pak implementována jako
phtml
soubor, který je optimalizován na rychlost renderu: https://github.com/baraja-core/admin-bar/blob/master/src/assets/content.phtmlPři vykreslení Baru se stává, že se vykreslí přes hlavní obsah stránky.
Příklad:
Zkus vymyslet způsob, jak obsah stránky posunout o fixní počet pixelů (Bar je vždy stejně vysoký, rozměry najdeš ve stylu) a tím se zajistí, že bude stránka korektně vidět.
Například takto:
Řešení si představuji tak, že se posune obsah
<body>
o fixní horní margin, zatímco Bar bude pozicován fixně, takže zůstane na začátku stránky.Logiku testuj v libovolném projektu a pak sem pošli Pull request.
Díky.