Hogyan készítsünk css segítségével gumiérzékeny menüt? Csináld magad vízszintes legördülő menü CSS és HTML adaptív menüvel, a bal oldalon logóval

A webhely menüjének meglehetősen gyakori elrendezése, amikor a vele lévő tároló az oldalon elérhető teljes szélességet elfoglalja. Ebben az esetben az első elem a bal széllel szomszédos, az utolsó pedig a jobb oldalon, és az összes elem közötti távolság egyenlő. Ma elmondjuk, hogyan történik ez.

Példát kínálunk egy gumimenü megvalósítására CSS használatával az erőforrásként. Ebben a menüben az elemek egy sorban helyezkednek el. Javascript nem lesz használva. A menü tartalma egy normál 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 tetszőleges lehet.

Hogyan lehet ezt megvalósítani?

Minden programozó felkínálja a saját módját egy adott probléma megoldásának. Minden a képzeletétől, professzionalizmusától és képességeitől függ. A probléma leggyakoribb megoldása egy táblázat használata. Emellett sokan javasolnák a javascript használatát. Sietek csalódást okozni azoknak, akik a display tulajdonság használatát javasolnák az értéktáblázattal vagy táblázatcellával. Ez a módszer nem eléggé kompatibilis több böngészővel.

A mi megoldásunk

Kínálatunk a HTML5 és CSS3 ismeretek szilárd alapjaira épül.

A folyamat lényege a text-align tulajdonságon alapul az justify értékkel. Azok számára, akik elfelejtették, emlékeztetem: ez a tulajdonság a szöveg igazítását a tároló teljes szélességében orientálja.

Megoldásunk használata során két kötelező szabályt kell betartani. Az első az, hogy a menüelem tárolójának szélessége kisebb legyen, mint a szöveg. Vagyis nem egy sorban. A második fontos szabály az, hogy a szavak egyformán nyújtódnak, 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 egy gumimenü létrehozására:

HTML

< ul> < li>< a href= "#" >Otthon< li>< a href= "#" >Blog< li>< a href= "#" >Hír< li>< a href= "#" >Népszerű< li>< a href= "#" >Új elemek

