2015-12-07 9 views
8

में एक उत्तरदायी हैमबर्गर मेनू कैसे बनाएं I am एएमपी एचटीएमएल वेबसाइट बनाने की कोशिश कर रहा हूं (https://www.ampproject.org देखें) लेकिन मुझे कहीं भी नहीं मिल रहा है कि आपको एक उत्तरदायी हैमबर्गर मेनू कैसे बनाना है? जावास्क्रिप्ट की अनुमति नहीं है और इसके लिए कोई एएमपी घटक उपलब्ध नहीं हैं?एएमपी एचटीएमएल

+3

क्या आप एएमपी का उपयोग कर एक बहु पृष्ठ वेबसाइट बनाने की कोशिश कर रहे हैं? यह उपयोग-मामला नहीं है, मुझे लगता है कि एएमपी के लिए डिज़ाइन किया गया है। जिन उदाहरणों को मैं देख रहा/निर्माण कर रहा हूं वे 'वेबसाइट' के बजाय 'पेज' हैं - वे गैर-एएमपी वेबसाइट से अलग-अलग लेखों के सरल दृश्य हैं। – MatCarey

+0

@MatCarey तो हम amp पृष्ठों को अनावश्यक कैसे बना सकते हैं? क्या हमें amp विवरण पृष्ठ बनाने के लिए सभी उत्पादों के लिए अलग-अलग पृष्ठ बनाना है? –

उत्तर

1

यह वर्तमान में प्रमुख हैक्स के बिना संभव नहीं है।

सुविधा का अनुरोध बग में साथ पालन करें: https://github.com/ampproject/amphtml/issues/827

6

मैं एक :target pseudoclass के उपयोग के साथ इस पूरा किया है।

एचटीएमएल

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

सीएसएस

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

इस तरह मैंने इसे भी किया होगा, खासकर जब से 'फोकस' छद्म-वर्ग वास्तव में कुछ डेस्कटॉप ब्राउज़र पर काम नहीं करता है क्योंकि ऐसा लगता है कि कम से कम क्रोमेटॉक्स (कम से कम क्रोम में) होता है। ': लक्ष्य' अधिक प्रभावी है और यह कैरोसेल के लिए भी अच्छा काम करता है, [जैसा कि मैंने यहां खोजा है।] (https://dev.amdouglas.com/amphtml-examples/nojs-carousel/#div1) – amdouglas

1

आप के साथ ऐसा कर सकते हैं: फोकस छद्म वर्ग। लाइव उदाहरण के लिए https://fresnobee.relaymedia.com/amp/news/local/education/article61889207.html पर एक नज़र डालें (www.washingtonpost.com यह भी इस तरह से करता है)। या आप लाइव जाने के लिए <amp-sidebar> टैग के लिए प्रतीक्षा कर सकते हैं।

कोड

तरह
<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> 

और सीएसएस लग रहा है

#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

लाइव उदाहरण काम नहीं कर रहा है, जब आप मेनू आइटम पर क्लिक करते हैं, तो मेनू बस बंद हो जाता है और यूआरएल पर नहीं जाता है, उदाहरण में कोड वही काम करता है। क्या आपको कभी भी यह कोड सही तरीके से काम करने के लिए मिला है? –

9

एएमपी अब amp-sidebar घटक का उपयोग मेनू के लिए समर्थन हासिल है।

संबंधित मुद्दे