Opravený blok v bočnom paneli. Opravená horná ponuka a plávajúci bočný panel vo WordPress. Dva alebo viac blokov sú fixované jeden po druhom

Aké sú požiadavky na usporiadanie?

  • Gumové rozloženie v dvoch stĺpcoch
  • bočný panel pevná šírka 300px
  • obsah je natiahnutý na zvyšok šírky.
  • päta stlačená nadol (v tomto návode neukážem, ako sa to robí).

Aké problémy Css vznikajú pri usporiadaní takéhoto rozloženia:

1 spôsob.

Ak plávate bloky, vy musí im dať pevnú šírku(nemôžete nastaviť 1 bočný panel na 300 pixelov a obsah na 100 %). V tomto prípade sa obsah posunie nadol alebo sa zobrazí horizontálne posúvanie o 300 pixelov doľava. No, hlavná vec, ktorú treba pochopiť, je, že táto metóda nám nevyhovuje.


2 spôsobom.

Mnoho sadzačov ponúka túto metódu, o čom premýšľajú?! Podstatou metódy je, že môžete nastaviť postranný panel tak, aby sa vznášal so šírkou 300, a nie plávať obsah a nastaviť mu margin-left: 300px. Dobrý spôsob a zdá sa, že všetko funguje tak dobre. Aby som bol úprimný, myslel som si, že je to najlepší spôsob, ale táto metóda má svoje vlastné úskalia. Dôvody na upustenie od tejto metódy sú, že ak zrazu v obsahu vytvoríme napríklad menu s floated li alebo akýmikoľvek inými blokmi float a potom ich chceme vymazať s clear:both, tak sa spodná hranica tohto bloku posunie až po úroveň spodného okraja bočného panela (Čo a nie je to divné, pretože je vymazaná, môžete sa tomu vyhnúť, ak nastavte plávajúci blok na pevnú výšku, ale vôbec nejde o nastavenie pevnej výšky).


3 spôsob.

Môže byť použitý pre absolútna poloha bočného panela ale iba ak ty sme si istí, že obsah bude na výšku väčší ako bočný panel v opačnom prípade sa celý obsah bočného panela zmestí na pätu (napokon absolútne umiestnenie vytrháva zo všeobecného toku).

Ale pokiaľ ide o mňa, toto tiež nie je veľmi dobrý spôsob!


4 spôsobom.

"Skvelý spôsob, ak má nejaké nedostatky, prosím komentujte. Ale myslím si, že toto je najlepší spôsob."

  • Výhody tejto metódy: po prvé, obsah DOM pôjde pred bočný panel, čo je dobré pre vyhľadávače.
  • na pätu sa nič nezmestí
  • akékoľvek bloky sa dajú vyčistiť a nič sa neposunie na spodnú hranicu (Takže sme prekonali problémy druhej metódy).

Vo všeobecnosti, ako to funguje: pozrite sa na kód ako prvý príde obsah a potom bočný panel. na tieto dva bloky nastavíme float (samozrejme bočná lišta sa posúva dole). potom nastavíme vlastnosť bočného panela margin-left:-100%. skvelé, je to späť na svojom mieste a odsadenie obsahu pomocou margin-lerft:300px.


html

css

.sidebar(
šírka: 300px;
displej:blok;
plavák: vľavo;
marža: 0 0 0 -100 %;
}
.content(
min-width:723px;
displej:blok;
plavák: vľavo;
okraj: 0 0 0 220px;
}

Na stránke je potrebný plávajúci blok (alebo ako sa tiež hovorí pohyblivý, fixný, uviaznutý), aby používateľ pri rolovaní stránky videl jeden pevný prvok, v ktorom sa najčastejšie umiestňuje reklama (upútavky, bannery alebo kontext).

Bohužiaľ, pravidlá adsense nám to zakazujú. Mnohí majitelia stránok však pravidlá ignorujú na vlastné riziko. Možno za to nie sú ani potrestaní, ale neradil by som riskovať.

