HTML, CSS, jQuery kullanarak resimde de görüldüğü gibi responsive menü yapacağız. Demo yu buradan görüntüleyebilirsiniz.
Menü kodlarına ve canlı örneğine buradan ulaşabilirsiniz.
HTML Kodları
- Menünün genel yapısını oluşturuyoruz
- nav etiketi altında liste etikletleri (ul li) ile menü elemanlarını oluşturalım
- Menünün açılır olduğunu belirtmek için li etiketine “dropdown” sınıfını ekledim.
- Açılır menü için li.dropdown etiketi içerisinde yeni bir ul li yapısı oluşturuyoruz.
- “dropdown-menu” isimli div alt menümüz olacak.
- Responsive olduğunda menüyü açıp kapatmak için bir buton,link eklememiz gerekiyor bunu da nav içerisine ul etiketinin üzerinde aşağıda görüldüğü gibi yeni bir div ekleyerek yaptık.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<nav> <div class="menu-toggle"><i class="fa fa-bars"></i></div> <ul> <li><a href="">Anasayfa</a></li> <li><a href="">Hakkımda</a></li> <li class="dropdown"> <a href="">Galeri</a> <ul class="dropdown-menu"> <li><a href="">Video Galeri</a></li> <li><a href="">Foto Galeri</a></li> </ul> </li> <li><a href="">Blog</a></li> <li class="dropdown"> <a href="">İletişim</a> <ul class="dropdown-menu"> <li><a href="">Alt Menü 1</a></li> <li><a href="">Alt Menü 2</a></li> <li><a href="">Alt Menü 3</a></li> <li><a href="">Alt Menü 4</a></li> </ul> </li> </ul> </nav> |
CSS Kodları
- Nav etiketini biçimlendiriyoruz. Genişliğini %100 yaptık, gölge verdik, arkaplan rengi verdik. (No:9)
- Normal menü mantığını uyguladık ul li elemanlarına float:left özelliğini vererek yan yana gelmesini sağladık. (No:29)
- “dropdown-menu” sınıfına opacity, visibilty,top, gibi değerler vererek gizledik. Bu şekilde gizlememizin sebebi efektif bir şekilde açılması için. (no:73)
- Gizlediğimiz menüyü “dropdown” classı verdiğimiz etiketin üzererine gelince açtırıyoruz. (No:61)
- Media etiketleri ile max-width yani genişlik 991px olduğunda menünün nasıl bir şekilde olacağını belirliyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
@import url('https://fonts.googleapis.com/css?family=Poppins:300,400,700&subset=latin-ext'); * { margin: 0; padding: 0; } body { background-color: #F22613; } nav { font-family: 'Poppins'; width: 100%; background: #fff; margin: 150px auto; box-shadow: 0 0 30px rgba(0, 0, 0, 0.2); } nav ul { margin: 0; padding: 0; list-style: none; } nav ul:before, nav ul:after { content: ""; display: table; } nav ul:after { clear: both; } nav ul > li { float: left; } nav ul > li > a { position: relative; display: block; padding: 16px 25px; color: #444; font-size: 15px; text-decoration: none; } nav ul > li > a::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; margin: auto; width: 0%; height: 3px; background-color: #df1e0c; transition: all 200ms; } nav ul > li > a:hover { color: #F22613; } nav ul > li > a:hover::after { width: 100%; } nav ul > li.dropdown { position: relative; } nav ul > li.dropdown:hover .dropdown-menu { top: 100%; opacity: 1; visibility: visible; } nav ul > li.dropdown > a::after { position: static; content: "\f107"; font-family: 'FontAWesome'; background: transparent; margin-left: 10px; } nav ul > li.dropdown .dropdown-menu { width: 180px; position: absolute; top: 500%; opacity: 0; visibility: hidden; background-color: #fff; margin-top: 20px; transition: all 250ms; box-shadow: 0 0 15px rgba(0, 0, 0, 0.08); } nav ul > li.dropdown .dropdown-menu::before { content: ""; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 8px solid #fff; margin-top: -8px; margin-left: 20px; } nav ul > li.dropdown .dropdown-menu li { width: 100%; border-bottom: 1px solid #f1f1f1; margin-top: 5px; } nav ul > li.dropdown .dropdown-menu li a { color: #444; width: 100%; display: block; font-size: 14px; padding: 8px 20px; } nav ul > li.dropdown .dropdown-menu li a::after { display: none; } nav ul > li.dropdown .dropdown-menu li a:hover { color: #F22613; } nav .menu-toggle { display: none; width: 30px; height: 30px; border: 1px solid #F22613; text-align: center; line-height: 30px; color: #F22613; box-shadow: 0 0 12px rgba(0, 0, 0, 0.12); margin: auto; } nav .menu-toggle:hover { color: #fff; background-color: #F22613; cursor: pointer; } /* responsive */ @media (max-width: 991px) { nav { padding: 20px 0; } nav > ul { display: none; margin-top: 20px; border-top: 1px solid #eaeaea; } nav > ul > li { float: none; } nav > ul > li > a { text-align: center; } nav > ul > li.dropdown:hover .dropdown-menu { display: block; } nav > ul > li.dropdown .dropdown-menu { display: none; position: relative; margin: auto; background-color: #F22613; } nav > ul > li.dropdown .dropdown-menu::before { display: none; } nav > ul > li.dropdown .dropdown-menu li a { color: #fff; text-align: center; padding: 8px 0; } nav .menu-toggle { display: block; } } @media (min-width: 991px) { nav > ul { display: block!important; } } |
jQuery Kodları
- menu-toggle a tıklandığında menüyü açıp kapatması için.
1 2 3 |
$('.menu-toggle').click(function(){ $('nav > ul').slideToggle(200); }); |