Si të krijoni një menu të përgjegjshme gome duke përdorur CSS? Bëje vetë menunë horizontale rënëse duke përdorur CSS dhe Html. Zgjero menunë në gjerësinë e plotë.
Mirembrema
Shpesh është e nevojshme të krijoni një meny horizontale që do të shtrihet në të gjithë gjerësinë e bllokut prind, pavarësisht se sa artikuj përmban.
Sot do të doja t'ju tregoja se si të krijoni një menu të tillë.
Pra, menuja jonë do të jetë si më poshtë:
Shtrihet në të gjithë gjerësinë dhe bie në sy kur rri pezull. Menuja është e rrumbullakosur në anët.
HTML MARKUP
|
|
...
|
Për ta bërë menunë me gjerësi të plotë, përdora tabela me gjerësi 100%. Çdo tabelë ka një kontejner div të artikullit të menusë. Në varësi të faktit nëse artikulli i parë, i fundit ose i ndërmjetëm i menysë është një div, caktohet klasa përkatëse.
Çdo kontejner div ka 2 kufij anësor me pozicionim absolut, të cilat janë të nevojshme për shfaqjen e saktë. Nëse përdorni kufij standardë, atëherë kur ndërroni artikujt e menysë, teksti do të kërcejë me 1-2 piksel, gjë që është mirë.
Klasa aktive është përgjegjëse për artikullin e zgjedhur të menusë dhe e thekson atë.
Në çdo artikull kemi një foto dhe tekst. Për të siguruar që e gjithë kjo të jetë e lidhur rreptësisht në mes vertikalisht, ne përdorim një tabelë. Falë veçorisë së shtrirjes vertikale, artikujt tanë të menysë do të shfaqen gjithmonë pa probleme dhe nuk do të largohen.
RREGULLAT CSS
Së pari, le të vendosim stilet për shfaqjen e përgjithshme të menusë:
Menu_container ( mbushje-lart: 40px; gjerësi: 100%; lartësi: 47px; hapësira kufitare: 0px; ) .menu_container td (vertikal-linjë: mes; /* shtrirje vertikale */ ) .last_point_menu, .first_point. gjerësia: 100%; lartësia: 47 px; kufiri: 1 px solid #dadbda; z-indeksi: 1000; pozicioni: relative; kufiri-majtas: asnjë; ) .tabela e brendshme ( gjerësia: 100%; lartësia: 100%; ) .tabela e brendshme td ( mbushje: 0 px; rreshtimi vertikal: mes; kufiri: asnjë; rreshtimi i tekstit: majtas; gjerësia: 150 px; mbushja-majtas: 4 px; ) .td.inner_table_img ( gjerësia: 40px!i rëndësishëm; ) .inner_table_menu (lartësia: 100%; mbushje: 0px; rreshtim vertikal: mes; kufi: asnjë; rreshtim teksti: majtas; ) .titulli_tabela e brendshme (mbushje-majtas;1 mbushje-djathtas: 10 px; transformimi i tekstit: shkronja të mëdha; lartësia e rreshtit: 13 px; ) .inner_table_menu td.inner_table_img ( gjerësia: 30 px! e rëndësishme; lartësia: 30 px! e rëndësishme; mbushja-majtas: 15 px; )
Për bukurinë, le të rrumbullakojmë qoshet në anët e menusë:
First_point_menu ( -webkit-border-top-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; -moz-border-radius-lart: 5px; -moz-border-radius-bottomleft: 5px; rrezja kufi-lartë-majtas: 5 px; rrezja kufi-poshtë-majtas: 5 px; kufiri-djathtas: 1px solid #dadbda; ) .menuja_last_point ( -webkit-border-lart-right-radius: 5px; -webkit-border rrezja e poshtme djathtas: 5 px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; kufiri-lart-djathtas-radius: 5px; kufiri-poshtë-djathtas-radius: 5px ;)
Tani menuja jonë ka një pamje më të bukur:
Deri më tani, pika e parë nuk ka një kufi të majtë. Do ta rregullojmë pak më vonë.
Tani le të shtojmë efektet hover për menunë.
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 (background-color: #CA-5mo-E2 gradient (lart, #CAE285, #9FCB56); imazhi i sfondit: -kit ueb-gradient (linear, 0 0, 0 100%, nga (#CAE285), në (#9FCB56)); imazhi i sfondit: -koti i uebit-linear -gradient(lart, #CAE285, #9FCB56);-imazhi i sfondit: -o-linear-gradient(lart, #CAE285, #9FCB56); imazhi i sfondit: gradient linear (në fund, #CAE285, #9FCB56); kufiri: 1px solid #9FCB56; kufiri-color: #aec671 #9fbb62 #87ac4a; kufiri-majtas: asnjë; z-index: 5000; ) /* do të përpunojë kufijtë në hover */ .first_point_menu ( kufiri: 1px solid #dadbda ; ) .menuja e pikës së parë:hover, .first_point_menu.active (kufi: 1px solid #9FCB56; ngjyra e kufirit: #aec671 #9fbb62 #87ac4a; ) .menuja e pikës së fundit (kufiri: 1px solid #dadbda; nonelast;_left; :hover (kufiri: 1px solid #9FCB56; kufiri majtas: asnjë; kufiri-ngjyra: #aec671 #9fbb62 #87ac4a; ) .last_point_menu.active (kufi në të majtë: asnjë;)
Tani menyja jonë duket shumë më e bukur, por tani për tani nuk kemi kufij për artikujt e theksuar të menusë. Le ta rregullojmë këtë!
/* stilet për kufijtë anësor */ .borderLeftSecond, .borderRightSecond ( shfaqja: asnjë; pozicioni: absolute; gjerësia: 1px; lartësia: 47px; ngjyra e sfondit: #9fbb62; sipër: 0px; z-indeksi: 1000; ) /* zhvendosje absolute për kufijtë */ .borderLeftSecond ( majtas: 0px; ). , .middle_point_menu:hover > .borderRightSecond, .last_point_menu:hover > .borderLeftSecond .first_point_menu:hover > .conborder artikulli i parë dhe i fundit */ .first_point_menu.active .borderLeftSecond (ekrani: asnjë; ) .last_point_menu.active .borderRightSecond (ekrani: asnjë;) .last_point_menu:hover .borderLeftSecond (shfaq: bllok;)
Kjo eshte e gjitha!
Ne ia dolëm menu e madhe shtrirë në të gjithë gjerësinë e bllokut prind! Artikujt nuk mbivendosen me njëri-tjetrin kur rri pezull miun dhe faqosja nuk kërcen.
Një menu horizontale është një listë e seksioneve të faqes në internet, kështu që është më logjike ta vendosni atë brenda elementit
- , dhe më pas aplikoni stilet CSS në elementët e tij. Kjo paraqitje e menysë është më e zakonshme për shkak të avantazheve të dukshme në pozicionimin e saj në një faqe interneti. Si të bëni një menu horizontale: shembuj të paraqitjes dhe dizajnit
Shënimi HTML dhe stilet bazë për një menu horizontale
- Artikulli i menysë
- Artikulli i menysë
- Artikulli i menysë ...
- Kodi i volumit
- Pamundësia për të përcaktuar gjendjen aktive të një elementi përmes një përzgjedhësi të klasës. Kjo ndodh për shkak të thyerjes së fjalëve në paragrafë (nëse ka një të tillë). Zgjidhja e këtij problemi është të shtoni një enë tjetër brenda elementeve të listës.
- Për menynë rënëse, duhet të personalizoni kodin për shkak të ndikimit negativ të tejmbushjes. Në cilët shfletues funksionon?
- shtëpi
- Rreth Nesh
- Shërbimet tona
- Shërbimi ynë nr. 1
- Shërbimi ynë nr. 2
- Shërbimi ynë nr. 3
- Shërbimi ynë nr. 4
- Shërbimi 5
- Lajme
- Kontaktet
- menyja do të vizatohet në mënyrë dinamike;
- pikat nga ndarësi në paragrafin janë të njëjta kudo;
- dizajn më i bukur dhe fleksibël.
- me një bllok vip kur tregoni anash
- me një drop-up drop-down të nivelit të tretë
- shtëpi
- Rreth Nesh
- Shërbimet tona
- Shërbimi ynë nr. 1
- Shtesë në shërbim 1
- Shtesë në shërbim 2
- Shërbimi ynë nr. 2
- Shtesë në shërbim 3
- Shtesë në shërbim 4
- Shërbimi ynë nr. 3
- Shërbimi ynë nr. 4
- Shërbimi 5
- Shërbimi ynë nr. 1
- Lajme
- Kontaktet
- Harta rrugore
- Shtesa e hartës
- Shtesa për hartën 2
- Formulari i komenteve
- Harta rrugore
Si parazgjedhje, të gjithë elementët e listës janë rregulluar vertikalisht, duke zënë të gjithë gjerësinë e elementit të kontejnerit, i cili nga ana tjetër zë të gjithë gjerësinë e bllokut të tij të kontejnerit.
Shënimi HTML për navigim horizontal
Një meny horizontale e vendosur brenda një etikete mund të vendoset gjithashtu brenda elementit ... dhe/ose .... Falë këtij shënjimi html, jepet kuptimi semantik dhe gjithashtu shfaqet mundësi shtesë për të formatuar bllokun e menysë.
Ka disa mënyra për t'i vendosur ato horizontalisht. Së pari, duhet të rivendosni stilet e paracaktuar të shfletuesit për elementët e navigimit:
Ul (stili i listës: asnjë; /*hiq shënuesit e listës*/ margjina: 0; /*hiq kufirin e sipërm dhe të poshtëm të barabartë me 1em*/ mbushje-majtas: 0; /*hiq mbushjen e majtë të barabartë me 40 px*/ ) a (dekorimi i tekstit: asnjë; /*hiq nënvizimin e tekstit të lidhjes*/)
Metoda 1. li (ekrani: inline;)Bërja e elementeve të listës me shkronja të vogla. Si rezultat, ato vendosen horizontalisht, me një hendek prej 0.4em të shtuar në anën e djathtë ndërmjet tyre (llogaritur në lidhje me madhësinë e shkronjave). Për ta hequr, shtoni një diferencë negative djathtas për li li (margin-djathtas: -4px;) . Më pas, i stilojmë lidhjet sipas dëshirës.
Metoda 2. li (lundrues: majtas;)Bërja e elementeve të listës lundruese. Si rezultat, ato vendosen horizontalisht. Lartësia e bllokut të kontejnerit ul bëhet zero. Për të zgjidhur këtë problem, ne shtojmë (overflow: hidden;) në ul, duke e zgjeruar atë dhe duke lejuar që të përmbajë elementë lundrues. Për lidhjet, shtoni një (shfaq: bllok;) dhe stilojini ato sipas dëshirës.
Metoda 3. li (ekrani: inline-block;)Krijimi i elementeve të listës brenda-bllokut. Ato janë të vendosura horizontalisht, në anën e djathtë formohet një hendek, si në rastin e parë. Për lidhjet, shtoni një (shfaq: bllok;) dhe stilojini ato sipas dëshirës.
Metoda 4. ul (ekrani: flex;)Bërja e listës ul një enë fleksibël duke përdorur . Si rezultat, elementët e listës janë rregulluar horizontalisht. Shtojmë një (ekran: bllok;) për lidhjet dhe i stilojmë sipas dëshirës.
1. Menuja përshtatëse me efekt nënvizues kur rri pezull mbi një lidhje @import url ("https://fonts.googleapis.com/css?family=Ubuntu+Condensed"); .menu-kryesore ( stili i listës: asnjë; diferenca: 40px 0 5px; mbushja: 25px 0 5px; rreshtimi i tekstit: në qendër; sfondi: i bardhë; ) .menu-kryesore li (ekrani: inline-block;).menu- main li:after (përmbajtja: "|"; ngjyra: #606060; ekrani: inline-block; vertikal-align:lart; ) .menu-main li:last-child:after (përmbajtja: asnjë;) .menu-main a ( dekorimi i tekstit: asnjë; font-familja: "Ubuntu Condensed", sans-serif; hapësira e shkronjave: 2 px; pozicioni: relative; mbushja e poshtme: 20 px; margjina: 0 34px 0 30px; madhësia e shkronjave: 17px; teksti-transformimi: shkronja të mëdha; ekrani: blloku i linjës; tranzicioni: ngjyra .2s; ) .menu-kryesore a, .menu-kryesore a: vizituar (ngjyra: #9d999d;) .menu-kryesore a.rrymë, .menu- kryesore a:hover(ngjyra: #feb386;) .menu-kryesore a:para, .menu-kryesore a:after (përmbajtja: ""; pozicioni: absolute; lartësia: 4 px; lart: automatik; djathtas: 50%; poshtë : -5 px; majtas: 50%; sfond: #feb386; tranzicioni: 0,8s; ) .menu-kryesore a:hover:para, .menu-kryesore .aktuale:para (majtas: 0;) .menu-kryesore a: hover:after, .menu-main .current:after (djathtas: 0;) @media (max-width: 550px) ( .menu-main (padding-top: 0;).menu-main li (ekrani: block; ) .menu-kryesore li:pas (përmbajtja: asnjë;) .menu-kryesore a ( mbushje: 25px 0 20px; margjina: 0 30 px; ) ) 2. Menu përshtatëse për një faqe interneti dasmash @import url ("https://fonts.googleapis.com/css?family=PT+Sans"); .top-menu ( pozicioni: relative; sfondi: #fff; kuti-hije: futur 0 0 10px #ccc; ) .top-menu:para, .top-menu:after (përmbajtja: ""; shfaqja: bllok; lartësia : 1px; kufiri-lart: 3px i ngurtë #575350; kufiri-fund: 1px i ngurtë #575350; kufiri-poshtë: 2px; ) .menuja e sipërme:past (kufiri-poshtë: 3px i ngurtë #575350; kufiri-lart: 1px i ngurtë #575350; hije e kutisë: 0 2px 7px #ccc; margjina në krye: 2px; ) .menu-kryesore ( stili i listës: asnjë; mbushja: 0 30 px; diferenca: 0; madhësia e shkronjave: 18 px; rreshtimi i tekstit: qendër; pozicioni: relative; ) .menu-kryesore:përpara, .menu-kryesore:pas (përmbajtja: "\25C8"; lartësia e linjës: 1; pozicioni: absolute; lart: 50%; transformimi: translateY(-50% ); ) .menu-kryesore:para (majtas: 15px;) .menu-kryesore:pas (djathtas: 15px;) .menu-kryesore li (ekrani: blloku inline; mbushja: 5px 0; ) .menu-kryesore a ( dekorimi i tekstit: asnjë; ekrani: blloku i brendshëm; diferenca: 2 px 5 px; mbushja: 6 px 15 px; font-familja: "PT Sans", sans-serif; madhësia e shkronjave: 16 px; ngjyra: #777777; kufiri-fund : 1px transparente e ngurtë, tranzicioni: 0,3s linear; ) .menu-kryesore .aktual, .menu-kryesore a:hover (rreze-kufi: 3px; sfond: #f3ece1; ngjyra: #313131; tekst-hije: 0 1px 0 #fff; ngjyra e kufirit: #c6c6c6; ) @media (gjerësia maksimale: 500 px) ( .menu-kryesore li (ekrani: bllok;) ) 3. Menu e përpunuar e përgjegjshme @import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .menu-kryesore ( stili i listës: asnjë; mbushja: 0 30 px; margjina: 0; madhësia e shkronjave: 18 px; rreshtimi i tekstit: qendër; pozicioni: i afërm; sfondi: i bardhë; ) .menu-kryesore:pas (përmbajtja: ""; pozicioni: absolute; gjerësia: 100%; lartësia: 20 px; majtas: 0; poshtë: -20 px; sfondi: gradient radial (e bardhë 0%, e bardhë 70%, rgba (255,255,255,0) 70%, rgba( 255,255,255,0) 100%) 0 -10 px; madhësia e sfondit: 20 px 20 px; sfondi-përsëritja: përsëritje-x; ) .menu-kryesore li (ekrani: inline-block;) .menu-kryesore a (dekorimi i tekstit: asnjë; ekrani: inline-block; margjina: 0 15px; mbushja: 10px 30px; font-familja: "PT Sans Caption", sans-serif; ngjyra: #777777; tranzicioni: 0,3s linear; pozicioni: relative; ) .menu -main a:fore, .menu-main a:after (përmbajtja: ""; pozicioni: absolut; sipër: llogaritur (50% - 3px); gjerësia: 6px; lartësia: 6px; kufiri-rreze: 50%; sfondi: #F58262; errësirë: 0; tranzicion: 0,5s lehtësi-në-jashtë; ) .menu-kryesore a:para (majtas: 5px;) .menu-kryesore a:pas (djathtas: 5px;) .menu-kryesore a. aktuale:përpara, .menu-kryesore a.rrymë:pas, .menu-kryesore a:hover:para, .menu-kryesore a:hover:after (opacity: 1;) .menu-kryesore a.rrymë, .menu- kryesore a:hover (ngjyra: #F58262;) @media(max-width:680px) ( .menu-main li (ekrani: bllok;) ) 4. Menyja përshtatëse në shirit @import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .top-menu ( margjina: 0 60 px; pozicioni: relative; sfondi: #5A394E; hije e kutisë: futur 1px 0 0 rgba(255,255,255,.1), futje -1 px 0 0 rgba(255,255,255,150 px), inset 0 150px -150px rgba(255255255.12), futur -150px 0 150px -150px rgba(255255255.12); ; z-indeksi: 2; majtas: 0; gjerësia: 100%; lartësia: 3 px; ) .menuja e sipërme: përpara ( lart: 0; kufiri-poshtë: 1 px rgba e ndërprerë (255,255,255,.2); ) .lart- menu:after (poshtë: 0; kufiri-lart: 1px rgba me ndërprerje(255,255,255,.2); ) .menu-main (lista-stili: asnjë; mbushja: 0; margjina: 0; rreshtimi i tekstit: në qendër; ) . menu-main:fore, .menu-main:after (përmbajtja: ""; pozicioni: absolute; gjerësia: 50px; lartësia: 0; sipër: 8px; kufiri-lart: 18px solid #5A394E; kufiri-fund: 18px solid # 5A394E; transformimi: rrotullo(360 gradë); z-indeksi: -1; ) .menu-kryesore: përpara ( majtas: -30 px; kufiri-majtas: 12 px solid rgba(255, 255, 255, 0); ) .menu- main:after ( djathtas: -30px; kufiri-djathtas: 12px solid rgba(255, 255, 255, 0); ) .menu-kryesore li ( shfaqja: inline-block; margin-right: -4px; ) .menu-main a (dekorimi i tekstit: asnjë; shfaqja: inline-block; mbushja: 15px 30px; font-familja: "PT Sans Caption", sans-serif; ngjyra: e bardhë; tranzicioni: .3s linear; ) .menu-kryesore a.rrymë, .menu-main a:hover (sfondi: rgba(0,0,0,.2);) @media (max-width: 680px) (.top-menu (margin: 0;) .menu-main li ( display: block; margin-right: 0; ) .menu-main:fore, .menu-main:after (përmbajtja: asnjë;) .menu-kryesore a (ekran: bllok;) ) 5. Menu reaguese me një logo në mes![](https://i0.wp.com/сайт/wp-content/uploads/2017/04/lily-logo.png)
![](https://i2.wp.com/html5book.ru/wp-content/uploads/2017/04/lily-logo.png)
Një plan urbanistik mjaft i zakonshëm i një menuje faqeje, kur kontejneri me të zë të gjithë gjerësinë e disponueshme në faqe. Në këtë rast, artikulli i parë është ngjitur me skajin e majtë, dhe i fundit është ngjitur në të djathtë, dhe distanca midis të gjithë elementëve është e barabartë. Sot do t'ju tregojmë se si bëhet kjo.
Ne ju ofrojmë një shembull të zbatimit të një menuje gome duke përdorur CSS për burimin tuaj. Në këtë meny, artikujt do të vendosen në një rresht. Javascript nuk do të përdoret. Përmbajtja e menysë do të përfshihet në një listë të rregullt. Karakteristika kryesore e një menuje të tillë është shkathtësia e saj, e cila shprehet në faktin se numri dhe gjatësia e artikujve mund të jenë çdo.
Si të zbatohet kjo?Secili programues mund të ofrojë mënyrën e tij për të zgjidhur një problem të caktuar. E gjitha varet nga imagjinata, niveli i profesionalizmit dhe aftësive të tij. Zgjidhja më e zakonshme për këtë problem është përdorimi i një tabele. Gjithashtu, shumë do të sugjeronin përdorimin e Javascript. Unë nxitoj të zhgënjej ata që do të sugjeronin përdorimin e vetive të shfaqjes me tabelën e vlerave ose qelizën e tabelës. Kjo metodë nuk është mjaftueshëm e përputhshme me ndërshfletuesit.
Zgjidhja jonëOferta jonë do të ndërtohet mbi një bazë solide të njohurive HTML5 dhe CSS3.
Thelbi i procesit bazohet në vetinë text-align me vlerën justify. Për ata që e kanë harruar, ju kujtoj: kjo veti orienton shtrirjen e tekstit në të gjithë gjerësinë e kontejnerit.
Kur përdorni zgjidhjen tonë, duhet të respektohen dy rregulla të detyrueshme. E para është që gjerësia e kontejnerit të artikullit të menusë duhet të jetë më e vogël se teksti. Kjo është, jo në një rresht. Rregulli i dytë i rëndësishëm është që fjalët të shtrihen në mënyrë të barabartë, pavarësisht nëse i përkasin të njëjtës pikë apo jo.
Më poshtë është kodi që shërben si shembull i krijimit të një menuje gome:
HTML
< ul> < li>< a href= "#" >shtëpi< li>< a href= "#" >Blog< li>< a href= "#" >Lajme< li>< a href= "#" >Popullore< li>< a href= "#" >Artikuj të rinj
ul ( text- align: justify; overflow: hidden; /* eliminon efektet anësore të metodës */ lartësia: 20 px; /* eliminon gjithashtu të panevojshmen */ kursorin: default ; /* vendos formën fillestare të kursorit */ margjina : 50px 100px 0 100px; sfond: #eee; mbushje: 5px; ) li ( shfaqja: inline; /* bën tekstin e artikujve të menysë */ ) li a ( shfaqja: inline-blloku; /* eliminon ndërprerjet e fjalëve në meny */ ngjyra: #444; ) a : rri pezull ( ngjyra: #ff0000; ) ul: pas ( /* duke formuar rreshtin e dytë për të përpunuar metodën */ përmbajtja: "1" ; margjina- majtas: 100 %; lartësia: 1 px; tejmbushja: e fshehur; shfaqja: blloku i linjës; )
Për të punuar në Internet Explorer-in e vjetër, duhet të shtoni gjithashtu kodin e mëposhtëm në CSS
ul ( z- indeksi: shprehje(runtimeStyle. zIndex = 1 , insertAdjacentHTML("para Fund&apos, "< li class = "last" >"));) ul .fundit (diferencë-majtas: 100%;) * html ul (/* duhet vetëm ie6 */ lartësia: 30 px;)
Pasi të kemi specifikuar vlerat dhe kodin e nevojshëm të pronës, marrim këtë menu gome:
6.0+ | 6.0+ | 10.5+ | 5.0+ | 3.6+ | - | - |
Ne vazhdojmë serinë me një mësim mbi menutë rënëse. Më tej është një menu me rënie horizontale, bëjeni vetë duke përdorur css.
Nëse keni ardhur këtu rastësisht ose po kërkoni një zbatim tjetër të menysë rënëse, ju këshilloj të shkoni te seksioni prind.
Ky seksion do të përshkruajë një menu horizontale rënëse në CSS dhe HTML.
Navigimi i faqes:
Kështu që, detyra jonë:
bëni një menu horizontale me një listë rënëse css (në listat ul li) pa përdorur jQuery dhe Javascript, dhe gjithashtu pa përdorur tabela