Do takýchto blokov umiestňujem svoje teasery / bannery a niekedy ich tam namiesto reklamy zobrazím Súvisiace príspevky alebo nejaké užitočné informácie pre návštevníka.

Povedzme si, ako môžete na svojej stránke vytvoriť plávajúci blok.

Úloha: urobte posledný blok v bočnom paneli (bočnom paneli) plávajúcim. Navyše tak, aby sa nalepil až v momente, keď sa k nemu užívateľ dostane rolovaním, a nie hneď pri otvorení stránky. Blok by sa mal tiež „odlepiť“ a dosiahnuť pätu (t. j. neprekrývať ho).

Najpracovnejší spôsob

Existuje mnoho implementácií lepiaceho bloku, ale nie všetky fungujú správne. Poviem od osobná skúsenosť: Rovnaký spôsob inštalácie bloku môže fungovať na jednom mieste, ale na inom sa objavia zárubne.

Nižšie je uvedený príklad plávajúceho bloku, ktorý fungoval takmer na každej stránke, na ktorú som ho nainštaloval. Neboli tam žiadne kozy. Engine tiež nie je dôležitý (DLE, WordPress, LiveStreet atď.).

Prilepte nasledujúci kód HTML na požadované miesto na bočnom paneli:

$(okno).scroll(funkcia() (
var sb_m = 20 ; /* horné a spodné čalúnenie */
var mb = 300; /* výška suterénu s okrajom */
varst = $(okno).scrollTop() ;
var sb = $(".sticky-block" ) ;
var sbi = $(".sticky-block .inner" );
var sb_ot = sb.offset() .top;
var sbi_ot = sbi.offset() .top;
var sb_h = sb.height () ;

If(sb_h + $(document).scrollTop() + sb_m + mb< $(document) .height () ) {
if(st > sb_ot) (
var h = Math.round(st - sb_ot) + sb_m;
sb.css(("paddingTop" : h) );
}
inak(
sb.css(( "paddingTop" : 0 ) );
}
}
} ) ;

V tomto kóde si môžete nastaviť vrch, spodok a výšku vašej päty, t.j. výška, v ktorej sa má blok zastaviť.

Teraz zahrnieme JS. Ak to chcete urobiť, napíšte do sekcie HEAD:

$(function() ( var $window = $(window); var $sidebar = $(".sidebar"); var $sidebarTop = $sidebar.position().top; var $sidebarHeight = $sidebar.height() ; var $footer = $(".footer"); var $footerTop = $footer.position().top; $window.scroll(funkcia(udalosť) ( $sidebar.addClass("fixed"); var $scrollTop = $window.scrollTop(); var $topPosition = Math.max(0, $sidebarTop - $scrollTop); if ($scrollTop + $sidebarHeight > $footerTop) ( var $topPosition = Math.min($topPosition, $footerTop - $scrollTop - $sidebarHeight); ) $sidebar.css("top", $topPosition); )); ));

Je zaujímavé, že blok, ktorý pri rolovaní zostáva na jednom mieste, sa nazýva: "sťahovanie", "plávajúci", "sťahovanie", "mobilné", "posuvné". A vlastne aj on "zaseknutý", "opravené", "opravené" a nachádza sa v určitej oblasti obrazovky monitora bez ohľadu na stupeň posúvania webovej stránky.

Počiatočný variant, keď nič nepláva

Počiatočné údaje: blok je už umiestnený. Ja mám niečo takéto s veľkou pätou, ty to máš inak.

Ako opraviť blok (div, aside, atď.), hlavičku, reklamu, menu. Iba CSS

Plávajúci blok, ktorý zamrzne nad pätou alebo iným prvkom. Čistý JavaScript bez jQuery

Aby plávajúci blok nezmizol, neprešiel do päty stránky, ale zastavil sa nad zadaným prvkom.

Prvok sa zachytí iba počas posúvania cez iný prvok

Ak chcete, aby sa prvok odpojil a zastavil, keď pole článku skončí. To znamená, že spodné okraje článku a boky musia byť na tej istej čiare.

