2015-12-07 39 views
8

Bir AMP HTML web sitesi oluşturmaya çalışıyorum (bkz. https://www.ampproject.org) Ancak, duyarlı bir hamburger menüsü oluşturmanın nasıl bir yolunu bulamıyorum? Javascript'e izin verilmiyor ve bunun için AMP Bileşenleri mevcut değil mi?AMP HTML'ye duyarlı bir hamburger menüsü nasıl oluşturulur

+3

AMP kullanarak çok sayfalı bir web sitesi oluşturmaya mı çalışıyorsunuz? AMP'nin tasarladığı kullanım durumu değil. Gördüğüm/inşa ettiğim örnekler 'web siteleri' yerine 'sayfalar' - AMP olmayan bir web sitesindeki tek tek makalelerin görünümlerini basitleştiriyorlar. – MatCarey

+0

@MatCarey Peki amp sayfalarını nasıl yedekleyebiliriz? Tüm ürünlerde amp ayrıntıları sayfası yapmak için ayrı sayfalar yapmalı mıyız? –

cevap

6

.

HTML

#slide-in-menu { 
    transform: translateX(-100%); 
    transition: transform .2s ease-in-out; 
    ... additional required styles ... 
} 
#slide-in-menu:target { 
    transform: translateX(0); 
} 
+0

Ben de bunu yaptım, özellikle de çünkü: '' fokus' sözde-sınıfının, bazı masaüstü tarayıcılarında gerçekten de (Chrome'da en azından) ortaya çıkan bir nedensellik paradoksu nedeniyle çalışmamasıdır. '': '' hedef 'çok daha etkilidir ve aynı zamanda (burada keşfettiğim gibi) atlı karıncaları için de iyi çalışır. (https://dev.amdouglas.com/amphtml-examples/nojs-carousel/#div1) – amdouglas

1

Sen ile yapabilirsiniz

<nav id="slide-in-menu"> 
    ...nav menu content... 
</nav> 
<section class="content-section"> 
    <a href="#slide-in-menu">Hamburger Icon</a> 
</section> 

CSS: odak sözde sınıfının. Canlı bir örnek için https://fresnobee.relaymedia.com/amp/news/local/education/article61889207.html'a bir göz atın (www.washingtonpost.com da bu şekilde yapıyor). Ya da <amp-sidebar> etiketinin yayınlanmasını bekleyebilirsiniz.

kod

gibi
<a id="burger" tabindex="0">&#9776;</a> 
<div id="burgerCancel" tabindex="0">&#9776;</div> 
<div id="burgerMenu"> 
    <ul> 
     <li><a href="/news/local/#navlink=ampnav">Local News</a></li> 
     <li><a href="/sports/#navlink=ampnav">Sports</a></li> 
    </ul> 
</div> 
<button id="burgerMask"></button> 

ve css görünüyor

#burger:focus ~ #burgerMenu { 
    transform: translateY(0px); /* or whatever other way you want it to appear */ 
} 

#burgerMask { 
position: fixed; 
top: 0; 
left: 0; 
width: 100vw; 
height: 100vh; 
background: #000; 
z-index: 998; 
border: 0; 
opacity: 0; 
transition: opacity 250ms cubic-bezier(0, .67,0,.67); 
pointer-events: none; /*this is important */ 
} 


#burger:focus ~ #burgerMask { 
    pointer-events: auto; 
    opacity: 0.7; 
    display: block; 
} 
+0

Canlı Örnek çalışmıyor, menü maddesini tıkladığınızda menü kapanıyor ve URL'ye gitmiyor, örnekte kod aynı şeyi yapıyor. Bu kodu doğru bir şekilde çalışmasını sağladın mı? –

9

AMP şimdi amp-sidebar bileşenini kullanarak menü için desteği vardır.

İlgili konular