Kako raztegniti vodoravni meni, da se prilega širini glave. Naredi sam vodoravni spustni meni z uporabo CSS in Html. Vodoravni spustni meni polne širine
Precej pogosta postavitev menija spletnega mesta, ko vsebnik z njim zasede celotno širino, ki je na voljo na strani. V tem primeru prvi element meji na levi rob, zadnji pa na desni, razdalja med vsemi elementi pa je enaka. Danes vam bomo povedali, kako se to naredi.
Ponujamo vam primer izvedbe gumijastega menija, ko CSS pomoč za vaš vir. V tem meniju bodo elementi v eni vrstici. Javascript ne bo uporabljen. Vsebina menija bo priložena navadnemu seznamu. Glavna značilnost takšnega menija je njegova vsestranskost, ki se izraža v dejstvu, da sta tako število kot dolžina elementov lahko poljubna.
Kako to izvesti?Vsak programer lahko ponudi svoj način reševanja danega problema. Vse je odvisno od njegove domišljije, stopnje strokovnosti in sposobnosti. Najpogostejša rešitev te težave je uporaba tabele. Poleg tega bi mnogi predlagali uporabo javascripta. Hitro bom razočaral tiste, ki bi predlagali uporabo lastnosti prikaza s tabelo vrednosti ali celico tabele. Ta metoda ni dovolj združljiva med brskalniki.
Naša rešitevNaša ponudba bo zgrajena na trdnih temeljih znanja HTML5 in CSS3.
Bistvo postopka temelji na lastnosti poravnave besedila z vrednostjo poravnave. Za tiste, ki ste pozabili, vas spomnim: ta lastnost usmerja poravnavo besedila po celotni širini vsebnika.
Pri uporabi naše rešitve je treba upoštevati dve obvezni pravili. Prvi je, da mora biti širina vsebnika elementa menija manjša od besedila. Se pravi ne v eni vrstici. Drugo pomembno pravilo je, da se besede raztezajo enako, ne glede na to, ali pripadajo isti točki ali ne.
Spodaj je koda, ki služi kot primer ustvarjanja gumijastega menija:
HTML
< ul> < li>< a href= "#" >domov< li>< a href= "#" >Blog< li>< a href= "#" >Novice< li>< a href= "#" >Priljubljeno< li>< a href= "#" >Novi predmeti
ul ( text- align: justify; overflow: hidden; /* odpravi stranske učinke metode */ height: 20px; /* odpravi tudi nepotrebno */ kazalec: privzeto ; /* nastavi začetno obliko kazalca */ rob : 50px 100px 0 100px; ozadje: 5px; barva: #444;) a : hover ( barva: #ff0000; ) ul: after ( /* oblikovanje druge vrstice za obdelavo metode */ content: "1" ; margin- left: 100 %; height: 1px; overflow: skrito; prikaz: inline- block;
Če želite delati v dobrem starem Internet Explorerju, morate v CSS dodatno dodati naslednjo kodo
ul ( z- indeks: izraz(runtimeStyle. zIndex = 1, insertAdjacentHTML("beforeEnd&apos, "< li class = "last" >")); ) ul .last ( margin-left: 100 %; ) * html ul ( /* potrebujem samo ie6 */ višina: 30px; )
Ko določimo potrebne vrednosti lastnosti in kodo, dobimo ta gumijasti meni:
6.0+ | 6.0+ | 10.5+ | 5.0+ | 3.6+ | - | - |
Dober večer
Pogosto je treba narediti horizontalni meni, ki se razteza čez celotno širino nadrejenega bloka, ne glede na to, koliko elementov vsebuje.
Danes bi vam rad pokazal, kako sestaviti prav takšen jedilnik.
Naš jedilnik bo torej sledeč:
Raztegnjen je po vsej širini in izstopa, ko lebdimo nad njim. Jedilnik je ob straneh zaobljen.
HTML MARKUP
|
|
...
|
Da bi bil meni polne širine, sem uporabil tabele s 100% širino. Vsaka tabela ima vsebnik div elementa menija. Glede na to, ali je prvi, zadnji ali vmesni menijski element div, je dodeljen ustrezen razred.
Vsak vsebnik div ima 2 stranski obrobi z absolutnim položajem, ki sta potrebni za pravilen prikaz. Če uporabljate standardne obrobe, potem ko preklopite elemente menija, bo besedilo skočilo za 1-2 slikovnih pik, kar je dobro.
Aktivni razred je odgovoren za izbran menijski element in ga osvetli.
V vsakem artiklu imamo sliko in besedilo. Da bi zagotovili, da je vse to poravnano strogo na sredini navpično, uporabljamo tabelo. Zahvaljujoč lastnosti navpične poravnave bodo naši elementi menija vedno prikazani gladko in se ne bodo premaknili.
PRAVILA CSS
Najprej nastavimo sloge za splošni prikaz menija:
Menu_container (padding-top: 40px; width: 100%; height: 47px; border-spacing: 0px; ) .menu_container td (vertical-align: middle; /* navpična poravnava */) .last_point_menu, .first_point_menu, .middle_point_menu ( širina: 100 %; obroba: 1 piksl; polna obroba: nič; navpična poravnava: nobena; poravnava besedila: levo: 150px; padding-left: 4px; ) .td.inner_table_title (padding-top: 4px; font-weight: bold; ) .td.inner_table_img ( width: 40px!important; ) .inner_table_menu (height: 100%; padding: 0px ; vertical-align: none; text-align: left; .inner_table_title (padding-left: 10px; text-transform: uppercase; .inner_table_menu td.inner_table_img (širina: 30 slikovnih pik!pomembno; višina: 30 slikovnih pik!pomembno; oblazinjenje-levo: 15 slikovnih pik; )
Za lepoto zaokrožimo vogale ob straneh menija:
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-top-left-radius: 5px; border-bottom-right: 1px solid .last_point_menu ( -webkit-border-top-right-radius: 5px; -webkit-border - bottom-right-radius: 5px; -moz-border-radius-topright: 5px ;
Sedaj ima naš jedilnik še lepšo podobo:
Zaenkrat prva točka nima leve meje. Bomo popravili malo kasneje.
Zdaj pa dodamo učinke lebdenja za meni.
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 ( barva ozadja: #CAE285; slika ozadja: -moz-linear- gradient(vrh, #CAE285, #9FCB56); -webkit-gradient(linearno, 0 0, 0 100%, od(#CAE285), do(#9FCB56)); -gradient(vrh, #CAE285, #9FCB56); slika ozadja (zgoraj, #CAE285, #9FCB56); slika ozadja (na dno, #CAE285, #9FCB56); obroba: 1px -color: #aec671 #9fbb62 #87ac4a; z-indeks: 5000; .first_point_menu.active (border: 1px solid #9FCB56; border-color: #aec671 #9fbb62 #87ac4a; ) .last_point_menu (borba: 1px polna #dadbda; border-left: none; ) .last_point_menu:hover ( border: 1px solid #9FCB56; border-left: none; barva obrobe: #aec671 #9fbb62 #87ac4a; ) .last_point_menu.active ( border-left: none; )
Zdaj je naš meni videti veliko lepši, vendar za zdaj nimamo obrob za označene elemente menija. Popravimo to!
/* slogi za stranske obrobe */ .borderLeftSecond, .borderRightSecond ( display: none; position: absolute; width: 1px; height: 47px; background-color: #9fbb62; top: 0px; z-index: 1000; ) /* absolutni odmiki za obrobe */ .borderLeftSecond (levo: 0px;). , .middle_point_menu:hover > .borderRightSecond, .last_point_menu:hover > .borderLeftSecond .first_point_menu:hover > .borderRightSecond ( display: block; ) /* obravnava primere prvi in zadnji element */ .first_point_menu.active .borderLeftSecond ( display: none; ) .last_point_menu.active .borderRightSecond ( display: none; ) .last_point_menu:hover .borderLeftSecond ( display: block; )
To je vse!
Dobili smo odličen meni, raztegnjen po celotni širini nadrejenega bloka! Elementi se med seboj ne prekrivajo, ko premaknete miško, in postavitev ne skače.
Zdravo. Že dolgo nisem pisal prispevkov na temo dela html/css. Pred kratkim sem ravno začel sestavljati novo postavitev in med tem sem naletel na zanimiv trik, ki vam omogoča, da naredite meni prilagodljiv (lahko mu dodate nove elemente in velikost se ne bo povečala, ampak bo vedno 100-odstotna nadrejeni blok). Torej, danes bomo implementirali gumijasti meni s pomočjo CSS.
Če ste preleni, da bi prebrali članek, si lahko ogledate ta video. Avtor vse skupaj tudi zelo dobro razloži:
Prvi korak je vedno oznaka html, kje bi bili brez nje? Toda v našem primeru bo vse preprosto:
Vse je jasno, tukaj je moja označevalna koda:
Vse izgleda standardno, takole:
Zdaj bomo vse vključili pravi tip, se CSS loti dela.
2. korak - osnovni slogiNato bom bloku ovoja dodal sloge. Namreč, največjo širino bom nastavil na 600 pikslov (samo za lažji posnetek zaslona, da bo meni ustrezal), blok pa bom tudi centriral.
Zaviti (
ozadje: #fff;
največja širina: 600 slikovnih pik;
rob: 0 samodejno;
}
Zdaj pa se lotimo samega menija. Z njega bom odstranil oznake (oznaka ul), naredil linearni gradient ozadja in, kar je najpomembneje, uporabil lastnost display: table-row, da se bo vsebnik za meni obnašal kot vrstica tabele. To je pomembno storiti za nadaljnje manipulacije.
R-meni (
ozadje: linearni gradient (desno, #b0d4e3 0%,#88bacf 100%);
prikaz: tabela-vrstica;
slog seznama: brez;
}
Kot lahko vidite, je zgornja koda pravkar rešila vse, o čemer sem pisal. Mimogrede, priročno je ustvarjati prelive z orodjem Ultimate CSS Gradient Generator. O njem bom še kdaj pisal.
R-meni (
navpična poravnava: spodaj;
prikaz: tabela-celica;
širina: avto;
poravnava besedila: sredina;
višina: 50px;
meja-desno: 1px polna #222;
}
- vertical-align: bottom - ta lastnost je potrebna, da če besedilo v menijskem elementu zavzame 2 vrstici, bo prikazano enakomerno. Ko naredimo meni, lahko to lastnost odstranite, povečate, tako da so elementi stisnjeni in se besedilo premakne v dve vrstici in videli boste težavo s prikazom. Vrnite nepremičnino in vse bo v redu.
- prikaz: tabela-celica - ker smo sam prikaz menija nastavili kot vrstico tabele, bi bilo logično, da bi njegove elemente nastavili tako, da so prikazani kot celice v tabeli. To je potrebno.
- širina: samodejno — širina se samodejno izračuna glede na dolžino besedila v odstavku
- text-align: center - to je samo za centriranje besedila znotraj
- višina: 50 slikovnih pik — nastavite višino na 50 slikovnih pik
- no, border-desno je samo obroba na desni, ločilo za elemente
Zaenkrat meni izgleda grdo, a nič hudega, čas je, da se ga spomnimo.
Zadnja stvar, ki jo morate narediti, je oblikovanje povezav znotraj elementov. Tukaj imam to kodo:
R-meni li a(
tekst-dekoracija: brez;
širina: 1000 slikovnih pik;
višina: 50px;
navpična poravnava: sredina;
prikaz: tabela-celica;
barva: #fff;
pisava: navadna 14px Verdana;
}
In tako izgleda meni zdaj:
Še enkrat, naj pojasnim nekaj vrstic:
- lastnost text-decoration preglasi privzeto podčrtanje za povezave
- width: 1000px je morda najpomembnejša vrstica. Povezave morate nastaviti na približno to širino, morda manjšo, vsekakor pa večjo od najširše možne menijske postavke. Povezave ne bodo široke 1000 slikovnih pik, saj bo širina omejena z postavko menija li, katere širina je nastavljena na samodejno, vendar bo to omogočilo zagotoviti, da bo za poljubno število elementov v meniju vedno 100 odstotkov širine.
- vertical-align: middle in display: table-cell - prvi bo besedilo poravnal navpično na sredino, drugi pa bo prikazal tudi povezave kot celice. Obe lastnosti sta potrebni.
- pisava - no, to je samo niz nastavitev za pisavo. Preberite o lastnosti css za pisave v tem članku.
Na primer, da se barva elementa menija spremeni, ko premaknete miškin kazalec. To je mogoče preprosto implementirati z uporabo psevdorazreda lebdenja:
R-meni li:hover(
barva ozadja: #6bba70;
}
Super, meniji so pripravljeni, nismo pa preverili najpomembnejšega - koliko je gumijast, kot sem vam obljubil. No, v meni bom dodal še 2 elementa:
Meni ostaja širok 600 slikovnih pik. Preostali predmeti so bili preprosto malo skrčeni, da so lahko sprejeli 2 nova.
Dodal bom še eno dolgo točko:
Kot vidite, se je meni še malo skrčil in dolga postavka je prikazana čisto normalno. In če ne bi bilo lastnosti vertical-align: bottom, o kateri sem vam povedal, bi bil meni videti slabše.
Meni bom skrčil na tri postavke.
Elementi so postali veliko bolj svobodni, sam meni pa se v širini ni spremenil. Tako smo naredili 100% gumijasti meni!
Načeloma velja, da če ovojni blok nastavite na največjo širino in ne na fiksno, ga sploh ni treba prilagajati. V mojem primeru imam lastnost največje širine: 600 slikovnih pik in ko širina postane manjša od 600 slikovnih pik, se bo blok preprosto skrčil skupaj z zaslonom, ne da bi oblikoval vodoravni drsnik.
No, če želite nekako spremeniti ali popraviti meni na mobilne naprave ali širokih zaslonih, potem vam bodo medijske poizvedbe pomagale! Vso srečo pri gradnji spletne strani!
Serijo nadaljujemo z lekcijo o spustnih menijih. Naslednji je vodoravni spustni meni naredi sam s pomočjo css.
Če ste sem prišli po naključju ali ste iskali drugo izvedbo spustnega menija, vam svetujem, da obiščete nadrejeni razdelek.
V tem razdelku bo opisan vodoravni spustni meni v CSS in HTML.
Navigacija po strani:
Torej, naša naloga:
naredi vodoravni meni s spustnim seznamom css (na seznamih ul li) brez z uporabo jQuery in Javascript, pa tudi brez uporabe tabel