Codepen ile güzel katmanlı menülere harika bir genel bakış. Yalnızca CSS kullanarak yatay olarak ortalanmış menü

Yatay bir menüyü ortalamak, özellikle CSS'ye yeni başlayanlar için zor olabilir. Çözüm bulmak, çoğu CSS'ye, JavaScript hilelerine veya tüm tarayıcılar tarafından desteklenmeyen standart dışı kuralların kullanımına dayanan çok sınırlı bir yöntem listesine yol açar. Bu öğreticide, yalnızca standart CSS kurallarını kullanan ve tüm tarayıcılarda çalışan yatay bir menüyü ortalama yönteminde size yol göstereceğiz.

Bir ortalanmış menü örneği

Aşağıda, ikinci sekmenin etkinleştirildiği bu sütunda ortalanmış yatay bir menü bulunmaktadır. Menünün her zaman ortalanmış ve duyarlı kaldığından emin olmak için tarayıcı penceresini veya sayfasını yeniden boyutlandırmayı deneyebilirsiniz.

Demo sayfasında, yatay olarak ortalanmış bir menü için çeşitli tasarım seçenekleri görebilirsiniz. Bunlardan herhangi biri projelerinizde kullanılabilir.

HTML işaretlemesi

Bu derste gösterilen tüm menüler basit bir yapı kullanır. Bu, bir öğeye yerleştirilmiş sıradan bir sırasız bağlantı listesidir. div.

  • İlk yer imi
  • İkinci yer imi
  • Üçüncü yer imi
  • Dördüncü yer imi

Ortalanmış Menü CSS Kodu

Menüyü ortalayacak CSS'nin tamamı aşağıdadır. Ve çalışma prensibinin açıklamaları dersin ilerleyen kısımlarında verilmektedir.

#centeredmenu (kayan: sol; genişlik: %100; arka plan: #fff; kenarlık-alt: 4 piksel katı # 000; taşma: gizli; konum: göreli;) #centeredmenu ul (temizle: sol; kayan nokta: sol; liste stili : yok; kenar boşluğu: 0; dolgu: 0; konum: göreceli; sol: %50; metin hizalama: merkez;) #centeredmenu ul li (ekran: blok; kayan nokta: sol; liste stili: yok; kenar boşluğu: 0; dolgu: 0; konum: göreceli; sağ: %50;) #centeredmenu ul li a (ekran: blok; kenar boşluğu: 0 0 0 1 piksel; dolgu: 3 piksel 10 piksel; arka plan: #ddd; renk: # 000; metin dekorasyonu: yok; satır yüksekliği: 1.3em;) #centeredmenu ul li a: vurgulu (arka plan: # 369; color: #fff;) #centeredmenu ul li a.active, #centeredmenu ul li a.active: vurgulu (renk: # fff; arka plan: # 000; yazı tipi ağırlığı: kalın;)

Merkezleme yöntemi nasıl çalışır?

Yöntem, kayan blok elemanlarının birbiri içinde göreli olarak konumlandırılmasına dayanmaktadır. İlk olarak, ofset yapıldığında elemanların nasıl yeniden boyutlandırıldığını görelim.

eleman div(blok), ofset olmadan, kendisine sunulan tam genişliğe kadar uzanır.

Ancak div öğesini sola hareket ettirirsek, içeriğine uyacak şekilde otomatik olarak küçülür. Sıkıştırma, uygulamanın anahtarıdır Bu method menünün ortalanması. Menüyü doğru konuma taşımaya yardımcı olur.

Standart sola hizalanmış menü

Standart bir sola hizalanmış menüyü ele alalım ve adım adım yeniden tasarlayalım. Anlaşılır olması için, öğeler farklı renklerde renklendirilir, bu nedenle neyin nereye yatırıldığı hemen anlaşılır.

Aşağıdaki noktalara dikkat edin:

  • eleman ortalanmış menü div(mavi dikdörtgen) sola kaydırılır, ancak %100 geniştir, bu nedenle tüm sayfayı dolduracak şekilde uzatılmış halde kalır.
  • eleman ul(pembe dikdörtgen) öğenin içinde ortalanmış menü div ve sola kayar. Bu, içeriğinin genişliğine, yani tüm yer imlerinin toplam genişliğine küçüleceği anlamına gelir.
  • Tüm li öğeleri (yeşil dikdörtgenler) öğenin içindedir ul ve sola hareket ettirin. Böylece içlerindeki halkaların boyutuna küçülür ve tek bir yatay çizgide sıralanırlar.
  • Her bağlantıda (turuncu dikdörtgenler) yer işaretinin metni görüntülenir: Yer İşareti 1, Yer İşareti 2 vb.

Sırasız listenin konumunu kaydırma


Sonra elemanı dengeleriz ul konumu kullanarak %50 sağa: göreceli özellik; ... Bir öğe bu koşullar altında yüzde olarak kaydırıldığında, içerdiği öğelerin toplam genişliğinin onun genişliği olmadığını hatırlamak önemlidir. Bizim durumumuzda, kaydırma, tarayıcı penceresinin yarısı kadar (veya görüntüleme için kullanılabilir alan) gerçekleşir.Sonuç olarak, menümüz pencerenin ortasından başlar ve kısmen onun ötesine uzanır. Ve bir sonraki adıma geçin.

Tüm menü öğelerinin konumunu değiştirme


Sadece tüm öğeleri taşımak için kalır li%50 kaldı. Bu, ul öğemizin (menüyü içeren kapsayıcı) genişliğinin %50'sidir. Böylece sekmeler tam olarak pencerenin ortasına kaydırılır.

Birkaç önemli not

Bu merkezleme yöntemini kullanırken akılda tutulması gereken birkaç önemli nokta vardır:

  • eleman beri ul kısmen pencerenin dışına uzanır, bu da kaydırma çubuklarının görüntülenmesine neden olur. Bu nedenle, overflow: hidden kuralını kullanmanız gerekir; eleman için ortalanmış menü div... Böylece, elemanın çıkıntılı kısmı div kesilecektir.
  • eleman beri ul yer imlerine hizalı değil, bunun için herhangi bir görsel stil kullanamazsınız. ul öğesini arka plan rengi ve kenarlık olmadan bırakın, böylece tamamen görünmez olur. Ve yer imi stilleri yalnızca öğeler için kullanılmalıdır. li.
  • İlk ve son yer imleri için özel stiller ayarlamanız gerekiyorsa, ilk ve son öğeler için bir sınıf eklemeniz gerekir. li böylece onları ayrı ayrı şekillendirebilirsiniz.

Çözüm

