Daha hızlı ve daha basit bir bootstrap menüsü

Saf CSS ve Vanilla JavaScript tabanlı

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2024-11-27

Bağımlılıksız, yıldırım hızında bir bootstrap menüsü

Core Web Vitals desteği için bana gelen web yöneticilerinin çoğu jQuery'yi Bootstrap gibi bir framework ile birlikte kullanır. 

Bootstrap'tan tam olarak yararlanmak için en az 3 script eklemeniz gerekir. jQuery, popper ve bootstrap. 

<script src="/js/jquery.js"></script>
<script src="/js/popper.js"></script>
<script src="/js/bootstrap.js"></script>

Critical request chain example

Bu scriptlerin indirilmesi ve değerlendirilmesi zaman alır. Bu neredeyse her zaman 'Time To Interactive' aleyhine olur ve sayfanın nasıl oluşturulduğuna bağlı olarak First Contentful Paint ve Largest Contentful Paint gibi diğer Lighthouse metrikleri aleyhine de olabilir. 

Size bunu yalnızca CSS ve Vanilla JavaScript kullanarak, hiçbir bağımlılık olmadan nasıl düzelteceğinizi göstereceğim. Kolaylığınız için örnekleri takip etmesi daha kolay olacak şekilde basitleştirdim.

Mobil navigasyon

Bootstrap, mobil navigasyon için kendi JavaScript'ini kullanır. Bu bana her zaman aşırı gelmiştir. JavaScript olmadan da bir mobil navigasyon hamburger menüsüne sahip olabilirsiniz. Kod aslında çok basittir. Menü öğesini CSS aracılığıyla açıp kapatmak için görünmez bir checkbox öğesi ve CSS subsequent-sibling combinator kullanacağım.   

Hamburger menüsüne tıkladığınızda checkbox aktif olur ve menü görüntülenir.

HTML kodu

<nav>
 <input type="checkbox" id="real-navbar-toggle">
 <label for="real-navbar-toggle"></label>
 <ul>
   <li>
    <a href="#">Home</a>
   </li>
 </ul>
</nav>

CSS kodu

#real-navbar-toggle{display:none;}
#real-navbar-toggle:checked ~ ul{display:block;}

Sonuç

Dropdown menüler

Dropdown menüler biraz daha karmaşıktır. Elbette gizli checkbox öğesini de kullanabilirim. Ancak bu genellikle menülerin otomatik olarak oluşturulduğu CMS'nizde zorluklara yol açar. Bu yüzden bunun için JavaScript kullanacağım. Yalnızca kullandığım kod çok daha hızlıdır ve jQuery gibi herhangi bir bağımlılık gerektirmez. Dilerseniz bu scripti mevcut scriptleriniz yerine doğrudan kullanabilirsiniz.

HTML kodu

<nav>
 <div>Logo</div>
 <ul class="navbar-nav">
  <li>
   <a href="#">Home</a>
  </li>
  <li>
   <a class="dropdown-toggle" href="#">
    Dropdown toggle
   </a>
   <div>
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
   </div>
  </li>
 </ul>
</nav>

JavaScript kodu

var elements = document.getElementsByClassName("dropdown-toggle");
for (var i = 0; i < elements.length; i++) {
    elements[i].addEventListener("click", function(e) {
        e.preventDefault();
        for (var y = 0; y < elements.length; y++) {
            if (elements[y] == this) {
                elements[y].nextElementSibling.classList.toggle("show");
            } else {
                elements[y].nextElementSibling.classList.remove("show");
            }
        }
    });
}

Sonuç

Compare your segments.

Is iOS slower than Android? Is the checkout route failing INP? Filter by device, route, and connection type.

Analyze Segments >>

  • Device filtering
  • Route Analysis
  • Connection Types
Daha hızlı ve daha basit bir bootstrap menüsüCore Web Vitals Daha hızlı ve daha basit bir bootstrap menüsü