ul ( text- align: justify; túlcsordulás: rejtett; /* kiküszöböli a metódus mellékhatásait */ magasság: 20px; /* szintén kiküszöböli a felesleges */ kurzor: alapértelmezett ; /* beállítja a kurzor kezdeti alakját */ margó : 50px 100px 0 100px background: #eee padding: 5px ) li (kijelző: soron belüli; /* szövegessé teszi a menüelemeket */ ) li a (megjelenítés: soron belüli blokk; /* kiküszöböli a szótöréseket a menüben; szín: #444; ) a : hover ( szín: #ff0000; ) ul: after ( /* a második sort képezi a módszer kidolgozásához */ tartalom: "1" ; margó balra: 100 %; magasság: 1px; túlcsordulás: rejtett kijelző: inline- blokk;

Ha a jó öreg Internet Explorerben szeretne dolgozni, a következő kódot is hozzá kell adnia a CSS-hez

ul ( z- index: kifejezés(runtimeStyle. zIndex = 1 , insertAdjacentHTML("beforeEnd&apos, "< li class = "last" >")); ) ul .last ( margó balra: 100%; ) * html ul ( /* csak ie6 kell */ magasság: 30 képpont; )

A szükséges tulajdonságértékek és kód megadása után ezt a gumimenüt kapjuk:

A módszer hátrányai
  • Kötet kódja
  • Képtelenség meghatározni egy elem aktív állapotát osztályválasztón keresztül. Ez a bekezdésekben lévő szavak törése miatt fordul elő (ha van ilyen). 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+ - -

    A vízszintes menü a webhely szakaszainak listája, ezért logikusabb az elemen belül megjelölni

      , majd alkalmazza a CSS-stílusokat elemeire. Ez a menüelrendezés a legelterjedtebb a weboldalon való elhelyezés nyilvánvaló előnyei miatt.

      Hogyan készítsünk vízszintes menüt: elrendezési és tervezési példák HTML jelölés és alapvető stílusok a vízszintes menühöz

      Alapértelmezés szerint az összes listaelem függőlegesen van elrendezve, és elfoglalja a tárolóelem teljes szélességét, amely viszont a tárolóblokk teljes szélességét elfoglalja.

      HTML jelölés a vízszintes navigációhoz

      A címkén belül található vízszintes menü ezenkívül elhelyezhető a ... és/vagy ... elemen belül. Ennek köszönhetően a html jelölés szemantikai jelentést kap, és további lehetőséget ad a menüblokk formázására.

      Számos módja van a vízszintes elhelyezésüknek. Először vissza kell állítania a navigációs elemek alapértelmezett böngészőstílusait:

      Ul (lista-stílus: nincs; /*listajelölők eltávolítása*/ margó: 0; /*eltávolítja a felső és alsó margót, amely egyenlő 1em*/ padding-left: 0; /*eltávolítja a 40 képpontnak megfelelő bal oldali kitöltést*/ ) a ( szövegdekoráció: nincs; /*a hivatkozás szövegének aláhúzásának eltávolítása*/)

      1. li módszer (megjelenítés: soron belüli;)

      Listaelemek kisbetűssé tétele. Ennek eredményeként vízszintesen helyezkednek el, és a jobb oldalon 0,4 em rés van közöttük (a betűmérethez viszonyítva). Az eltávolításhoz adjon hozzá egy negatív jobb margót a li li-hez (jobb margó: -4 képpont;) . Ezután tetszés szerint alakítjuk a linkeket.

      2. módszer. li (lebegtetés: balra;)

      Listaelemek lebegővé tétele. Ennek eredményeként vízszintesen helyezkednek el. A konténerblokk ul magassága nullává válik. A probléma megoldására hozzáadjuk (túlcsordulás: rejtett;) az ul-hoz, kiterjesztve azt, és így lehetővé téve, hogy lebegő elemeket tartalmazzon. A hivatkozásokhoz adjon hozzá egy (megjelenítés: blokk;) és stílusát tetszés szerint.

      3. li módszer (megjelenítés: inline-block;)

      Listaelemek készítése inline-block. Vízszintesen helyezkednek el, a jobb oldalon rés keletkezik, mint az első esetben. A hivatkozásokhoz adjon hozzá egy (megjelenítés: blokk;) és stílusát tetszés szerint.

      4. módszer ul (kijelző: flex;)

      Az ul lista rugalmas tárolóvá tétele a . Ennek eredményeként a listaelemek vízszintesen vannak elrendezve. Adunk hozzá egy (display: block;)-t a hivatkozásokhoz, és tetszés szerint stílusozzuk őket.

      1. Adaptív menü aláhúzással, ha az egérmutatót egy hivatkozás fölé viszi @import url("https://fonts.googleapis.com/css?family=Ubuntu+Condensed"); .menu-main ( listastílus: nincs; margó: 40px 0 5px; kitöltés: 25px 0 5px; szöveg igazítása: középre; háttér: fehér; ) .menu-main li (megjelenítés: inline-block;).menu- main li:after ( tartalom: "|"; szín: #606060; kijelző: 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; kitöltés alsó: 20px; margó: 0 34px 0 30px; betűméret: 17px; text-transform: nagybetűk: inline-block: color .2s ) .menu-main a:visited (szín: #9d999d;). ) .menu-main a:before, .menu-main a:after (tartalom: ""; pozíció: abszolút; magasság: 4px; felül: automatikus; jobb: 50%; lent: -5px; bal: 50%; háttér : #feb386; átmenet: .8s; .menu-main a:hover:fore, .menu-main .current:fore (balra: 0; .menu-main .current:after) 0;) @media (max-width: 550px) ( .menu-main (padding-top: 0;).menu-main li (megjelenítés: blokk; ) .menu-main li:after (tartalom: nincs;) . menu-main a ( padding: 25px 0 20px; @import url("https://fonts.googleapis.com/css?family=PT+Sans"); .top-menu ( pozíció: relatív; háttér: #fff; box-shadow: inset 0 0 10px #ccc; ) .top-menu:before, .top-menu:after ( tartalom: ""; megjelenítés: blokk; magasság : 1px border-top: 3px solid #575350 .felső-menü: után 575350; box-shadow: 0 2px 7px margin-top: .menu-main (lista-stílus: nincs; margó: 0; font-size: 18px; text-align: center; pozíció: relatív; ) .menu-main:before, .menu-main:after ( tartalom: "\25C8"; sormagasság: 1; pozíció: abszolút; felső: 50%; transzformáció: translateY(-50% ); (szövegdekoráció: nincs; megjelenítés: soron belüli blokk; margó: 2px 5px; kitöltés: 6px 15px; betűcsalád: "PT Sans", sans-serif; betűméret: 16px; szín: #777777; keret-alsó : 1px tömör átlátszó átmenet: .3s lineáris; ) .menu-main .current, .menu-main a:hover ( border-radius: 3px; background: #f3ece1; color: #313131; text-shadow: 0 1px 0 #fff; border-color: #c6c6c6; ) @media (max. szélesség: 500 képpont) ( .menu-main li (megjelenítés: blokk;) ) 3. Reszponzív csipkézett menü @import url("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .menu-main ( listastílus: nincs; kitöltés: 0 30 képpont; margó: 0; betűméret: 18 képpont; szöveg igazítása: középre; pozíció: relatív; háttér: fehér; ) .menu-main:after ( tartalom: "" pozíció: abszolút magasság: 20px, háttér: 0%, fehér 70%, rgba (255,255,0) 100% -10px; background-repeat: repeat-x) .menu-main li (megjelenítés: inline-block;) .menu-main a (szövegdekoráció: nincs; kijelző: inline-block; kitöltés: 10px 30px; font-family: "PT Sans Caption", sans-serif; átmenet: .3s lineáris; -main a:before, .menu-main a:after (tartalom: ""; pozíció: abszolút; felső: calc(50% - 3px); szélesség: 6px ; magasság: 6 képpont: 50% átlátszatlanság: 0,5 s-before (balra: 5 képpont); után (jobbra: 5px;) .menu-main a. current:before, .menu-main a.current:after, .menu-main a:hover:before, .menu-main a:hover:after (átlátszatlanság: 1) ;) .menu-main a.current, .menu-main a:hover (szín: #F58262;) @media(max-width:680px) ( .menu-main li (megjelenítés: blokk;) ) 4. Adaptív 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,1), pxbeállítás 0 150px -150px rgba(255,255,255,.12), inset -150px 0 150px -150px rgba(255,255,255,.12); .top-menu:before, .top-menu: "after" z-index: 2; magasság: 3px ) .top- menü: után -stílus: nincs; margó: 0. menü-fő: után ; felső: 18px, szilárd # 5A394E: forgatás (360 fok); border-left: 12px solid rgba(255, 255, 255, 0 ) .menu- main:after (jobb: -30px; border-right: 12px solid rgba(255, 255, 255, 0); ) .menu-main li ( display: inline-block; margin-right: -4px; ) .menu-main a ( text-decoration: none; display: inline-block; padding: 15px 30px; font-family: "PT Sans Caption", sans-serif; szín: fehér; átmenet: .3s lineáris; ) .menu-main a.current, .menu-main a:hover (háttér: rgba(0,0,0,.2);) @media (max-width: 680px) ( .top-menu (margin: 0;) .menu-main li ( display: block; margin-right: 0; ) .menu-main:before, .menu-main:after (tartalom: nincs;) .menu-main a (megjelenítés: blokk;) ) 5. Reszponzív menü logóval a közepén @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 ( lista-stílus: nincs; margó: 0; padding: 0; ) .menu-main:after ( tartalom: ""; kijelző: táblázat; egyértelmű: mindkettő; ) .bal-elem (lebegő: bal;) .jobb-elem (lebegés: jobb;).navbar-logo ( pozíció: abszolút; bal: 50%; tetejére : 50%; transzformáció: fordítás(-50%,-50%) .menu-main a ( text-decoration: none; display: block; line-height: 80px; padding: 0 20px; font-size: 18px ; betűköz: 2px, szín: fehér: 0,0,3);) @media (max. szélesség: 830px; main ( padding-top: 90px; text-align: center; ) .navbar-logo ( pozíció: abszolút; balra: 50% ; felül: 10px; transzformáció: translateX(-50%) ) .menu-main li ( lebegés: nincs megjelenítve: inline-block; kijelző: blokk;) ) 6. Reszponzív menü logóval a bal oldalon @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; li (megjelenítés: inline-block;).menu-main a ( szövegdekoráció: nincs; megjelenítés: blokk; pozíció: relatív; sormagasság: 61 képpont; bal oldali kitöltés: 20 képpont; betűméret: 18 képpont; betűköz : 2px; betűcsalád: "Arimo", sans-serif: #F73E24 átmenet: .menu-main a:before (tartalom: ""; szélesség: 9px; bal: 50% transform(45deg) translateX(6.5px) átmenet: .3s lineáris 20 képpont -6px);) ) @media (max. szélesség: 600px) ( .menu-main li (megjelenítés: blokk;) )

      Jó napot

      Gyakran szükség van egy vízszintes menü létrehozására, amely a szülőblokk teljes szélességében kiterjed, függetlenül attól, hogy hány elemet tartalmaz.

      Ma szeretném megmutatni, hogyan készítsünk egy ilyen menüt.

      Így az étlapunk a következő lesz:

      Teljes szélességében ki van feszítve, és fölé húzva kiemelkedik. A menü oldalt lekerekített.

      HTML MARKUP

      ...

      A menü teljes szélessé tételéhez 100%-os szélességű táblázatokat használtam. Minden táblához tartozik egy menüpont div konténer. Attól függően, hogy az első, az utolsó vagy a közbenső menüpont div, a megfelelő osztály hozzárendelésre kerül.

      Minden div konténernek 2 oldalszegélye van abszolút pozicionálással, amelyek szükségesek a helyes megjelenítéshez. Ha szabványos szegélyeket használsz, akkor a menüpontok váltásakor a szöveg 1-2 pixellel ugrik, ami jó.

      Az aktív osztály felelős a kiválasztott menüpontért és kiemeli azt.

      Minden tételben van kép és szöveg. Annak biztosítására, hogy mindez függőlegesen szigorúan középre igazodjon, egy táblázatot használunk. A függőleges igazítási tulajdonságnak köszönhetően menüpontjaink mindig zökkenőmentesen jelennek meg és nem mozdulnak el.

      CSS SZABÁLYOK

      Először állítsunk be stílusokat a menü általános megjelenítéséhez:

      Menu_container ( padding-top: 40px; szélesség: 100%; magasság: 47px; border-spacing: 0px; ) .menu_container td ( függőleges igazítás: középen; /* függőleges igazítás */ ) .last_point_menu, .first_point_menu_point, .menu szélesség: 100%; szegély: 1 képpont. 150px; padding-left: 4px; .td.inner_table_title ( padding-top: 4px; font-weight: bold; ) .td.inner_table_img (szélesség: 40px!fontos; ) .inner_table_menu (magasság:1:0) ; függőleges-igazítás: nincs szegély: balra ) .belső_tábla (szélesség: 30 képpont! fontos; magasság: 30 képpont! fontos; kitöltés balra: 15 képpont; )

      A szépség kedvéért kerekítsük le a sarkokat a menü oldalain:

      First_point_menu ( -webkit-border-top-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-bottomleft: 5px; border-left-radius: 5px border-bottom-right: 1px solid #dadbda .last_point_menu ( -webkit-border-top-right-radius: 5px; -webkit-border -; alsó-jobb-sugár: 5px -moz-border-radius-topright

      Most szebb lett az étlapunk:

      Eddig az első pontnak nincs bal oldali szegélye. Kicsit később javítjuk.

      Most adjunk hozzá lebegtetési effektusokat a menühöz.

      Middle_point_menu:hover, .last_point_menu:hover, .first_point_menu:hover, .middle_point_menu.active, .last_point_menu.active, .first_point_menu.active, .middle_point_menu.active ( háttérszín: #CAE285:-moz háttér-line-imagear5; gradient(top, #CAE285, #9FCB56, background-image: -webkit-gradient(lineáris, 0 0, 0 100%, from(#CAE285), to(#9FCB56)); #9FCB56); -szín: #aec671 #9fbb62 #87ac4a border-left: nincs ) .last_point_menu ( border: 1px solid #dadbda; border-left: none; ) .last_point_menu:hover ( border: 1px solid #9FCB56; border-left: nincs;

      keretszín: #aec671 #9fbb62 #87ac4a; ) .last_point_menu.active (szegély-bal: nincs; )

      /* stílusok oldalszegélyekhez */ .borderLeftSecond, .borderRightSecond ( kijelző: nincs; pozíció: abszolút; szélesség: 1px; magasság: 47px; háttérszín: #9fbb62; felső: 0px; z-index: 1000; ) /* határok abszolút eltolásai */ .borderLeftSecond ( balra: 0px; , .middle_point_menu:hover > .borderRightSecond, .last_point_menu:hover > .borderLeftSecond .first_point_menu:hover > .borderRightSe; block case-ek / displayRightSe). és utolsó elem */ .first_point_menu.active .borderLeftSecond ( kijelző: nincs; ) .last_point_menu.active .borderRightSecond ( kijelző: nincs; ) .last_point_menu:hover .borderLeftSecond ( kijelző: blokk; )

      Ennyi!

      Kiváló menüt kaptunk a szülőblokk teljes szélességében! Az elemek nem fedik egymást, amikor az egeret mozgatja, és az elrendezés nem ugrik.

      Helló. Nagyon régóta nem írtam bejegyzéseket a html/css munka témájában. Nemrég kezdtem el új elrendezést készíteni, és közben rábukkantam egy érdekes trükkre, amivel a menüt gumiszerűvé teheted (új elemeket adhatsz hozzá és a méret nem nő, hanem mindig a szülő 100%-a lesz tömb). Tehát ma egy gumimenüt fogunk megvalósítani CSS használatával.

      Ha túl lusta a cikk elolvasásához, megtekintheti ezt a videót. A szerző is nagyon jól elmagyaráz mindent:

      Gumi menü CSS-sel – 1. lépés

      Az első lépés mindig a html jelölés, hol lennénk nélküle? De a mi esetünkben minden egyszerű lesz:

    • blokkburkoló a menühöz
    • maga a menü felsorolásjeles listán keresztül (ul tag)
    • Nos, a menüpontok bent vannak, és ennek megfelelően már vannak linkjeik
    • Minden világos, itt van a jelölőkódom:



      Minden szabványosnak tűnik, így:

      Most mindent a kívánt formába helyezünk, a CSS munkába áll.

      2. lépés – Alapstílusok

      Ezután stílusokat adok a burkolóblokkhoz. Ugyanis a maximális szélességet 600 pixelre állítom (csak hogy könnyebb legyen képernyőképet készíteni, hogy illeszkedjen a menü), és a blokkot is középre állítom.

      Betakar(
      háttér: #fff;
      maximális szélesség: 600 képpont;
      margó: 0 auto;
      }

      3. lépés - gumit valósítson meg

      Most nézzük magát a menüt. Eltávolítom róla a jelölőket (az ul tag), készítek egy háttér lineáris színátmenetet, és ami a legfontosabb, a display: table-row tulajdonságot használom, hogy a menü tárolója táblázatsorként viselkedjen. Ez fontos a további manipulációkhoz.

      R-menu(
      háttér: lineáris gradiens(jobbra, #b0d4e3 0%,#88bacf 100%);
      kijelző: táblázat-sor;
      lista-stílus: nincs;
      }

      Amint látja, a fenti kód csak mindent megoldott, amiről írtam. Egyébként kényelmes a színátmenetek generálása az Ultimate CSS Gradient generator eszközzel. Majd egyszer írok még róla.

      R-menu(
      függőleges igazítás: alsó;
      kijelző: táblázat-cella;
      szélesség: auto;
      szöveg igazítása: középre;
      magasság: 50px;
      border-right: 1px solid #222;
      }

      • vertical-align: bottom - ez a tulajdonság azért szükséges, hogy ha egy menüpont szövege 2 soros, akkor egyenletesen jelenjen meg. Amikor elkészítjük a menüt, eltávolíthatja ezt a tulajdonságot, nagyíthatja, hogy az elemek tömörítve legyenek, és a szöveg két sorba kerüljön, és megjelenik egy megjelenítési probléma. Adja vissza az ingatlant, és minden rendben lesz.
      • display: table-cell - mivel magát a megjelenítési menüt táblasornak állítottuk be, logikus lenne beállítani, hogy az elemei cellákként jelenjenek meg egy táblázatban. Ez kötelező.
      • szélesség: automatikus – a szélesség automatikusan kiszámításra kerül, a bekezdésben lévő szöveg hosszától függően
      • text-align: center - ez csak a szöveg középpontba helyezésére szolgál
      • magasság: 50 képpont – állítsa a magasságot 50 képpontra
      • nos, a border-right csak egy szegély a jobb oldalon, az elemek elválasztója

      Eddig csúnyán néz ki az étlap, de nem baj, ideje eszünkbe juttatni.

      Az utolsó teendő az elemeken belüli hivatkozások stílusának beállítása. Itt van ez a kódom:

      R-menü li a(
      szöveg-dekoráció: nincs;
      szélesség: 1000px;
      magasság: 50px;
      függőleges igazítás: középen;
      kijelző: táblázat-cella;
      szín: #fff;
      betűtípus: normál 14px Verdana;
      }

      És most így néz ki a menü:

      Még egyszer hadd magyarázzam el néhány sort:

      • a text-decoration tulajdonság felülírja a hivatkozások alapértelmezett aláhúzását
      • szélesség: 1000 képpont talán a legfontosabb vonal. Körülbelül ekkora szélességűre kell beállítani a hivatkozásokat, esetleg kisebbre, de mindenképpen nagyobbra, mint a lehető legszélesebb menüpont. A hivatkozások nem lesznek 1000 pixel szélesek, mivel a szélességet a li menüpont korlátozza, melynek szélessége auto-ra van állítva, de ez lehetővé teszi, hogy a menü tetszőleges számú eleménél mindig 100 legyen. a szélesség százaléka.
      • függőleges igazítás: középső és megjelenítő: táblázat-cella - az első a szöveget függőlegesen középre igazítja, a második pedig a hivatkozásokat is cellaként jeleníti meg. Mindkét ingatlanra szükség van.
      • font - nos, ez csak egy beállításkészlet a betűtípushoz. Ebben a cikkben olvashat a betűtípusok css tulajdonságairól.
      4. lépés (opcionális) Hozzáadhat interaktivitást

      Például úgy, hogy a menüelem színe megváltozik, ha rámutat. Ez egyszerűen megvalósítható a hover pszeudoosztály használatával:

      R-menü li:hover(
      háttérszín: #6bba70;
      }

      A menü tesztelése gumiszerűség szempontjából

      Remek, az étlapok készen vannak, de a legfontosabbat még nem ellenőriztük – hogy mennyire gumis, ahogy ígértem. Nos, hozzáadok még 2 elemet a menühöz:

      A menü szélessége 600 pixel marad. A fennmaradó elemeket egyszerűen zsugorították egy kicsit, hogy 2 újat helyezzenek el.

      Hozzáteszek még egy hosszú pontot:

      Amint látható, a menü egy kicsit összezsugorodott, és a hosszú elem teljesen normálisan jelenik meg. És ha nem lenne a függőleges igazítás: alsó tulajdonság, amiről beszéltem, a menü rosszabbul nézne ki.

      A menüt háromra csökkentem.

      A tételek sokkal szabadabbak lettek, de maga a menü szélessége nem változott. Így 100% gumi menüt készítettünk!

      Hogyan lehet adaptálni?

      Elvileg, ha a burkolótömbnek egy maximális szélességet ad meg, nem pedig egy fixet, akkor nem is kell átalakítani. Az én esetemben a max-width tulajdonságom: 600 képpont, és amikor a szélesség 600 pixel alá csökken, a blokk egyszerűen zsugorodik a képernyővel együtt, anélkül, hogy vízszintes görgetést képezne.

      Nos, ha valamilyen módon módosítani vagy javítani szeretné a menüt mobileszközökön vagy széles képernyőkön, akkor a médialekérdezések segítenek! Sok sikert a honlapkészítéshez!

      A sorozatot a legördülő menükről szóló leckével folytatjuk. Következő egy barkácsolj vízszintes legördülő menü css használatával.

      Ha véletlenül került ide, vagy a legördülő menü más megvalósítását kereste, azt tanácsolom, hogy lépjen a szülő rovatba.

      Ez a rész egy vízszintes legördülő menüt ír le CSS-ben és HTML-ben.

      Oldalnavigáció:

      Így, feladatunk:

      vízszintes menü készítése css legördülő listával (ul li listákon) jQuery és Javascript, valamint táblázatok használata nélkül

      a kódban.

      Legördülő vízszintes menü html

      Először is, mielőtt elkezdenénk írni a kódot, el kell készítenünk egy html sablont a menühöz.

      Tekintettel arra, hogy univerzális menüt készítünk, szeretném a lehető leghasonlítani a WordPress menü kimenetéhez. Véleményem szerint ez az egyik legegyszerűbb és legsokoldalúbb HTML menükód. Így néz ki:

      • Otthon
      • Rólunk
      • Szolgáltatásaink
        • Szolgáltatásunk 1. sz
        • Szolgáltatásunk 2. sz
        • Szolgáltatásunk 3. sz
        • Szolgáltatásunk 4. sz
        • Szolgáltatás 5
      • Hír
      • Kapcsolatok

      Ahogy a kódból is látható, legördülő menünk az ul és li listákon lesz megvalósítva. Így néz ki a menü CSS-stílusok nélkül:

      Valljuk be, csúnyán néz ki, mint egy rendes lista. Ezután ezt a menüt kell díszítenünk CSS stílusokkal.

      Vízszintes legördülő menü a CSS-ben

      A CSS-stílusok a legördülő menükhöz és még sok máshoz olyan szükségesek, mint a levegő. Hiszen a legördülő fül a pszeudo-class:hover alapján készült.

      A vízszintes legördülő menühöz a következő stílusokra van szükségünk:

      #menu1( pozíció:relatív; kijelző:blokk; szélesség:100%; magasság:automatikus; z-index:10; ) #menu1 ul(pozíció:relatív; kijelző:blokk; margó:0px; kitöltés:0px; szélesség:100 %; magasság:automatikus; háttér:#F3A601; ul::utána menü1 ul li(pozíció:relatív; kijelző:blokk; lebegés:bal; szélesség:automatikus; magasság:automatikus; ) #menu1 ul li a(megjelenítés:blokk; kitöltés: 9px 25px 0px 25px; betűméret:14px; font- család:Arial, sormagasság:1,3em; font-weight: nagybetűk )

      Ez még nem a vége, csak egy része a vízszintes főmenü CSS-jének. Ezután stílusokat írunk a menü legördülő listába:

      #menu1 ul li ul(pozíció:abszolút; felső:36px; bal:0px; kijelző:nincs; szélesség:200px; háttér:#EBBD5B; ) #menu1 ul li:hover ul(megjelenítés:blokk;)/*ez a sor megvalósítja kiesési mechanizmus*/ #menu1 ul li ul li( float:none; width:100%; ) #menu1 ul li ul li a( display:block; text-transform:none; height:auto; padding:7px 25px; szélesség: 100% box-sizing: border-box: 1px solid #ffffff ) #menu1 ul li ul li:first-child a(border-top:0px;) #menu1 ul li li a:hover; ( háttér:#FDDC96;szín:#6572BC)

      Most ennyi. Maga a lemorzsolódási mechanizmus egy sorban valósul meg.

      Tekintse meg a bőrt ezzel a menüvel:

      Rizs. 2 (vízszintes legördülő menü)

      Az alábbiakban bemutatjuk a legördülő menü működését, valamint egy hivatkozást a források letöltéséhez. (A demó az oldal tetején lévő legördülő menüvel nyílik meg, nem kell a Megnyitás új ablakban kattintásra 🙂 vagy az egér görgőjére)

      Teljes szélességű vízszintes legördülő menü

      A legtöbben szemrehányást tehetnek nekem, mondván, hogy az ilyen menük, mint ahogy fentebb mutattam, a múlt jelei, és részben igazad van, bár láttam a közelmúltban ilyen menüket.

      Remélem letöltötted a fenti példát. A HTML-ünk változatlan marad, de a CSS-t teljesen megváltoztatjuk. Egyszerűen átveszi a CSS-kódot innen, és beillesztheti a letöltött példába, vagy demo módban megnézheti, hogyan működik.

      #container(szélesség:1000px; magasság:automatikus;margó:0px automatikus;padding-top:10px; ) #menu1(pozíció:relatív; kijelző:blokk; szélesség:100%; magasság:automatikus; z-index:10; ) #menu1 ul(pozíció:relatív; kijelző:blokk; margó:0px; kitöltés:0px; szélesség:100%; magasság:automatikus; listastílus:nincs; háttér:#F3A601; ) #menu1 > ul( szöveg igazítása: justify; font-size:1px; :relative display:inline-block szélesség:automatikus magasság:1,3em; font-weight:uppercase :border-box ) #menu1 ul li > a:hover, #menu1 ul li:hover > a( background:#EBBD5B; color:#2B45E0; ) #menu1 ul li; ul(pozíció:abszolút; felső:36px; balra:0px;

      display:none;

      szélesség:auto;

      háttér:#EBBD5B;

      white-space:nowrap;

      ) #menu1 ul li:last-child ul(/*az utolsó elem a jobb szélhez lesz csatolva*/ left:auto; right:0px; ) #menu1 ul li:hover ul(display:block;)/*this sor megvalósítja a mechanizmus dropoutokat*/ #menu1 ul li ul li( display:block; width:auto; ) #menu1 ul li ul li a( display:block; text-transform:none; height:auto; padding:7px 35px; szélesség: 100% ; box-sizing: border-box: 1px solid #ffffff ) #menu1 ul li ul li:first-child a(border-top:0px;) #menu1 ul li li a:hover; ( háttér: #FDDC96;szín:#6572BC;

      Több tucat lehetőség van a menüelemek közé csík (elválasztó) hozzáadására tiszta CSS használatával. Nem fogom megismételni azokat az opciókat, amelyek a::before vagy::after , vagy sokkal egyszerűbb border-left, border-right opciókat használják.

      Vannak helyzetek, amikor az elrendezés olyan csodálatosan épül fel, hogy nem nélkülözheti a jquery-t.

      A HTML kódunk változatlan marad, csak a jQuery könyvtárat és az azt használó fájlt tartalmazzuk a legelején:

      Közvetlenül utána.

      Mint érti, létre kell hoznia egy fájlt script-menu-3.jsés add hozzá ezt a kis kódot:

      $(dokumentum).ready(function())( $("#menu1 > ul > li:not(:last-child)").after(" "; ));

      Egy ilyen menü CSS-stílusait meg kell hagyni úgy, ahogy vannak, + a végére add hozzá ezt a részt:

      #menu1 ul li.razd( magasság: 28 képpont; szélesség: 1 képpont; háttér: #ffffff; margó felső: 4 képpont; )

      A vízszintes legördülő menü elválasztójelekkel a jQueryben így fog kinézni:

      Megtekintheti demó módban, vagy letöltheti az alábbi vízszintes menüsablont:

      Ennek a megoldásnak az előnyei a következők:

      • a menü dinamikusan rajzolódik ki;
      • az elválasztótól a bekezdésig tartó behúzások mindenhol azonosak;
      • szebb és rugalmasabb design.
      Vízszintes többszintű legördülő menü CSS+HTML

      Mivel többszintű legördülő menükről beszélünk, érdemes ezeket alcsoportokra osztani:

    • oldalra mutatáskor vip paddal
    • a harmadik szint felugró legördülő menüjével
    • Példáimban egy többszintű, 3 szintű CSS menüt mutatok be, akkor szerintem nem lesz nehéz kitalálni, hogy mit kell tenni.

      Többszintű legördülő menü egy oldalsávval

      Először is kissé javítanunk kell a HTML-kódunkat. A 3. szinthez hozzáadunk néhány sort:

      • Otthon
      • Rólunk
      • Szolgáltatásaink
        • Szolgáltatásunk 1. sz
          • Kiegészítés a szolgáltatáshoz 1
          • Kiegészítés a szolgáltatáshoz 2
        • Szolgáltatásunk 2. sz
          • Kiegészítés a szolgáltatáshoz 3
          • Kiegészítés a szolgáltatáshoz 4
        • Szolgáltatásunk 3. sz
        • Szolgáltatásunk 4. sz
        • Szolgáltatás 5
      • Hír
      • Kapcsolatok
        • Útvonalterv térkép
          • Térkép-kiegészítő
          • Kiegészítés a 2. térképhez
        • Visszajelzési űrlap

      #container(szélesség:1000px; magasság:automatikus;margó:0px automatikus;padding-top:10px; ) #menu1(pozíció:relatív; kijelző:blokk; szélesség:100%; magasság:automatikus; z-index:10; ) #menu1 ul(pozíció:relatív; kijelző:blokk; margó:0px; kitöltés:0px; szélesség:100%; magasság:automatikus; listastílus:nincs; háttér:#F3A601; ) #menu1 > ul( szöveg igazítása: justify; font-size:1px; :relative:inline-block; text-align:left:4px; -family:Arial, sans-serif: 1,3 em text-transform:border-box; ( háttér:#EBBD5B;

      szín:#2B45E0;

      ) #menu1 ul li ul(pozíció:abszolút; felső:36px; bal:0px; kijelző:nincs; szélesség:automatikus; háttér:#EBBD5B; szóköz:nowrap; ) #menu1 > ul > li:utolsó gyermek > ul(/*az utolsó elem a jobb szélhez lesz csatolva*/ left:auto; right:0px; ) #menu1 ul li:hover > ul(display:block;)/*ez a sor a kiesési mechanizmust valósítja meg* / #menu1 ul li ul li( display:block; width:auto; ) #menu1 ul li ul li a( display:block; text-transform:none; height:auto; padding:7px 45px; szélesség:100%; doboz -sizing:border-box ; border-top:1px solid #ffffff ) #menu1 ul li ul li:first-child > a(border-top:0px;) #menu1 ul li ul li a:hover, #menu1 ul; li ul li:hover > a( background:#FDDC96; color:#6572BC; ) #menu1 ul li ul li ul( top:0px; left:100%; display:none; background:#fddc96; ) #menu1 > ul > li:last-child > ul ul(bal:auto;jobb:100%;) #menu1 ul li ul li ul a(color:#F38A01;)
      A jQuery fájljait úgy másoljuk, mint az előző példában. Úgy döntöttem, hogy elhagyom az elválasztókat, hogy legalább egy kicsit jobban nézzen ki a menü. Természetesen ezek nélkül is meg lehet csinálni.

      Így történt:

      Csináltam 2 skint egyben, hogy megmutassam, hogyan néz ki a csepp jobb oldalon és középen.

      Az alábbiakban megnézhet egy demót, és letölthet egy példát:

      Többszintű legördülő menü, felugró panellel

      Nem fogom megváltoztatni a HTML kódot, az előző példából átvehető. A jQueryben is hagyunk elválasztókat.

      Csak a CSS változik meg teljesen:

      #container(szélesség:1000px; magasság:automatikus;margó:0px automatikus;padding-top:10px; ) #menu1(pozíció:relatív; kijelző:blokk; szélesség:100%; magasság:automatikus; z-index:10; ) #menu1 ul(pozíció:relatív; kijelző:blokk; margó:0px; kitöltés:0px; szélesség:100%; magasság:automatikus; listastílus:nincs; háttér:#F3A601; ) #menu1 > ul( szöveg igazítása: justify; font-size:1px; :relative:inline-block:automatikus -top: 4px; ) #menu1 ul li a( display:block; padding:9px 45px 0px 45px; font-family:Arial, sans-serif; color:#ffffef; text-decoration:none; text-transform: highcase; box-sizing:border-box a:hover, #menu1 ul li:hover > a( background:#EBBD5B;

      szín:#2B45E0;

      ) #menu1 ul li ul(pozíció:abszolút; felső:36px; bal:0px; kijelző:nincs; szélesség:100%; háttér:#EBBD5B; ) #menu1 > ul > li > ul::after( clear:botth; float:none; height:0px; tartalom:" " ) #menu1 ul li:hover > ul(display:block;)/*ez a sor megvalósítja a kiesési mechanizmust*/ #menu1 ul li( display : blokk: szélesség: 30%; lebegés: bal ) mező #6572BC úszó: nincs szélesség: 100%;) #menu1 ul li ul li ul a( color:#F38A01; border-top: 1px solid #ffffff;

      Így fog kinézni a menü: Csak az a lényeg, hogy az oldalon legyen elég hely, mivel a jobb oldali utolsó elemnél nincs hely a legördülő menünek. Ezt a problémát meg lehet oldani a:nth-child-en keresztül, de nem zavartattam.

      Nekem ennyi, remélem legalább egy példám megfelel neked. Köszönöm a figyelmet.

      Nekik is és nekem is jó lesz :)

      Ha elolvasta a teljes bejegyzést, de nem találta meg, hogyan készítsen saját vízszintes legördülő menüt css-ben, tegye fel kérdését a megjegyzésekben, vagy használja a webhelykeresőt.

      Azt is tanácsolom, hogy látogassa meg a szülőoldalt https://site/vypadayushhee-menu/, ahol a legördülő menük összes példája és típusa található.