Menüyü css'nin tam genişliğine kadar uzatın. CSS'de esnek bir duyarlı menü nasıl yapılır? Yatay menüler için HTML işaretlemesi ve temel stiller
Site menüsünün oldukça yaygın bir düzeni, içerdiği kap sayfada mevcut tüm genişliği kapladığında. Bu durumda, ilk öğe sol kenara, sonuncusu sağa bitişiktir ve tüm öğeler arasındaki mesafe eşittir. Bugün size bunun nasıl yapıldığını anlatacağız.
Kaynağınız için CSS kullanarak akıcı bir menünün nasıl uygulanacağına dair bir örnek sunuyoruz. Bu menüde öğeler bir satırda yer alacaktır. Javascript kullanılmayacaktır. Menünün içeriği düzenli bir listeye eklenecektir. Böyle bir menünün ana özelliği, öğelerin hem sayısının hem de uzunluğunun herhangi biri olabileceği gerçeğiyle ifade edilen çok yönlülüğüdür.
Bu nasıl uygulanır?
Her programcı sorunu çözmek için kendi yolunu sunabilir. Her şey onun hayal gücüne, profesyonellik düzeyine ve yeteneklerine bağlıdır. Bu sorunun en yaygın çözümü bir tablo kullanmaktır. Ayrıca, birçoğu javascript kullanmanızı önerir. Değer ile display özelliğini kullanmayı önerenler tablo veya tablo hücresi- Üzülmek için acele ediyorum. Bu yöntem, tarayıcılar arası yeterince uyumlu değildir.
Bizim çözümümüz
Teklifimiz, HTML5 ve CSS3 bilgisinin sağlam bir temeli üzerine inşa edilecektir.
Sürecin özü, bir yaslama değerine sahip metin hizalama özelliğine dayanır. Unutanlar için - Size hatırlatırım: bu özellik, metnin hizalamasını kabın tüm genişliği boyunca yönlendirir.
Çözümümüzü kullanırken uyulması gereken iki temel kural vardır. Birincisi, menü öğesi kapsayıcısının genişliğinin metinden daha küçük olması gerektiğidir. Yani tek satırda değil. İkinci önemli kural, kelimelerin aynı noktaya ait olup olmadığına bakılmaksızın eşit olarak uzatılmasıdır.
Aşağıda bir "kauçuk" menü oluşturmaya örnek teşkil eden kod verilmiştir:
HTML
< ul> < li>< a href= "#" >ev a> li> < li>< a href= "#" >Blog a> li> < li>< a href= "#" >Haberler a> li> < li>< a href= "#" >Popüler a> li> < li>< a href= "#" >Yeni öğeler a> li> ul>
ul (metin hizalama: yasla; taşma: gizli; / * yöntemin yan etkilerini ortadan kaldırır * / yükseklik: 20 piksel; / * gereksizleri de kaldırır * / imleç: varsayılan; / * orijinal imleç şeklini ayarlar * / kenar boşluğu: 50px 100px 0 100px; arka plan: #eee; dolgu: 5 piksel; ) li (ekran: satır içi; / * menü öğelerini metin yapar * /) li a (ekran: satır içi blok; / * menüdeki kelime sonunu düzelt * / renk: # 444; ) a: üzerine gelin (renk: # ff0000;) ul: sonra ( / * yöntemin çalışılması için ikinci satırın oluşturulması * / içerik: "1"; kenar boşluğu- sol: %100; yükseklik: 1 piksel; taşma: gizli; ekran: satır içi blok; )
Eski güzel Internet Explorer'da çalışmak için aşağıdaki kodu CSS'ye eklemeniz gerekir.
ul (z- dizini: ifade (runtimeStyle. zIndex = 1, insertAdjacentHTML ("beforeEnd & apos,"< li class = "last" > li> "));) ul .last (sol kenar boşluğu: %100;) * html ul (/ * yalnızca ie6 gerekir * / yükseklik: 30 piksel;)
Gerekli özellik değerlerini ve kodu kaydettikten sonra aşağıdaki kauçuk menüyü alıyoruz:
Yöntemin dezavantajları
- Toplu kod
- Sınıf seçici aracılığıyla bir öğenin etkin durumunu belirleyememe. Bu, paragraflardaki kelimelerin kırılmasından kaynaklanmaktadır (eğer öyleyse). Bu sorunun çözümü, liste öğelerinin içine başka bir kap eklemektir.
- Açılır menü için, taşmanın olumsuz etkisi nedeniyle kodu özelleştirmeniz gerekir.
Hangi tarayıcılarda çalışır?
6.0+ | 6.0+ | 10.5+ | 5.0+ | 3.6+ | - | - |
yatay menü site bölümlerinin bir listesidir, bu nedenle öğenin içinde işaretlemek daha mantıklıdır
- ve ardından öğelerine CSS stilleri uygulayın. Bu menü düzeni, bir web sayfasında konumlandırılmasının bariz avantajlarından dolayı en yaygın olanıdır.
- Menü seçeneği
- Menü seçeneği
- Menü seçeneği ...
Yatay menü nasıl yapılır: işaretleme ve tasarım örnekleri
Yatay menüler için HTML işaretlemesi ve temel stiller
Varsayılan olarak, tüm liste öğeleri dikey olarak, genişlik olarak konteyner elemanının tüm genişliğini kaplar, bu da konteyner bloğunun tüm genişliğini kaplar.
Yatay gezinme için HTML işaretlemesi
Bir etiketin içindeki yatay bir menü, isteğe bağlı olarak bir öğenin içine yerleştirilebilir. ve / veya
Bunları yerleştirmenin birkaç yolu vardır. yatay olarak... İlk olarak, gezinme öğeleri için varsayılan tarayıcı stillerini sıfırlamanız gerekir:
Ul (list-stili: yok; / * liste işaretçilerini kaldır * / kenar boşluğu: 0; / * 1em'e eşit üst ve alt kenar boşluğunu kaldır * / padding-left: 0; / * 40 piksele eşit sol kenar boşluğunu kaldır * /) a ( text-decoration: none; / * bağlantı metninin alt çizgisini kaldırın * /)
Yöntem 1.li (ekran: satır içi;)
Liste öğelerini küçük harf yaparız. Sonuç olarak, yatay olarak yerleştirilirler, aralarına 0,4em'e eşit bir boşluk eklenir (yazı tipi boyutuna göre hesaplanır). Kaldırmak için, li için negatif bir li sağ kenar boşluğu ekleyin (sağ kenar boşluğu: -4px;). Ardından, bağlantıları istediğimiz gibi şekillendireceğiz.
Yöntem 2.li (kayan: sol;)
Liste öğelerini yüzer. Sonuç olarak, yatay olarak konumlandırılırlar. Konteyner bloğunun yüksekliği ul sıfır olur. Bu sorunu çözmek için, ul'ye (overflow: hidden;) ekleyerek onu genişletir ve böylece yüzen öğeler içermesine izin veririz. Bağlantılar için bir (ekran: blok;) ekleyin ve istediğiniz gibi biçimlendirin.
Yöntem 3.li (ekran: satır içi blok;)
Listenin öğelerini satır içi blok yapıyoruz. Yatay olarak yerleştirilirler, ilk durumda olduğu gibi sağ tarafta bir boşluk oluşur. Bağlantılar için bir (ekran: blok;) ekleyin ve istediğiniz gibi biçimlendirin.
Yöntem 4.ul (ekran: esnek;)
Bir model kullanarak ul'yi esnek bir kap yapmak. Sonuç olarak, listenin öğeleri yatay olarak düzenlenmiştir. Bağlantılar için bir (ekran: blok;) ekleyin ve istediğiniz gibi biçimlendirin.
1. Bir bağlantının üzerine gelindiğinde altı çizili efektli duyarlı menü
@import url ("https://fonts.googleapis.com/css?family=Ubuntu+Condensed"); .menu-main (liste stili: yok; kenar boşluğu: 40px 0 5px; dolgu: 25px 0 5px; metin hizalama: merkez; arka plan: beyaz;) .menu-main li (ekran: satır içi blok;) .menu- ana li: after (içerik: "|"; renk: # 606060; ekran: satır içi blok; dikey hizalama: üst;) .menu-main li: son çocuk: sonra (içerik: yok;) .menu-main a (metin dekorasyonu: yok; yazı tipi ailesi: "Ubuntu Yoğun", sans-serif; harf aralığı: 2 piksel; konum: göreli; alt dolgu: 20 piksel; kenar boşluğu: 0 34 piksel 0 30 piksel; yazı tipi boyutu: 17 piksel; text-transform: büyük harf; görüntü: satır içi blok; geçiş: renkli .2s;) .menu-main a, .menu-main a: ziyaret edildi (renk: # 9d999d;) .menu-main a.current, .menu- ana a: üzerine gelin (renk: # feb386;) .menu-main a: önce, .menu-main a: sonra (içerik: ""; konum: mutlak; yükseklik: 4 piksel; üst: otomatik; sağ: %50; alt : -5px; sol: %50; arka plan: # feb386; geçiş: .8s;) .menu-ana a: vurgulu: önce, .menu-ana .akım: önce (sol: 0;) .menu-ana a: üzerine gelin: sonra, .menu-main .current: sonra (sağ: 0; ) @media (maks-genişlik: 550px) (.menu-main (dolgu-üst: 0;) .menu-main li (ekran: blok;) .menu-main li: after (içerik: yok;) .menu- ana a (dolgu: 25px 0 20px; kenar boşluğu: 0 30 piksel; ))2. Düğün sitesi için duyarlı menü
@import url ("https://fonts.googleapis.com/css?family=PT+Sans"); .top-menü (konum: göreceli; arka plan: #fff; kutu-gölge: iç metin 0 0 10px #ccc;) .top-menü: önce, .top-menü: sonra (içerik: ""; ekran: blok; yükseklik : 1 piksel; kenarlık-üst: 3 piksel katı # 575350; kenarlık-alt: 1 piksel katı # 575350; kenar boşluğu: 2 piksel;) .üst-menü: sonra (kenarlık-alt: 3 piksel katı # 575350; kenar-üst: düz 1 piksel # 575350; kutu gölgesi: 0 2px 7px #ccc; kenar boşluğu: 2 piksel;) .menu-ana (liste stili: yok; dolgu: 0 30 piksel; kenar boşluğu: 0; yazı tipi boyutu: 18 piksel; metin hizalama: merkez; konum: göreli;) .menu-ana: önce, .menu-ana: sonra (içerik: "\ 25C8"; satır yüksekliği: 1; konum: mutlak; üst: %50; dönüştürme: çeviriY (-50%) );) .menu-main: önce (sol: 15px;) .menu-main: after (sağ: 15px;) .menu-main li (ekran: satır içi blok; dolgu: 5px 0;) .menu-main a (metin dekorasyonu: yok; görüntü: satır içi blok; kenar boşluğu: 2 piksel 5 piksel; dolgu: 6 piksel 15 piksel; yazı tipi ailesi: "PT Sans", sans-serif; yazı tipi boyutu: 16 piksel; renk: # 777777; kenarlık-alt : 1px katı şeffaf; geçiş n: .3s doğrusal; ) .menu-main .current, .menu-main a: vurgulu (sınır yarıçapı: 3 piksel; arka plan: # f3ece1; renk: # 313131; metin gölgesi: 0 1 piksel 0 #fff; kenarlık rengi: # c6c6c6;) @media (maksimum genişlik: 500 piksel) (.menu-main li (ekran: blok;))3. Deniz taraklı uyarlanabilir menü
@import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .menu-main (liste stili: yok; dolgu: 0 30 piksel; kenar boşluğu: 0; yazı tipi boyutu: 18 piksel; metin hizalama: merkez; konum: göreceli; arka plan: beyaz;) .menu-ana: sonra (içerik: ""; konum: mutlak; genişlik: %100; yükseklik: 20 piksel; sol: 0; alt: -20 piksel; arka plan: radyal-gradyan (beyaz %0, beyaz %70, rgba (255,255,255,0) %70, rgba ( 255,255,255,0) %100) 0 -10px; arka plan boyutu: 20px 20px; arka plan-tekrar: tekrar-x;) .menu-main li (ekran: satır içi blok;) .menu-main a (metin-dekorasyon: yok; görüntüleme: satır içi blok; kenar boşluğu: 0 15 piksel; dolgu: 10 piksel 30 piksel; yazı tipi ailesi: "PT Sans Caption", sans-serif; renk: # 777777; geçiş: .3s doğrusal; konum: göreli;) .menu -main a: önce, .menu-main a: after (içerik: ""; konum: mutlak; üst: hesap (%50 - 3 piksel); genişlik: 6 piksel; yükseklik: 6 piksel; kenarlık yarıçapı: %50; arka plan: # F58262; opaklık: 0; geçiş: .5s kolay giriş-çıkış;) .menu-main a: önce (sol: 5 piksel;) .menu-ana a: sonra (sağ: 5 piksel;) .menu-ana a. akım: önce, .menu-main a.cur kira: after, .menu-main a: vurgulu: önce, .menu-ana a: vurgulu: sonra (opaklık: 1;) .menu-ana a.akım, .menu-ana a: vurgulu (renk: # F58262; ) @media (maksimum genişlik: 680 piksel) (.menu-main li (ekran: blok;))4. Şeritte duyarlı menü
@import url ("https://fonts.googleapis.com/css?family=PT+Sans+Caption"); .top-menü (kenar boşluğu: 0 60px; konum: göreli; arka plan: # 5A394E; kutu gölgesi: iç metin 1px 0 0 rgba (255.255.255, .1), iç metin -1px 0 0 rgba (255.255.255, .1), iç metin 150px 0 150px -150px rgba (255.255.255, .12), iç metin -150px 0 150px -150px rgba (255.255.255, .12);) .top-menü: önce, .top-menü: sonra (içerik: ""; konum: mutlak ; z-endeksi: 2; sol: 0; genişlik: %100; yükseklik: 3 piksel;) .üst menü: önce (üst: 0; kenarlık-alt: 1 piksel kesikli rgba (255,255,255, .2);) .top- menu: after (alt: 0; kenar-üst: 1px kesikli rgba (255,255,255, .2);) .menu-main (liste stili: yok; dolgu: 0; kenar boşluğu: 0; metin hizalama: merkez;). menü-ana: önce, .menu-ana: sonra (içerik: ""; konum: mutlak; genişlik: 50 piksel; yükseklik: 0; üst: 8 piksel; kenarlık-üst: 18 piksel katı # 5A394E; kenarlık-alt: 18 piksel katı # 5A394E; dönüştürme: döndürme (360deg); z-endeksi: -1;) .menu-ana: önce (sol: -30 piksel; kenar-sol: 12 piksel katı rgba (255, 255, 255, 0);) .menu- ana: sonra (sağ: -30 piksel; kenar-sağ: 12 piksel katı rgba (2 55, 255, 255, 0); ) .menu-main li (görüntüleme: satır içi blok; kenar boşluğu: -4 piksel;) .menu-main a (metin süslemesi: yok; görüntü: satır içi blok; dolgu: 15 piksel 30 piksel; yazı tipi ailesi: "PT Sans Caption ", sans-serif; renk: beyaz; geçiş: .3s doğrusal;) .menu-main a.akım, .menu-ana a: vurgulu (arka plan: rgba (0,0,0, .2);) @media (maks-genişlik: 680px) (.top-menu (kenar boşluğu: 0;) .menu-main li (ekran: blok; kenar boşluğu: 0;) .menu-ana: önce, .menu-ana: sonra (içerik: yok;) .menu-main a (ekran: blok;))5. Ortasında bir logo bulunan duyarlı menü
@import url ("https://fonts.googleapis.com/css?family=Arimo"); .top-menu (konum: göreceli; arka plan: rgba (34,34,34, .2);) .menu-main (liste stili: yok; kenar boşluğu: 0; dolgu: 0;) .menu-main: sonra (içerik: ""; görüntü: tablo; temizle: her ikisi;) .left-item (kayan: sol;) .right-item (kayan: sağ;) .navbar-logo (konum: mutlak; sol: %50; üst : %50; dönüştürme: çevir (-50%, - %50);) .menu-main a (metin-dekorasyon: yok; görüntü: blok; satır yüksekliği: 80 piksel; dolgu: 0 20 piksel; yazı tipi boyutu: 18 piksel ; harf aralığı: 2 piksel; yazı tipi ailesi: "Arimo", sans-serif; yazı tipi ağırlığı: kalın; renk: beyaz; geçiş: .3s doğrusal;) .menu-main a: vurgulu (arka plan: rgba (0, 0,0, .3);) @media (maksimum genişlik: 830 piksel) (.menu-ana (üst dolgu: 90 piksel; metin hizalama: merkez;) .navbar-logo (konum: mutlak; sol: %50 ; üst: 10px; transform: translateX (-50%);) .menu-main li (kayan nokta: yok; görüntü: satır içi blok;) .menu-main a (satır yüksekliği: normal; dolgu: 20 piksel 15 piksel; yazı tipi -size: 16px;)) @media (maksimum genişlik: 630px) (.menu-main li (ekran: blok;))6. Solda logolu duyarlı menü
@import url ("https://fonts.googleapis.com/css?family=Arimo"); .top-menü (arka plan: rgba (255,255,255, .5); kutu gölgesi: 3px 0 7px rgba (0,0,0, .3); dolgu: 20px;) .top-menu: after (içerik: "" ; görüntüleme: tablo; temizle: her ikisi;) .navbar-logo (görüntüleme: satır içi blok;) .menu-main (liste stili: yok; kenar boşluğu: 0; dolgu: 0; kayan nokta: sağ;) .menu-main li (görüntüleme: satır içi blok;) .menu-main a (metin süslemesi: yok; görüntü: blok; konum: göreli; satır yüksekliği: 61 piksel; sol doldurma: 20 piksel; yazı tipi boyutu: 18 piksel; harf aralığı : 2 piksel; yazı tipi ailesi: "Arimo", sans-serif; yazı tipi ağırlığı: kalın; renk: # F73E24; geçiş: .3s doğrusal;) .menu-main a: önce (içerik: ""; genişlik: 9 piksel; yükseklik: 9 piksel; arka plan: # F73E24; konum: mutlak; sol: %50; dönüştürme: döndürme (45 derece) translateX (6.5 piksel); opaklık: 0; geçiş: .3s doğrusal;) .menu-ana a: vurgulu: önce (opaklık: 1;) @media (maks-genişlik: 660px) (.menu-main (kayan: yok; dolgu-üst: 20px;) .top-menu (metin hizalama: merkez; dolgu: 20px 0 0 0; ) .menu-main a (dolgu: 0 10px;) .menu-main a: be fore (dönüştürme: döndürme (45deg) translateX (-6px);)) @media (max-width: 600px) (.menu-main li (ekran: blok;))Açılır menüler hakkında bir eğitimle seriye devam ediyoruz. Bir sonraki adım, kendi ellerinizle css'de yatay bir açılır menüdür.
Buraya tesadüfen geldiyseniz veya açılır menünün başka bir uygulamasını arıyorsanız, ana bölüme gitmenizi tavsiye ederim.
Bu bölüm, CSS ve HTML'deki yatay açılır menüyü açıklayacaktır.
Sayfa gezintisi:
Yani, görevimiz:
jQuery ve Javascript kullanmadan ve ayrıca tablo kullanmadan css açılır menüsüyle (ul li listelerinde) yatay bir menü yapın