Stretch menü a css teljes szélességére. Hogyan készítsünk rugalmas, adaptív menüt a css-ben? HTML jelölés és alapstílusok a vízszintes menükhöz
A webhelymenü meglehetősen gyakori elrendezése, amikor a vele ellátott tároló az oldalon elérhető teljes szélességet elfoglalja. Ebben az esetben az első elem szomszédos a bal széllel, az utolsó pedig jobbra, és az összes elem közötti távolság egyenlő. Ma elmondjuk, hogyan történik ez.
Kínálunk egy példát arra, hogyan lehet a folyékony menüt megvalósítani az erőforrás CSS használatával. Ebben a menüben az elemek egy sorban helyezkednek el. A Javascript nem használható. A menü tartalma rendszeres listába kerül. Az ilyen menü fő jellemzője a sokoldalúság, amely abban nyilvánul meg, hogy az elemek száma és hossza egyaránt tetszőleges lehet.
Hogyan lehet ezt megvalósítani?
Minden programozó felajánlhatja a maga módját a probléma megoldására. Minden a képzeletén, a profizmus szintjén és képességein múlik. A probléma leggyakoribb megoldása a táblázat használata. Továbbá sokan javasolják a javascript használatát. Akik javasolják a display tulajdonság használatát az értékkel asztal vagy táblázat-cella- sietek idegesíteni. Ez a módszer nem eléggé kompatibilis a böngészők között.
Megoldásunk
Javaslatunk a HTML5 és CSS3 ismeretek szilárd alapjaira épül.
A folyamat lényege a text-align tulajdonságon alapszik, igazolási értékkel. Azok számára, akik elfelejtették - emlékeztetlek: ez a tulajdonság a szöveg igazítását a tároló teljes szélességében irányítja.
Két alapvető szabályt kell betartani megoldásunk használata során. Az első az, hogy a menüpont-tároló szélességének kisebbnek kell lennie, mint a szöveg. Vagyis nem egy sorban. A második fontos szabály, hogy a szavak egyformán nyúlnak, függetlenül attól, hogy ugyanahhoz a ponthoz tartoznak-e vagy sem.
Az alábbiakban látható a kód, amely példaként szolgál a "gumi" menü létrehozására:
Html
< ul> < li>< a href= "#" >a fő a> li> < li>< a href= "#" >Blog a> li> < li>< a href= "#" >hírek a> li> < li>< a href= "#" >Népszerű a> li> < li>< a href= "#" >Uj tetelek a> li> ul>
ul (text-align: igazol; túlcsordulás: rejtett; / * eltávolítja a módszer mellékhatásait * / magasság: 20px; / * eltávolítja a feleslegeseket is * / kurzor: alapértelmezett; / * beállítja az eredeti kurzor alakját * / margó: 50px 100px0100px; háttér: #eee; párnázás: 5px; ) li (kijelző: sorban; / * a menüpontokat szövegessé teszi * /) li a (kijelző: inline- blokk; / * javítsa a szó törését a menüben * / szín: # 444; ) a: lebeg (szín: # ff0000;) ul: after ( / * a második sor kialakítása a módszer kidolgozásához * / tartalom: "1"; margó bal: 100%; magasság: 1px; túlcsordulás: rejtett; kijelző: inline- blokk; )
A régi jó Internet Explowerernél való munkavégzéshez hozzá kell adnia a következő kódot a CSS-hez
ul (z- index: kifejezés (runtimeStyle. zIndex = 1, insertAdjacentHTML ("beforeEnd & apos,"< li class = "last" > li> "));) ul. utolsó (margó balra: 100%;) * html ul (/ * csak ie6 szükséges * / magasság: 30px;)
A szükséges tulajdonságértékek és kód regisztrálása után a következő gumimenüt kapjuk:
A módszer hátrányai
- Tömeges kód
- Képtelen meghatározni egy elem aktív állapotát osztályválasztóval. Ennek oka a bekezdésekben szereplő szavak törése (ha az egy). A probléma megoldása egy másik tároló hozzáadása a listaelemekhez.
- A legördülő menüben testre kell szabnia a kódot a túlcsordulás negatív hatása miatt.
Milyen böngészőkben működik?
6.0+ | 6.0+ | 10.5+ | 5.0+ | 3.6+ | - | - |
Vízszintes menü a helyszekciók listája, ezért logikusabb az elemen belül megjelölni
- majd alkalmazza a CSS stílusokat az elemeire. A menü ezen elrendezése a leggyakoribb, mivel a weblapon való elhelyezésének nyilvánvaló előnyei vannak.
- Menü tétel
- Menü tétel
- Menü tétel ...
Hogyan készítsünk vízszintes menüt: jelölések és tervezési példák
HTML jelölés és alapstílusok a vízszintes menükhöz
Alapértelmezés szerint az összes listaelem pozícionálva van függőlegesen, elfoglalva a konténerelem teljes szélességét szélességben, ami viszont elfoglalja a konténerblokk teljes szélességét.
HTML jelölés a vízszintes navigációhoz
A címkén belül vízszintes menü opcionálisan elhelyezhető egy elem belsejében és / vagy
Számos módon lehet elhelyezni őket. vízszintesen... Először vissza kell állítania a navigációs elemek alapértelmezett böngészőstílusait:
Ul (liststílus: nincs; / * listamarkerek eltávolítása * / margó: 0; / * 1em-rel egyenlő felső és alsó margó eltávolítása * / bal oldali párnázás: 0; / * 40 képpontos bal oldali margó eltávolítása * /) a ( szöveg-dekoráció: nincs; / * távolítsa el a link szövegének aláhúzását * /)
1.li módszer (megjelenítés: sorban;)
A listaelemek kisbetűvé tétele. Ennek eredményeként vízszintesen helyezkednek el, a jobb oldalon közöttük 0,4em-es rés (hozzáadva a betűmérethez). Eltávolításához adjon negatív jobb margót li (margó-jobb: -4px;) a li számára. Ezután stílusozzuk a linkeket, ahogy szeretnénk.
2.li módszer (úszó: bal;)
A listaelemek lebegtetése. Ennek eredményeként vízszintesen vannak elhelyezve. Az ul tartályblokk magassága nulla lesz. A probléma megoldása érdekében hozzáadjuk (overflow: hidden;) az ul-hoz, kibővítve azt, és lehetővé téve, hogy lebegő elemeket tartalmazza. A linkekhez adjon hozzá egy (display: block;) elemet, és stílusozza őket tetszés szerint.
A 3.li módszer (kijelző: inline-block;)
A lista elemeit inline-block formává tesszük. Vízszintesen helyezkednek el, a jobb oldalon rés képződik, mint az első esetben. A linkekhez adjon hozzá egy (display: block;) elemet, és stílusozza őket tetszés szerint.
4.ul módszer (kijelző: flex;)
Az ul rugalmas tárolóvá tétele modell segítségével. Ennek eredményeként a listaelemek vízszintesen vannak elrendezve. Adjon hozzá egy (display: block;) linket a linkekhez, és formázza őket tetszés szerint.
1. Válaszoló menü aláhúzással, ha egy link fölé viszi az egeret
@import url ("https://fonts.googleapis.com/css?family=Ubuntu+Condensed"); .menu-main (liststílus: nincs; margó: 40px 0 5px; kitöltés: 25px 0 5px; kitöltés: közép; háttér: fehér;) .menu-main li (kijelzés: inline-block;) .menu- main li: after (content: "|"; color: # 606060; display: inline-block; vertical-align: top;). menu-main li: last-child: after (tartalom: nincs;). menu-main a (szövegdekoráció: nincs; font-család: "Ubuntu Condensed", sans-serif; betűköz: 2px; pozíció: relatív; padding-bottom: 20px; margó: 0 34px 0 30px; betűméret: 17px; text-transform: nagybetű; display: inline-block; átmenet: color .2s;) .menu-main a, .menu-main a: meglátogatott (color: # 9d999d;) .menu-main a.current, .menu- main a: lebeg (szín: # feb386;). menu-main a: before, .menu-main a: after (tartalom: ""; pozíció: abszolút; magasság: 4px; fent: automatikus; jobb: 50%; lent : -5px; bal: 50%; háttér: # feb386; átmenet: .8s;) .menu-main a: lebeg: előtte, .menu-main .current: előtt (balra: 0;) .menu-main a: lebeg: után, .menu-main .current: után (jobbra: 0; ) @media (max-width: 550px) (.menu-main (padding-top: 0;) .menu-main li (kijelző: blokk;) .menu-main li: after (tartalom: nincs;) .menu- fő a (kitöltés: 25px 0 20px; margó: 0 30px; ))2. Reszponzív menü az esküvő helyszínére
@import url ("https://fonts.googleapis.com/css?family=PT+Sans"); .top-menu (pozíció: relatív; háttér: #fff; box-shadow: beszúrás 0 0 10px #ccc;) .top-menu: before, .top-menu: after (content: ""; display: block; height : 1px; border-top: 3px solid # 575350; border-bottom: 1px solid # 575350; margin-bottom: 2px;). Top-menu: after (határ-alsó: 3 képpontos szilárd # 575350; határ-felső: 1 képpont szilárd # 575350; box-shadow: 0 2px 7px #ccc; margin-top: 2px;) .menu-main (list-style: none; kitöltés: 0 30px; margin: 0; font-size: 18px; text-align: center; pozíció: relatív;) .menü-main: before, .menu-main: after (tartalom: "\ 25C8"; vonal-magasság: 1; pozíció: abszolút; felső: 50%; transzformáció: fordításY (-50% );) .menü-main: előtte (balra: 15px;) .menü-main: utána (jobbra: 15px;) .menü-main li (kijelző: inline-block; kitöltés: 5px 0;) .menü-main a (szövegdekoráció: nincs; kijelző: inline-block; margó: 2px 5px; kitöltés: 6px 15px; betét-család: "PT Sans", sans-serif; betűméret: 16px; szín: # 777777; border-bottom : 1px szilárd átlátszó; transitio n: 3 s lineáris; ) .menu-main .current, .menu-main a: lebeg (határ-sugár: 3px; háttér: # f3ece1; szín: # 313131; text-shadow: 0 1px 0 #fff; border-color: # c6c6c6;) @media (max-width: 500px) (.menu-main li (display: block;))3. Adaptív menü fésűkagylóval
@import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .menu-main (liststílus: nincs; kitöltés: 0 30 képpont; margó: 0; betűméret: 18 kép; szöveg-igazítás: közép; pozíció: viszonylagos; háttér: fehér;). menü-fő: után (tartalom: ""; pozíció: abszolút; szélesség: 100%; magasság: 20px; bal: 0; alsó: -20px; háttér: sugárirányú gradiens (fehér 0%, fehér 70%, rgba (255,255,255,0) 70%, rgba ( 255,255,255,0) 100%) 0 -10px; háttérméret: 20px 20px; háttérismétlés: ismétlés-x;) .menu-main li (kijelző: inline-block;) .menu-main a (szövegdekoráció: nincs; kijelző: inline-block; margó: 0 15px; kitöltés: 10px 30px; font-család: "PT Sans Caption", sans-serif; color: # 777777; átmenet: .3s lineáris; pozíció: relatív;) .menü -main a: before, .menu-main a: after (tartalom: ""; pozíció: abszolút; felső: calc (50% - 3px); szélesség: 6px; magasság: 6px; határsugár: 50%; háttér: # F58262; átlátszatlanság: 0; átmenet: .5s könnyebb ki-be;) .menu-main a: előtt (balra: 5px;) .menü-main a: után (jobbra: 5px;) .menü-main a. aktuális: korábban, .menu-main a.cur rent: after, .menu-main a: hover: before, .menu-main a: hover: after (átlátszatlanság: 1;) .menu-main a. áram, .menu-main a: lebeg (szín: # F58262; ) @media (max. szélesség: 680 képpont) (.menu-main li (kijelző: blokk;))4. Reagáló menü a szalagon
@import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .top-menu (margó: 0 60px; pozíció: relatív; háttér: # 5A394E; box-shadow: beszúrás 1px 0 0 rgba (255,255,255, .1), beillesztés -1px 0 0 rgba (255,255,255, .1), beszúrás 150px 0 150px -150px rgba (255,255,255, .12), beillesztés -150px 0 150px -150px rgba (255,255,255, .12);). Top-menu: before, .top-menu: after (content: ""; position: Absolute ; z-index: 2; bal: 0; szélesség: 100%; magasság: 3 kép;). felső menü: előtte (felső: 0; szegély-alsó: 1 kép szaggatott szaggatott rgba (255 255 255, .2);). top- menü: után (alul: 0; border-top: 1px szaggatott rgba (255,255,255, .2);) .menü-main (list-stílus: nincs; kitöltés: 0; margó: 0; szöveg-igazítás: közép;). menu-main: before, .menu-main: after (tartalom: ""; pozíció: abszolút; szélesség: 50 képpont; magasság: 0; felső: 8 képpont; szegély-felső: 18 képpont szilárd # 5A394E; szegély-alsó: 18 képpont tömör # 5A394E; transzformáció: forgatás (360deg); z-index: -1;). Main-main: előtte (balra: -30px; balra-balra: 12px szilárd rgba (255, 255, 255, 0);) .menü main: after (jobb: -30px; border-right: 12px solid rgba (2 55, 255, 255, 0); ) .menu-main li (display: inline-block; jobb-margin: -4px;) .menu-main a (text-decoration: none; display: inline-block; kitöltés: 15px 30px; font-family: "PT Sans Caption ", sans-serif; szín: fehér; átmenet: .3s lineáris;) .menü-fő a.áram, .menu-fő a: lebeg (háttér: rgba (0,0,0, .2);) @media (max-width: 680px) (.top-menu (margó: 0;) .menu-main li (kijelző: blokk; margó-jobb: 0;) .menu-main: előtte, .menu-main: után (tartalom: nincs;). menu-main a (display: blokk;))5. Reszponzív menü, középen logóval
@import url ("https://fonts.googleapis.com/css?family=Arimo"); .top-menu (pozíció: relatív; háttér: rgba (34,34,34, .2);) .menu-main (liststílus: nincs; margó: 0; kitöltés: 0;). menu-main: után (tartalom: ""; kijelző: táblázat; törlés: mindkettő;). bal oldali elem (lebeg: bal;). jobb elem (lebeg: jobb;). navigációs logó (pozíció: abszolút; bal: 50%; felső : 50%; transzformáció: fordítás (-50%, - 50%);). A menu-main a (szövegdekoráció: nincs; kijelző: blokk; vonalmagasság: 80 képpont; kitöltés: 0 20 képpont; betűméret: 18 képpont) ; betűköz: 2px; font-family: "Arimo", sans-serif; font-weight: bold; szín: fehér; átmenet: .3s lineáris;) .menü-main a: lebeg (háttér: rgba (0, 0,0, .3);) @media (max-szélesség: 830px) (.menu-main (padding-top: 90px; text-align: center;). Navbar-logo (pozíció: abszolút; bal: 50% ; top: 10px; transform: translateX (-50%);) .menu-main li (float: none; display: inline-block;) .menu-main a (line-height: normal; kitöltés: 20px 15px; font -méret: 16px;)) @media (max. szélesség: 630px) (.menu-main li (display: block;))6. Bal oldali logóval ellátott adaptív menü
@import url ("https://fonts.googleapis.com/css?family=Arimo"); .top-menu (háttér: rgba (255,255,255, .5); box-shadow: 3px 0 7px rgba (0,0,0, .3); kitöltés: 20px;) .top-menu: after (tartalom: "" ; display: table; clear: both;) .navbar-logo (display: inline-block;) .menu-main (list-style: none; margin: 0; padding: 0; float: right;) .menu-main li (display: inline-block;) .menu-main a (szövegdekoráció: none; display: block; pozíció: relatív; line-height: 61px; padding-left: 20px; font-size: 18px; betűköz : 2px; font-family: "Arimo", sans-serif; font-weight: bold; color: # F73E24; átmenet: .3s lineáris;) .menu-main a: before (tartalom: ""; szélesség: 9px; magasság: 9px; háttér: # F73E24; pozíció: abszolút; bal: 50%; transzformáció: forgatás (45deg) translateX (6,5px); átlátszatlanság: 0; átmenet: .3s lineáris;). menü-main a: lebeg: előtte (átlátszatlanság: 1;) @media (max. szélesség: 660 képpont) (.menu-main (float: nincs; padding-top: 20px;). top-menu (szöveg-igazítás: közép; kitöltés: 20px 0 0 0; ) .menu-main a (kitöltés: 0 10px;) .menu-main a: be elé (transzformáció: rotate (45deg) translateX (-6px);)) @media (max-width: 600px) (.menu-main li (display: block;))Folytatjuk a sorozatot a legördülő menük bemutatójával. A következő lépés egy vízszintes legördülő menü css-ben saját kezűleg.
Ha véletlenül került ide, vagy a legördülő menü másik megvalósítását kereste, akkor azt tanácsolom, hogy keresse fel a szülő szakaszt.
Ez a szakasz leírja a vízszintes legördülő menüt CSS-ben és HTML-ben.
Oldal navigáció:
Így, feladatunk:
készítsen vízszintes menüt css legördülő menüvel (ul li listákon) a jQuery és a Javascript használata nélkül, valamint táblázatok nélkül