Önerilen çözüm tüm tarayıcılarla uyumludur, JavaScript kullanmaz ve yeniden boyutlandırılabilir metni destekler.

İnternetteki klasik sitelerin çoğu, ana gezinme öğesi olarak yatay bir menü kullanır. Bazen çeşitli ek özellikler içerebilir - çok düzeyli yapılar, alt öğeler için simgeler, bir arama bloğu, karmaşık listeler vb. Son zamanlarda, blog zaten küçük bir koleksiyona sahipti ve bugün CSS + HTML'de açılır menünün nasıl oluşturulacağına dair 4 pratik örneğe bakacağız. Bilgiler, acemi geliştiriciler ve sitelerinde gezinmeyi değiştirmek isteyenler için yararlıdır.

İlk CSS3 Açılır Menü öğreticisi, bu koleksiyondaki en yeni öğreticidir (Nisan 2016 için). Çözümün artıları: Site için bu yatay açılır menü, alt öğelerde simgeler içerir, uygulama ve CSS kodunun kendisinin anlaşılması ve uygulanması oldukça basittir.

1. Adım - HTML işaretlemesi

İlk adım, öğeleri için bağlantı bağlantılarıyla (#) HTML'de sırasız bir liste oluşturmaktır. Orada, öğelerden birine, alt menüden sorumlu olacak başka bir iç içe liste ekleyin.

Adım2 - menüyü göster

Sitenin yatay açılır menü öğeleri için gereksiz CSS dolgusunu kaldırın. Aynı aşamada, menü öğelerinin sabit bir genişlik ve yüksekliğini ayarlayacağız ve ayrıca yuvarlatılmış köşeler ekleyeceğiz.

.menu, .menu ul, .menu li, .menu a (kenar boşluğu: 0; dolgu: 0; kenarlık: yok; anahat: yok;) .menu (yükseklik: 40 piksel; genişlik: 505 piksel; arka plan: # 4c4e5a; arka plan: -webkit-linear-gradient (üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: -moz-linear-gradient (üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: -o-linear-gradient (üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: -ms-doğrusal-gradyan (üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: doğrusal gradyan (üst, # 4c4e5a %0,, # 2c2d33 100%); -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;) .menu li (konum: göreceli; liste stili: yok; kayan nokta: sol; ekran: blok; yükseklik: 40 piksel;)

Menu, .menu ul, .menu li, .menu a (kenar boşluğu: 0; dolgu: 0; kenarlık: yok; anahat: yok;) .menu (yükseklik: 40 piksel; genişlik: 505 piksel; arka plan: # 4c4e5a; arka plan: - webkit-linear-gradient (üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: -moz-linear-gradient (üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: -o-linear-gradyan ( üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: -ms-doğrusal-gradyan (üst, # 4c4e5a %0, # 2c2d33 %100); arka plan: doğrusal gradyan (üst, # 4c4e5a %0,, # 2c2d33 %100); -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;) .menu li (konum: göreceli; liste stili: yok; kayan nokta: sol; ekran: blok ; yükseklik: 40 piksel;)

3. Adım - bağlantı tasarımı

Temel stil özelliklerine (yazı tipi, renk, yükseklik) ek olarak, fareyle üzerine gelindiğinde metin renginin yumuşak bir geçişini kullanır ve oluştururuz. Ayrıca, ilk öğeden sola ve sondan sağa kenarlığı kaldırarak menüye ayırıcılar ekleriz.

.menu li a (ekran: blok; dolgu: 0 14 piksel; kenar boşluğu: 6 piksel 0; satır yüksekliği: 28 piksel; metin dekorasyonu: yok; kenarlık sol: 1 piksel düz # 393942; sağ kenarlık: 1 piksel düz # 4f5058; yazı tipi -aile: Helvetica, Arial, sans-serif; yazı tipi ağırlığı: kalın; yazı tipi boyutu: 13 piksel; renk: # f3f3f3; metin gölgesi: 1 piksel 1 piksel 1 piksel rgba (0, 0, 0, .6); -webkit- geçiş: renkli .2s kolay çıkış; -moz-geçiş: renkli .2s kolay çıkış; -o-geçiş: renkli .2s kolay çıkış; -ms-geçişi: renkli .2s kolay giriş -out; geçiş: renkli .2s kolay giriş;) .menu li: ilk çocuk a (sol kenarlık: yok;) .menu li: son çocuk a (sağ kenarlık: yok;) .menu li : üzerine gelin> a (renk: # 8fde62;)

Menü li a (ekran: blok; dolgu: 0 14 piksel; kenar boşluğu: 6 piksel 0; satır yüksekliği: 28 piksel; metin dekorasyonu: yok; sol kenarlık: 1 piksel düz # 393942; sağ kenarlık: 1 piksel düz # 4f5058; yazı tipi- aile: Helvetica, Arial, sans-serif; yazı tipi ağırlığı: kalın; yazı tipi boyutu: 13 piksel; renk: # f3f3f3; metin gölgesi: 1 piksel 1 piksel 1 piksel rgba (0,0,0, .6); -webkit-geçişi : renkli .2s kolay çıkış; -moz-geçiş: renkli .2s giriş kolaylığı; -o-geçiş: renkli .2s kolay çıkış; -ms-geçişi: renkli .2s kolay giriş- çıkış; geçiş: renkli .2s kolay giriş;) .menu li: ilk çocuk a (sol sınır: yok;) .menu li: son çocuk a (sağ sınır: yok;) .menu li: üzerine gelin> a (renk: # 8fde62;)

Adım4 - alt menü

CSS'de sitenin bir açılır menüsüne sahip olduğumuz için, yuvalanmış listenin tasarımını da ayarlamalıyız. İlk olarak, dolguyu üstten 40 piksele ve sola 0 piksele ayarlayın + yuvarlatılmış köşeler ekleyin. Alt menüyü göstermek / gizlemek için, başlangıçta opaklık özelliğini sıfıra ve üzerine gelindiğinde - bire ayarlayın. Bir alt menünün görünümünün efektini oluşturmak için listenin yüksekliğini sıfıra ve vurgulu = 36 piksele ayarlayın.

.menu ul (konum: mutlak; üst: 40 piksel; sol: 0; opaklık: 0; arka plan: # 1f2024; -webkit-border-radius: 0 0 5px 5px; -moz-border-radius: 0 0 5px 5px; kenarlık -yarıçap: 0 0 5px 5px; -webkit-geçiş: opaklık .25s hareket hızı .1s; -moz-geçiş: opaklık .25s hareket hızı .1s; -o-geçiş: opaklık .25s hareket hızı .1s; -ms-geçişi: opaklık .25s hareket hızı .1s; geçiş: opaklık .25s hareket hızı .1s;) .menu li: hover> ul (opaklık: 1;) .menu ul li (yükseklik: 0; taşma: gizli; dolgu: 0; -webkit-geçiş : yükseklik .25s hareket kolaylığı .1s; -moz-geçiş: yükseklik .25s hareket kolaylığı .1s; -o-geçiş: yükseklik .25s hareket kolaylığı .1s; -ms-geçişi: yükseklik .25s hareket kolaylığı .1s; geçiş: yükseklik .25s hareket kolaylığı .1s;) .menu li: hover> ul li (yükseklik: 36 piksel; taşma: görünür; dolgu: 0;)

Menü ul (konum: mutlak; üst: 40 piksel; sol: 0; opaklık: 0; arka plan: # 1f2024; -webkit-border-yarıçapı: 0 0 5px 5px; -moz-border-radius: 0 0 5px 5px; border- yarıçap: 0 0 5px 5px; -webkit-geçiş: opaklık .25s hareket hızı .1s; -moz-geçiş: opaklık .25s hareket hızı .1s; -o-geçiş: opaklık .25s hareket kolaylığı .1s; -ms-geçişi: opaklık. 25s hareket hızı .1s; geçiş: opaklık .25s hareket hızı .1s;) .menu li: hover> ul (opaklık: 1;) .menu ul li (yükseklik: 0; taşma: gizli; dolgu: 0; -webkit-geçiş: yükseklik .25s hareket kolaylığı .1s; -moz-geçiş: yükseklik .25s hareket kolaylığı .1s; -o-geçiş: yükseklik .25s hareket hızı .1s; -ms-geçiş: yükseklik .25s hareket kolaylığı .1s; geçiş: yükseklik .25s hareket kolaylığı. 1s;) .menu li: hover> ul li (yükseklik: 36 piksel; taşma: görünür; dolgu: 0;)

Bağlantıların genişliğini = 100px olarak ayarlıyoruz, sonuncusu hariç tüm öğelerin altına bir kenarlık-alt kenarlık eklenir. Ayrıca dilerseniz alt menü öğelerine de resim koyabilirsiniz (Dikkat! Koddaki resimlerin yollarını kendi kullandıklarınızla değiştirmeyi unutmayınız).

.menu ul li a (genişlik: 100 piksel; dolgu: 4 piksel 0 4 piksel 40 piksel; kenar boşluğu: 0; kenarlık: yok; kenarlık-alt: 1 piksel katı # 353539;) .menu ul li: son çocuk a (kenarlık: yok;) .menu a.documents (arka plan: url (../img/docs.png) tekrarsız 6 piksel merkez;) .menu a.mesajlar (arka plan: url (../img/bubble.png) tekrarsız 6 piksel merkez ;) .menu a.signout (arka plan: url (../img/arrow.png) tekrarsız 6 piksel merkez;)

Menü ul li a (genişlik: 100 piksel; dolgu: 4 piksel 0 4 piksel 40 piksel; kenar boşluğu: 0; kenarlık: yok; kenarlık-alt: 1 piksel katı # 353539;) .menu ul li: son çocuk a (kenarlık: yok;). menü a.documents (arka plan: url (../ img / docs.png) tekrarsız 6 piksel merkez;) .menu a.mesajlar (arka plan: url (../ img / bubble.png) tekrarsız 6 piksel merkez; ) .menu a.signout (arka plan: url (../ img / arrow.png) tekrarsız 6 piksel merkez;)

Ben şahsen uygulama kolaylığını ve simgelerin kullanımını seviyorum. İşte codepen ile son kod:

Josh Riser'ın sürümü, HTML ve CSS'deki önceki açılır listeye görsel olarak benzer. Kodda ">" alt seçicisi yoktur (çok düzeyli yapılarda kullanışlıdır), ancak yazar daha iyi bir sonuç için CSS3 efektlerinden (geçiş, kutu gölgesi ve metin gölgesi) iyi bir şekilde yararlanır. Kaynaktaki bağlantıya göre, yatay bir açılır menü oluşturma sürecinin açıklaması yok, bu yüzden hemen son kodu vereceğim:

Bu örnekte, CSS'de öğelere ek olarak bir arama bloğunun olacağı bir açılır menünün nasıl oluşturulacağına bakacağız. Benzer bir uygulama genellikle modern olanlarda bulunabilir. Uygulama süresi ve karmaşıklık açısından çözüm, öncekilerden biraz daha karmaşıktır. Mayıs 2013'te yayınlandı, bu nedenle testlerimizde harika çalışmasına rağmen birkaç şeyi düzeltmeniz gerekebilir.

HTML Kodu

Navigasyon için her zaman olduğu gibi sırasız bir liste (nav sınıfı ile) kullanılır. Normal menü öğeleri liste öğeleridir (li) ve herhangi bir sınıf ve kimlik içermeyen bağlantılar (a href) içerir. İstisna, aşağıdaki kimliklere sahip bu yatay açılır menünün 3 özel öğesidir:

  • ayarlar - bağlantı resmi;
  • arama - arama ve ilgili düğme içeren bir blok;
  • seçenekler - bir alt menü içerir (subnav sınıfına sahip bir liste aracılığıyla uygulanır).

Ayrıca kodda, CSS özelliklerini önekler olmadan kullanmak için öneksiz komut dosyasını göreceksiniz. Açılır menünün son HTML'si şöyle görünür:

menü için CSS

1. Temel stiller ve menü öğeleri

İlk olarak, menü öğeleri için Montserrat yazı tipini, koyu gri bir arka planı ve sabit bir yüksekliği belirliyoruz. Tüm öğeler, kayan nokta: sola hizalanır ve göreli olarak konumlandırılır, böylece daha sonra konum: mutlak;

@import url (http: //fonts.googleapis .com / css? family = Montserrat); * (kenar boşluğu: 0; dolgu: 0;) .nav (arka plan: # 232323; yükseklik: 60 piksel; görüntü: satır içi blok;) .nav li (kayan nokta: sol; liste stili türü: yok; konum: göreli; )

@import url'si (http://fonts.googleapis.com/css?family=Montserrat); * (kenar boşluğu: 0; dolgu: 0;) .nav (arka plan: # 232323; yükseklik: 60 piksel; görüntü: satır içi blok;) .nav li (kayan nokta: sol; liste stili türü: yok; konum: göreli; )

2. Bağlantı tasarımı

Temel görünüm + menü öğelerine uygulanır. Yükseklik, nav sınıfındakiyle aynıdır. Menünün başındaki bağlantı görüntüsünün #ayarları için hizalama yapılır.

.nav li a (yazı tipi boyutu: 16px; renk: beyaz; ekran: blok; satır yüksekliği: 60 piksel; dolgu: 0 26 piksel; metin dekorasyonu: yok; kenarlık-sol: 1 piksel katı # 2e2e2e; yazı tipi ailesi: Montserrat , sans-serif; metin-gölge: 0 0 1px rgba (255, 255, 255, 0.5);) .nav li a: vurgulu (arka plan rengi: # 2e2e2e;) #settings a (dolgu: 18 piksel; yükseklik: 24 piksel ; yazı tipi boyutu: 10 piksel; satır yüksekliği: 24 piksel;)

Nav li a (yazı tipi boyutu: 16 piksel; renk: beyaz; ekran: blok; satır yüksekliği: 60 piksel; dolgu: 0 26 piksel; metin dekorasyonu: yok; kenarlık-sol: 1 piksel katı # 2e2e2e; yazı tipi ailesi: Montserrat, sans-serif; metin-gölge: 0 0 1px rgba (255, 255, 255, 0.5);) .nav li a: vurgulu (arka plan rengi: # 2e2e2e;) #settings a (dolgu: 18 piksel; yükseklik: 24 piksel; yazı tipi boyutu: 10 piksel; satır yüksekliği: 24 piksel;)

3. Arama bloğu

Bu öğe sabit bir genişliğe sahiptir ve birkaç bölümden oluşur - yeşil arka plana sahip bir giriş alanı (#search_text) ve bir arama düğmesi (#search_button). Bazı tarayıcılarda arka plan rengi gri olabilir.

#search (genişlik: 357 piksel; kenar boşluğu: 4 piksel;) #search_text (genişlik: 297 piksel; dolgu: 15 piksel 0 15 piksel 20 piksel; yazı tipi boyutu: 16 piksel; yazı tipi ailesi: Montserrat, sans-serif; kenarlık: 0 yok; yükseklik: 52 piksel ; kenar boşluğu: 0; renk: beyaz; anahat: yok; arka plan: # 1f7f5c; kayan nokta: sol; kutu boyutu: kenarlık kutusu; geçiş: tümü 0.15s;) :: -webkit-input-yer tutucu (/ * WebKit tarayıcıları * / renk: beyaz;): -moz-yer tutucu (/ * Mozilla Firefox 4 ila 18 * / renk: beyaz; ) :: -moz-yer tutucu (/ * Mozilla Firefox 19+ * / renk: beyaz;): -ms-input-yer tutucu (/ * Internet Explorer 10+ * / renk: beyaz; ) #search_text: odak (arka plan: rgb (64, 151, 119);) #search_button (kenarlık: 0 yok; arka plan: # 1f7f5c url (search.png) tekrarsız merkez; genişlik: 60 piksel; kayan nokta: sol; dolgu : 0; metin hizalama: merkez; yükseklik: 52 piksel; imleç: işaretçi;)

#search (genişlik: 357 piksel; kenar boşluğu: 4 piksel;) #search_text (genişlik: 297 piksel; dolgu: 15 piksel 0 15 piksel 20 piksel; yazı tipi boyutu: 16 piksel; yazı tipi ailesi: Montserrat, sans-serif; kenarlık: 0 yok; yükseklik: 52 piksel ; kenar boşluğu: 0; renk: beyaz; anahat: yok; arka plan: # 1f7f5c; kayan nokta: sol; kutu boyutu: kenarlık kutusu; geçiş: tümü 0.15s;) :: - webkit-giriş-yer tutucu (/ * WebKit tarayıcıları * / renk: beyaz;): -moz-yer tutucu (/ * Mozilla Firefox 4 - 18 * / renk: beyaz;) :: - moz-yer tutucu (/ * Mozilla Firefox 19+ * / renk: beyaz;): -ms-input-placeholder (/ * Internet Explorer 10+ * / renk: beyaz;) #search_text: odak (arka plan: rgb (64, 151, 119);) #search_button (kenarlık: 0 yok; arka plan: # 1f7f5c url (search.png) tekrarsız merkez; genişlik: 60 piksel; kayan nokta: sol; dolgu: 0; metin hizalama: merkez; yükseklik: 52 piksel; imleç: işaretçi;)

4. Açılır alt menü

Son dokunuş, son #options öğesi için tetiklenen bir CSS açılır menüsü oluşturmamıza izin verecektir.

#options a (sınır-sol: 0 yok;) #options> a (arka plan resmi: url (üçgen.png); arka plan konumu: %85 merkez; arka plan tekrarı: tekrar yok; dolgu sağ: 42 piksel; ) .subnav (görünürlük: gizli; konum: mutlak; üst: %110; sağ: 0; genişlik: 200 piksel; yükseklik: otomatik; opaklık: 0; geçiş: tümü 0,1 sn; arka plan: # 232323;) .subnav li (kayan : yok;) .subnav li a (kenarlık-alt: 1px katı # 2e2e2e;) #options: hover .subnav (görünürlük: görünür; üst: %100; opaklık: 1;)

#options a (border-sol: 0 yok;) #options> a (arka plan resmi: url (triangle.png); arka plan konumu: %85 merkez; arka plan tekrarı: tekrar yok; dolgu sağ: 42 piksel; ) .subnav (görünürlük: gizli; konum: mutlak; üst: %110; sağ: 0; genişlik: 200 piksel; yükseklik: otomatik; opaklık: 0; geçiş: tümü 0,1 sn; arka plan: # 232323;) .subnav li (kayan : yok;) .subnav li a (kenarlık-alt: 1px katı # 2e2e2e;) #options: hover .subnav (görünürlük: görünür; üst: %100; opaklık: 1;)

Stillerde, bir alt menüyü belirtmek için bir üçgen arka plan görüntüsü (triangle.png) eki bulacaksınız - bu ve örnekteki diğer resimler için doğru yolu belirtmeyi unutmayın. Bir alt menünün görünümü, opacity özelliği kullanılarak uygulanır. Codepen'de son çözüm:

V bu seçenekÇoğunlukla CSS2.1 teknikleri kullanılır, artı veya eksi yeni çözüm - Mart 2015 için. Sitenin yatay açılır menüsünde bir alt düzey eksikse, bu örnek aynı anda üç tane içerir. Sadece-çocuk sözde sınıfının yardımıyla, alt menülerin varlığını belirtmek için öğelere bir "+" sembolü eklenir.

Genel olarak, iyi ve karmaşık olmayan bir örnek. Uygulama sürecini ayrıntılı olarak açıklamayacağız, çünkü öncekilere benzer - önce bir HTML tel çerçevesi oluşturursunuz ve ardından yavaş yavaş bunun için stiller eklersiniz. Son kodu bağlantıdan kaynağa indirin, kısmen Codepen'de inceleyebilirsiniz:

Toplam

Yukarıda, nette çok daha benzer örnekler olmasına rağmen, CSS + HTML'de açılır menünün nasıl oluşturulacağına dair 4 seçeneğe baktık. jQuery ile ilgili çözümler var, ancak bu büyük olasılıkla yalnızca bazı özel efektlerin ve standart olmayan görevlerin uygulanması için kullanışlıdır. Çoğu durumda, bir grup CSS + HTML yeterli olacaktır, özellikle de artık menü için ana gereksinimler kolaylık ve hızlı yükleme hızı olduğundan.

Son olarak, yukarıdaki kodlar hakkında iki yorum. Bazı örnekler, CSS'deki açılır menü için resimler kullanır, bu nedenle resimlerin yollarına dikkatlice bakmanız ve siteniz için doğru değerleri sağlamanız gerekir. İkincisi, bazı çözümler 2 veya 3 yaşında, bu nedenle performanslarını farklı tarayıcılarda bir kez daha kontrol etmelisiniz.

Site için yatay açılır menülerin başka ilginç modern uygulamalarını biliyorsanız, yorumlarda bağlantılar gönderin.

Şartname

Açıklama

Etiket

menü öğelerinin bir listesini görüntülemek için tasarlanmıştır. Etiketlere benzer
    ve
      konteynerin içinde liste etiketler kullanılarak oluşturulur
    • .

      HTML4'te etiket

      eski, bunun yerine etiketi kullanmanız önerilir
        ... HTML5'te, etiket yeniden etkinleştirildi, ancak farklı bir kapasitede. Şimdi etiket için bir kap görevi görüyor ve bir menü oluşturmak.

        Sözdizimi

        HTML
      • menü seçeneği
      • menü seçeneği
      • HTML5 ...

        Öznitellikler

        Menü için görünür etiketi ayarlar. Menü türünü belirtir.

        Bitiş etiketi

        Gerekli.

        doğrulama

        Bu etiketin kullanımı, HTML4 spesifikasyonu tarafından kullanımdan kaldırılmıştır, geçerli kod yalnızca bir geçici durum kullanılarak elde edilir.... HTML5'te etiket uygulama

        doğru şekilde.

        HTML 4.01 IE Cr Op Sa Fx

        MENÜ etiketi

        Bu konuda:

      • Rus mutfağı. Burlatskaya kulak
      • Ukrayna yemeği. Vareniki
      • Moldova mutfağı. kırmızı biber
      • Kafkas mutfağı. çorba kharço
      • Baltık mutfağı. burgu


      • Sonuç bu örnekŞek. 1.

        Pirinç. 1. Etiketle oluşturulan listenin görünümü

        HTML5 IE Cr Op Sa Fx

        MENÜ etiketi



      • Yazardan: Herkese hoş geldiniz. Bazı nedenlerden dolayı, web yöneticileri bir açılır menüyü komut dosyalarıyla ilişkilendirir, ancak uzun bir süre bu tür gezinme saf css'de kesinlikle güvenli bir şekilde yapılabilir. Üstelik böyle bir menü daha da kötü olmayacak. Bugün size css'de nasıl açılır menü oluşturulacağını göstereceğim. Tabiri caizse bir tarif paylaşacağım.

        Menümüzün ders planı ve düzeni

        Genel olarak öncelikle menünün kendisini nasıl oluşturacağımıza karar verelim. html5'te standart bir şekilde madde işaretli bir liste kullanarak bir gezinme kapsayıcısında oluşturduğu kabul edilir. Sadece bunu yapalım. İşaretçileri kaldıracağız css kullanarak, onlara menüde hiç ihtiyacımız yok.

        Aslında, hemen html'de iç içe listelerle işaretleme yazacağım. Yani listemiz iki seviyeli olacak - içinde başka listeler olacak. Yani, her öğe için bir açılır menü oluşturacak 1 liste.

        Burada önemli bir nokta var, o da her bir öğeyi açılır liste yapmanız gerekmeyebilir, sadece birkaç tane yapmanız gerekebilir. Sorun değil, o zaman paragraflar içinde bırakmadan iç içe listeler oluşturmuyoruz.

        Aslında, işte burada, tüm işaretleme:

        < nav id = "nav" >

        < ul >

        < li > < a href = "#" >Paragraf 1< / a >

        < ul class = "second" >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < / ul >

        < / li >

        < li > < a href = "#" >2. nokta< / a >

        < ul class = "second" >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < / ul >

        < / li >

        < li > < a href = "#" >3. nokta< / a >

        < ul class = "second" >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < / ul >

        < / li >

        < li > < a href = "#" >4. madde< / a >

        < ul class = "second" >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < li > < a href = "#" >alt madde< / a > < / li >

        < / ul >

        < / li >

        < / ul >

        < / nav >

        çok büyük olduğunu anlıyorum. Bu, çok fazla kod gerektiren iç içe listelerdeki sorundur. Ancak 4 ana öğe yaptığımızı ve her biri için bir açılır menü olacağını unutmayın.

        Aslında, iç içe olduklarını anlamak için tüm gezinme için nav tanımlayıcısını ve tüm iç içe listeler için ikinci stil sınıfını ayarladım.

        Harika, işaretlememiz hazır, sonuca bakabilirsiniz:

        Evet, korkunç görünüyor. Ama şimdi çalışmaya css ekleyeceğiz ve birkaç dakika içinde navigasyonumuz değişecek. Hadi çalışalım.

        css stilleri yazma

        Yapacağım ilk şey, tüm öğeler için tüm dolguyu varsayılana sıfırlamak. Sadece bize müdahale edecekler, girintileri ihtiyaç duyulan yere kendimiz ayarlamak daha iyidir.

        * (kenar boşluğu: 0; dolgu: 0;)

        kenar boşluğu: 0;

        dolgu: 0;

        #nav (yükseklik: 70px;) #nav ul (liste stili: yok;)

        #nav (

        yükseklik: 70 piksel;

        #nav ul (

        liste - stil: yok;

        Şimdi aslında menümüzün ne olacağına karar vermemiz gerekiyor. Yatay mı dikey mi? Önce yatay yapmayı ve her şeyi örneğinde görmeyi öneriyorum. Bunu yapmak için aşağıdaki stilleri yazmanız gerekir:

        #nav> ul> li (kayan nokta: sol; genişlik: 180 piksel; konum: göreli;)

        #nav> ul> li (

        yüzer: sol;

        genişlik: 180 piksel;

        pozisyon: göreceli;

        > işaretiyle, doğrudan bir ul'de yuvalanmış bir listedeki öğelere atıfta bulunduğumuzu ve doğrudan bir nav'de yuvalanmış olduğunu unutmayın. Bu, stili iç içe listelerdeki öğelere uygulamamanıza izin verdiği için çok önemlidir. Gerçek şu ki, fikrime göre, ana listedeki öğeler yatay olarak ve iç içe olanlarda dikey olarak düzenlenecektir.

        Ancak, elbette, fikrinize göre farklı şekilde yapabilirsiniz. Tüm öğeleri tek satırda yapabilirsiniz.

        Neyse, yukarıdaki kodu, umarım anlamışsınızdır. Ana listedeki öğeleri sola hizalamaya zorlar, böylece blok öğeler olsalar bile hepsi aynı satıra sığar. Ayrıca onlara açık bir genişlik ve göreceli konumlandırma verdim.

        Konumlandırma ne için? Daha sonra iç içe listeleri kesinlikle konumlandırmak için gereklidir. Css'de konumlandırma çalıştıysanız, muhtemelen bir blok göreli konumlandırma ayarlarsanız, içindeki tüm öğelerin tüm tarayıcı penceresinin değil kesinlikle bu belirli bloğun içine yerleştirilebileceğini bilirsiniz.

        Bu arada, şu ana kadar sahip olduklarımız:

        Bu ekran görüntüsünden, yaklaşık sonucu zaten hayal edebilirsiniz. Tabii yine de paragrafları güzelce süslememiz gerekiyor ki navigasyona bakarken gözler merhamet dilenmesin.

        #nav li a (ekran: blok; arka plan: # 90DA93; kenarlık: 1 piksel düz # 060A13; renk: # 060A13; dolgu: 8 piksel; metin hizalama: merkez; metin süsleme: yok;) #nav li a: vurgulu ( arka plan: # 2F718E;)

        #nav li bir (

        Ekran bloğu;

        arka plan: # 90DA93;

        kenarlık: 1 piksel katı # 060A13;

        renk: # 060A13;

        dolgu: 8 piksel;

        metin - hizala: ortala;

        metin - dekorasyon: yok;

        #nav li a: üzerine gelin (

        arka plan: # 2F718E;

        İlk olarak, bağlantıların kendilerinin bloklu hale getirilmesi gerekir. Bu, dolgunun çalışması ve tüm özelliklerin doğru bir şekilde uygulanması için gereklidir. Ardından arka planın renklerini, metnin, çerçeve seçeneklerini, dolguyu ve metnin ortalamasını belirliyorum. Son olarak, bağlantıların altını kaldırın.

        Tüm bu parametrelerin benim yaptığım gibi yazılması gerekmez. Renkleri keyfi olarak seçebilir, bir çerçeveyi farklı yapabilir veya hiç kullanmayabilirsiniz, girintiler azaltılabilir veya artırılabilir.

        Bu durumda> işaretini kullanmadığımızı, dolayısıyla bu kuralların iç içe paragraflardakiler de dahil olmak üzere tüm bağlantılara uygulanacağını unutmayın. Yani, şimdi aşağıdakilere sahibiz:

        Harika, ancak alt öğelerin görünmemesi gerektiğini anlıyorsunuz, istediğiniz öğenin üzerine geldiğinizde açılmaları gerekiyor. Onsuz, menümüz bir tablo gibi görünüyor. Pekala, iç içe geçmiş öğeleri saklamanın zamanı geldi.

        #nav li .saniye (görüntüleme: yok; konum: mutlak; üst: %100;)

        #nav li .saniye (

        görüntü yok;

        pozisyon: mutlak;

        en iyi 100%;

        İlk olarak, tamamen iç içe listeleri gizleriz. İkinci olarak, onlara mutlak konumlandırma ve üst koordinatı veriyoruz: %100. Bu, açılır menünün ait olduğu ana öğenin altında net bir şekilde, o öğenin yüksekliğinin %100'ünün altında açıkça görüntüleneceği anlamına gelir.

        Artık web sayfasında sadece ana menüyü görüyoruz, bu da ihtiyacımız olan şey.

        Bırakmanın uygulanması

        En önemli şeyi yapmalıyız - kaybın farkına varmak. Bu konuda karmaşık bir şey yok, şu koda bakın:

        #nav li: .saniye üzerine gelin (görüntüleme: blok;)

        #nav li: .saniye üzerine gelin (

        Ekran bloğu;

        Bu kod sorunsuz çalışacaktır. Ana menüdeki bir öğenin üzerine geldiğinizde iç içe liste görünür hale gelecektir. Ve yalnızca imlecin üzerine geldiği öğeye gömülü olan liste.

        Yalnızca küçük bir sorun var - iç içe öğelerin genişliği, ana öğelerin genişliğiyle eşleşmiyor. Ancak bu, uygun stiller eklenerek çok kolay bir şekilde çözülür:

        #nav li li (genişlik: 180 piksel;)

        #nav li li (

        genişlik: 180 piksel;

        Her şey, sorun çözüldü:

        Her şey mükemmel çalışıyor. Ana öğenin üzerine geldiğinizde, ilgili açılır menü belirir. İmleci yana doğru hareket ettirirseniz kaybolur. İmleci iç içe öğelerin kendilerine taşırsanız, üzerlerine tıklayıp sitenin istediğiniz bölümüne gidebilirsiniz. Bu nedenle, sizinle kesinlikle hiçbir komut dosyası içermeyen çok basit ve hafif bir açılır menü hazırladık.

        Menüyü dikeye dönüştürme

        Pekala, yatay gezinmeyi tamamen çözdük, ancak buna ek olarak, sitelerde dikey gezinme çok yaygındır ve açılır da olabilir. Aslında, menüyü yataydan dikeye değiştirmek çok kolay, sadece birkaç satır kod değiştirmemiz gerekiyor.

        İlk olarak, ana liste öğelerinden float: left öğesini kaldırmanız gerekecek. Öğelerimizin bir satırda görüntülenmesine katkıda bulunan bu özelliktir, ancak gezinme dikey olacaksa neden buna ihtiyacımız var?

        Şimdi sıra #nav li .second seçicisinin kurallarını değiştirmek, yani iç içe listeler için, yani biraz farklı şekilde konumlandırılmaları gerekiyor. Bunun gibi:

        #nav li .saniye (ekran: yok; konum: mutlak; sol: %100; üst: 0;)

        #nav li .saniye (

        görüntü yok;

        pozisyon: mutlak;

        sol: %100;

        üst: 0;

        Yani, bir yerine iki koordinatın kaydedilmesi gerekir. Öncelikle yatay gezinme söz konusu olduğunda, amaçlandığı gibi iç içe menülerin öğelerinin ana öğeler altında görüntülenmesi gerektiğini söyledim. Dikey bir menü olması durumunda bu uygun değildir - öğeler yanda görüntülenmelidir.

        Böylece üst: %100'ü sola: %100 değiştiriyoruz. Ek olarak, üst koordinata da ihtiyacımız var. Alt menünün karşılık geldiği öğe ile aynı seviyede olması için 0'a ayarladık.

        Her şey, şimdi her şey olması gerektiği gibi çalışıyor. Test edebilirsiniz. Gördüğünüz gibi, sadece birkaç satır kodu yeniden yazmam gerektiğini söylerken yalan söylemiyordum.

        Çoklu seviyeli yatay menü

        Kabaca aynı yaklaşımı kullanarak, gerekirse daha fazla menü düzeyi oluşturabilirsiniz. Örneğin, ana menünün dördüncü öğesi için alt öğelerden birine yuvalanacak bir liste oluşturalım.

        Merhaba sevgili blogumun ziyaretçileri! Bugün sitenin ana yatay menüsünden, yani yatay menünün merkeze nasıl hizalanacağından bahsedeceğiz. Evet, ilk bakışta, burada bu kadar zor olan şey - gerekli girintileri ayarlayın, ayarlayın ve bu kadar. Ama burada bazı nüanslar var. Site, her şeyden önce dinamiktir, yani. sitede sürekli olarak yeni içerik belirir, bilgi içeren bazı yeni bloklar görünür, vb. Böylece ana menüdeki bazı öğeler görünebilir / kaybolabilir. Bunu akılda tutarak, bir menü öğesi eklerken veya çıkarırken menünün de ortada kalmasını sağlamalıyız. Tabii ki, onu ortalamak her zaman gerekli değildir, hepsi tasarıma bağlıdır. Ama yine de, ortasına yatay bir menü yerleştirmeyi düşünüyorsanız, o zaman css'de birkaç basit numara uygulayarak istenen sonucu elde edebiliriz.

        makale yapısı

        Açılır öğeler olmadan orta yatay menü

        İlk olarak, açılır öğelerin olmadığı yatay bir menü örneğine bakalım.

        HTML Kodu

        Css kodu

        *, * :: after, * :: önce (-webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; -ms-box- boyutlandırma: border-box; box-sizing: border-box; kenar boşluğu: 0; dolgu: 0;) #anamenu (arka plan: # 444; konum: göreli; taşma: gizli; yükseklik: 40 piksel; kenar boşluğu: 30 piksel 0) #anamenu ul (liste stili: yok; kenar boşluğu: 0; dolgu: 0; konum: göreceli; sol: %50; kayan nokta: sol; yazı tipi: 14 piksel Arial, Helvetica, sans-serif; yükseklik: 40 piksel) #mainmenu ul li (konum : göreceli; sol: -%50; kayan nokta: sol; kenar boşluğu: 0 10 piksel; yükseklik: 40 piksel) #mainmenu ul li a (renk: #fff; görüntü: blok; metin dekorasyonu: yok; dolgu: 0 15 piksel; satır- yükseklik: 40 piksel;) #mainmenu ul li a: vurgulu (arka plan rengi: # 666;)

        Her şeyi sırayla sıralayalım, burada her şey basit. Menümüzü sırasız bir liste olarak yerleştirdiğimiz bir "ana menü" kapsayıcı oluşturuyoruz.

        Şimdi css stillerine geliyor. İlk olarak, tüm tarayıcılar için tüm kenar boşluklarını ve dolguyu sıfırlıyoruz. Ardından, "float: left" özelliğini kullanarak sırasız listemizi sola kaydırıyoruz ve ardından göreceli konumlandırma ile %50 sağa kaydırıyoruz. "ul" listesinin genişliği, içindeki tüm "li" öğelerinin uzunluklarının toplamına eşit olacaktır. Böylece, tarayıcı penceresini zihinsel olarak ikiye bölersek, menümüz bölünmüş satırın sağına gider. Hizalamak için, "li" öğelerine de göreli konumlandırma uygulayacağız ve "left: -%50" özelliğini belirterek bunları %50 sola kaydıracağız. Ve ayrıca, neredeyse unutuyordum, konteynerimizin "ana menü" özelliği mutlaka belirtilmelidir. taşma: gizli yoksa alırız yatay şerit kaydırma.

        İşte bu, şimdi menümüz ortalandı. Şimdi ekleyebilir, en azından puan çıkarabilirsiniz, bu konumlandırmayı etkilemeyecektir. Bu menüyü, stili tasarımınıza uyacak şekilde değiştirerek sitelerinizde de kullanabilirsiniz.

        Açılır öğelerle orta yatay menü

        Şimdi açılan alt öğelere bir göz atalım. Buradaki durum biraz farklı ve biraz daha karmaşık, çünkü ilk durumda, alt öğelerimiz düşmeyecektir, çünkü “mainmenu” bloğuna “overflow: hidden” özelliğini belirtmişizdir. Bu, bu bloğun dışındaki öğelerin gösterilmeyeceği anlamına gelir. Ama bir çıkış yolu var.

        Bu yüzden önceki kodu değiştirdim ve "overflow: hidden" özelliğini ondan kaldırdım.

        HTML Kodu

        CSS kodu

        *, * :: after, * :: önce (-webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; -ms-box- boyutlandırma: border-box; box-sizing: border-box; kenar boşluğu: 0; dolgu: 0;) #mainmenu (konum: göreceli; arka plan: # 444444; yükseklik: 40 piksel; kenar boşluğu: 30 piksel 0; dolgu: 0; kayan nokta: sol; genişlik: %100; z-endeksi: 10) #mainmenu ul (temiz: sol; konum: göreli; sağ: %50; yükseklik: 40 piksel; kayan nokta: sağa; metin hizalama: merkez; yazı tipi: 15 piksel Arial, Helvetica , sans-serif; liste stili: yok; dolgu: 0; kenar boşluğu: 0) / ** Ana noktalar ** / #mainmenu> ul> li (konum: göreceli; sol: %50; kayan nokta: sol; yükseklik: 40 piksel ; dolgu: 0; kenar boşluğu: 0) #mainmenu> ul> li> a (sınır-sol: 1 piksel katı # 666; görüntü: blok; renk: #fff; metin dekorasyonu: yok; dolgu: 0 20 piksel; satır yüksekliği : 40px;) #mainmenu> ul> li: first-child> a (border: none) #mainmenu> ul> li: hover> a, #mainmenu> ul> li.hover> a, #mainmenu> ul> li. aktif> a (renk: #fff) #mainmenu> ul> li: vurgulu, #mainmenu> ul> li.ho ver, #mainmenu> ul> li.active (arka plan: # 666) / * Açılan alt noktalar * / #mainmenu ul li ul (konum: mutlak; sol: 0; üst: 40 piksel; görüntü yok; liste stili: yok; görünürlük: gizli; dolgu: 0; kenar boşluğu: 0; genişlik: 200px) #mainmenu> ul> li ul li (arka plan rengi: # 666; konum: göreceli; sol: 0; görüntü: liste öğesi; kayan nokta: yok; yükseklik: otomatik; kenar boşluğu: 0; metin hizalama: left;) #mainmenu ul li ul li a (kenarlık-alt: 1px katı # 999; ekran: blok; renk: #fff; dolgu: 10px 15px; metin dekorasyonu: yok;) #mainmenu ul li ul li.parent a (pozisyon: göreceli;) #mainmenu ul li ul> li.parent> a :: önce (kenarlık-üst: 1 piksel katı #fff; kenar-sağ: 1 piksel katı #fff; içerik: ""; ekran: blok; konum: mutlak; sağ: 15 piksel; üst: %50; dönüştürme: çevirY (-50%) döndürme (45 derece); yükseklik: 6 piksel; genişlik: 6 piksel;) #mainmenu ul li ul li: vurgulu, #mainmenu ul li ul ul li.hover (arka plan rengi: # 444) #mainmenu ul li: hover ul, #mainmenu ul li.hover ul (ekran: blok) / * İkinci seviye açılır menüler * / #mainmenu ul li: hover> ul (opaklık: 1; görünürlük : görünür; kenar boşluğu: 0;) #mainmenu ul li ul li ul (üst: 0; sol: 200 piksel; kenar boşluğu: 0 0 0 20 piksel; genişlik: 180 piksel)

        Artık menümüz ortalandı ve fareyle üzerine gelindiğinde alt öğeler düşüyor.

        Flexbox ile orta hizalama menüleri

        Ortaya Hizala Menüsü ayrıca css - flexbox'ta yeni bir kural uygulayabilirsiniz. Genel olarak, flexbox püf noktalarına ayrı bir gönderi ayırmak istiyorum, buna değer, mizanpaj tasarımcısının hayatını büyük ölçüde basitleştiriyor. Genel olarak burada derine inmeyeceğiz... Buraya sadece açılır menü öğelerinin bulunduğu menü için css kodunu ekleyeceğim. HTML kodu yukarıdaki ile aynıdır.

        CSS kodu

        *, * :: after, * :: önce (-webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; -ms-box- boyutlandırma: border-box; box-sizing: border-box; kenar boşluğu: 0; dolgu: 0;) #mainmenu (konum: göreli; arka plan: # 444444; yükseklik: 40 piksel; kenar boşluğu: 30 piksel 0; dolgu: 0; genişlik: %100; z-index: 10) #mainmenu ul (ekran: -webkit-box; ekran: -webkit-flex; ekran: -ms-flexbox; ekran: esnek; -webkit-box-orient: yatay; -webkit- kutu yönü: normal; -webkit-esnek yön: satır; -ms-esnek yön: satır; esnek yön: satır; yükseklik: 40 piksel; metin hizalama: merkez; yazı tipi: 15 piksel Arial, Helvetica, sans-serif ; liste stili: yok; dolgu: 0; kenar boşluğu: 0; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: merkez;) / ** Ana noktalar ** / #mainmenu> ul> li (konum: göreli; yükseklik: 40 piksel; dolgu: 0; kenar boşluğu: 0) #mainmenu> ul> li> a (sınır-sol: 1 piksel katı # 666; ekran: blok; renk: #fff; metin-dekorasyon: yok; dolgu: 0 20 piksel; satır yüksekliği: 40 piksel; ) #mainmenu> ul> li: first-child> a (border: none) #mainmenu> ul> li: hover> a, #mainmenu> ul> li.hover> a, #mainmenu> ul> li.active> a (renk: #fff) #mainmenu> ul> li: vurgulu, #mainmenu> ul> li.hover, #mainmenu> ul> li.active (arka plan: # 666) / * Açılanlar * / #mainmenu ul li ul ( konum : mutlak; sol: 0; üst: 40 piksel; görüntü: yok; liste stili: yok; görünürlük: gizli; dolgu: 0; kenar boşluğu: 0; genişlik: 200 piksel) #mainmenu> ul> li ul li (arka plan rengi: # 666; konum: göreceli; sol: 0; görüntüleme: liste öğesi; kayan nokta: yok; yükseklik: otomatik; kenar boşluğu: 0; metin hizalama: sola;) #mainmenu ul li ul li a (kenarlık-alt: 1 piksel katı # 999; ekran: blok; renk: #fff; dolgu: 10px 15px; metin-dekorasyonu: yok;) #mainmenu ul li ul li.parent a (konum: göreceli;) #mainmenu ul li ul> li.parent> a :: önce (kenarlık-üst: 1px düz #fff; kenar-sağ: 1px düz #fff; içerik: ""; görüntü: blok; konum: mutlak; sağ: 15 piksel; üst: %50; t ransform: translateY (-50%) döndürme (45deg); yükseklik: 6 piksel; genişlik: 6 piksel; ) #mainmenu ul li ul li: vurgulu, #mainmenu ul li ul li.hover (arka plan rengi: # 444) #mainmenu ul li: vurgulu ul, #mainmenu ul li.hover ul (ekran: blok) / * Açılır öğeler ikinci düzey * / #mainmenu ul li: hover> ul (opaklık: 1; görünürlük: görünür; kenar boşluğu: 0;) #mainmenu ul li ul li ul (üst: 0; sol: 200 piksel; kenar boşluğu: 0 0 0 20 piksel; genişlik : 180 piksel)

        Gördüğünüz gibi kurallar sadece ebeveyn listesi - #mainmenu ul için değişti. Tek şey, tarayıcıların önceki sürümleri için önek eklemekti. Flexbox kuralının yalnızca şununla doğru anlaşıldığına dikkat edin: modern tarayıcılar... Daha eski tarayıcıları hedefliyorsanız, esnek seçeneğin ertelenmesi gerekecektir. Hangi tarayıcıların flexbox'ı iyi anladığını görebilirsiniz

gastroguru 2017