Ako urobiť dva (voliteľné) bloky prilepené na oboch bočných paneloch

Dva alebo viac blokov sú fixované jeden po druhom

Pri rolovaní nadol sa prvý blok prilepí, keď rodič skončí, odlepí sa; druhá sa prilepí, keď rodič skončí, odlepí sa; tretie palice a tak ďalej.

To isté, len so spoločným rodičom.

Plávajúci dlhý bočný panel bez bieleho miesta

Pri posúvaní nadol sa bočný panel prilepí, keď sa jeho spodný okraj dotkne spodného okraja okna prehliadača. Pri posúvaní nahor sa bočný panel prilepí, keď sa jeho horný okraj dotkne horného okraja okna prehliadača. Existuje spodná hranica, ktorú stĺpec dosiahne.

Rozloženie s dvoma stĺpcami je najobľúbenejšie vo webovom dizajne vďaka svojej všestrannosti a jednoduchosti. Obsah sa nachádza v širokom stĺpci a navigácia v úzkom, v žargóne webových vývojárov nazývanom aj bočný panel. Nič vám však nebráni urobiť stĺpce rovnakej šírky, ak je to diktované dizajnom. Na obr. Obrázok 5.11 zobrazuje rozloženie v dvoch stĺpcoch s navigáciou vpravo a obsahom vľavo.

Ryža. 5.11. Rozloženie v dvoch stĺpcoch

Vzhľadom na to, že šírka všetkých stĺpcov je známa vopred, vzhľadom na to, že máme do činenia s pevným rozložením, existuje niekoľko spôsobov, ako stĺpce vytvárať. Ich všeobecný princíp je takýto. Vrstvy so stĺpcami sú umiestnené v kontajneri, nazvime ho rozloženie , pre ktorý je nastavená šírka rozloženia a zarovnanie na stred.

2. stĺpec

Budeme sa držať konvencie, že vrstva bočného panela tvorí bočný panel s navigáciou a obsah je hlavným obsahom stránky (obsahom).

Navigácia vľavo

Prvý spôsob vytvárania stĺpcov je založený na umiestnení. Pre vrstvu rozloženia nastavíme relatívne umiestnenie a pre vnútorné vrstvy absolútne umiestnenie. Pomocou tejto kombinácie hodnôt môžete nastaviť polohu prvkov vzhľadom na rodiča pomocou vlastností left a top (príklad 5.3).

Príklad 5.3. Pomocou polohovania

Rozloženie ( šírka: 980px; okraj: auto; pozícia: relatívna; /* Relatívne umiestnenie */ ) .sidebar, .content (position: absolute; ) .sidebar ( background: #C6DD7D; /* Farba pozadia */ šírka: 180px; /* Šírka stĺpca */ ) .content ( pozadie: #F4ECCE; /* Farba pozadia */ doľava: 180px; /* Posun doprava */ šírka: 800px; /* Šírka stĺpca */ )

V predvolenom nastavení má vlastnosť left hodnotu 0, takže táto vlastnosť nie je nastavená pre bočný panel. Absolútne umiestnené prvky majú šírku rovnajúcu sa šírke obsahu, takže pre každú vrstvu je potrebné zadať hodnotu šírky.

Vyššie uvedená metóda má tú výhodu, že poradie vrstiev v kóde pre ňu nehrá veľkú rolu. Ich miesta môžete ľahko zmeniť, nebude to mať vplyv na zobrazenie stĺpcov.

2. stĺpec

Jednoduchší štýl získate použitím vlastnosti float s hodnotou left , ktorá je nastavená pre vrstvu bočného panela. Aby sme však nezískali zjednodušený bočný panel, ale akýsi stĺpec, musí obsahová vrstva tiež nastaviť vlastnosť margin-left na hodnotu rovnú alebo väčšiu ako je šírka ľavého stĺpca (príklad 5.4).

Príklad 5.4. Pomocou plaváka

Rozloženie ( šírka: 980px; okraj: auto; ) .sidebar ( pozadie: #C6DD7D; /* Farba pozadia */ šírka: 180px; /* Šírka stĺpca */ plávajúca plocha: doľava; /* Zalomiť doprava */ ) .content ( pozadie : #F4ECCE; /* Farba pozadia */ ľavý okraj: 180px; /* ľavý okraj */ )

Prípadne môžete odstrániť vlastnosť margin-left a pridať do rozloženia vlastnosť overflow s hodnotou auto alebo skryté na vytvorenie stĺpcov.

Pravá navigácia

Vyššie uvedené štýly na vytvorenie ľavej navigácie možno ľahko upraviť na navigáciu doprava. V skutočnosti je jediným rozdielom medzi stĺpcami ich šírka a farba pozadia. Zmenou rozmerov súvisiacich so šírkou a prehodením pozadia dostaneme výsledok, keď sa už navigácia nachádza vpravo. Príklad 5.5 ukazuje modifikáciu kódu z príkladu 5.3.

Príklad 5.5. Pomocou polohovania

Rozloženie ( šírka: 980px; okraj: auto; pozícia: relatívna; ) .sidebar, .content (pozícia: absolútna; ) .content ( pozadie: #F4ECCE; /* Farba pozadia */ šírka: 800px; /* Šírka stĺpca */ ) .sidebar ( pozadie: #C6DD7D; /* Farba pozadia */ vľavo: 800px; /* Shift vpravo */ šírka: 180px; /* Šírka stĺpca */ )

Pri umiestňovaní môžu nastať problémy s umiestnením päty (ak existuje) na iné prvky. Táto problematika je diskutovaná v časti o gumených trojstĺpcových rozloženiach.

Podobnú akciu možno vykonať s príkladom, v ktorom sa objaví vlastnosť margin-left. Ale v tomto prípade je vhodnejšie použiť vlastnosť float s hodnotou right . Tiež margin-left sa zmení na margin-right (príklad 5.6).

Príklad 5.6. Pomocou plaváka

Rozloženie ( šírka: 980px; okraj: auto; ) .sidebar ( pozadie: #C6DD7D; /* Farba pozadia */ šírka: 180px; /* Šírka stĺpca */ plávajúca plocha: vpravo; /* Zalomiť vľavo */ ) .content ( pozadie : #F4ECCE; /* Farba pozadia */ pravý okraj: 180px; /* Pravý okraj */ )

Štýly stĺpcov nezohľadňujú niektoré veci, ktoré sa často vyskytujú na skutočných stránkach. Konkrétne nie sú určené okraje, takže text je zarovnaný s okrajmi stĺpcov. Pridaním vlastnosti padding s danou šírkou sa zväčší šírka prvku, takže musíte zmenšiť hodnotu šírky o veľkosť okraja alebo pridať vnorený prvok s okrajom alebo paddingom.

Príklad 5-7 sa pozerá na kód, kde je navigácia v pravom stĺpci, je tam aj päta a zohľadňujú sa okraje.

Príklad 5.7. Rozloženie v dvoch stĺpcoch

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Rozloženie v dvoch stĺpcoch

jablkový vaječný likér

Mlieko - 40 ml, jablková šťava - 100 ml, cukrový sirup - 30 mm, jeden žĺtok.

Nápoj pripravíme v mixéri, podávame v highball pohári s ľadom a slamkou.

Výsledok tohto príkladu je znázornený na obr. 5.12.

Ryža. 5.12. Rozloženie v dvoch stĺpcoch

Pre vrstvu obsahu je odsadenie povolené cez vlastnosť padding, ale keďže nie je určená šírka vrstvy, padding to nijako neovplyvní. Do vrstvy bočného panela je vložený zoznam, ktorý má štandardne nastavené odsadenia, takže nedochádza k „prilepovaniu“ textu k okraju pozadia. Vlastnosť clear sa pridá do päty (vrstva päty), ktorá prepíše efekt plávajúcej . Vyžaduje sa, keď je výška navigácie vyššia ako výška obsahu, aby text neprekrýval pätu.