2016-02-11 11 views
13

में नीचे स्क्रॉल करता हूं तो निश्चित तत्व क्लिक करने योग्य नहीं होते हैं, मैं केवल आईओएस सफारी 9 + (8.4 ठीक है) पर एक बहुत ही परेशान करने वाली समस्या में भाग लेता हूं, जहां उपयोगकर्ता तुरंत पृष्ठ को स्क्रॉल करता है जिसके परिणामस्वरूप निश्चित तत्वों के भीतर एंकर लिंक अब उपस्थिति के कारण क्लिक करने योग्य नहीं होते हैं और वास्तविक क्लिक/हिट क्षेत्र इसके तत्व के साथ अस्तर नहीं करते हैं जब तक उपयोगकर्ता फिर से स्क्रॉल नहीं करता है।जब मैं आईओएस सफारी 9 +

यह हर बार ऐसा नहीं होता है, और सिस्टम को "तोड़ने" के लिए कुछ प्रयास कर सकता है। काम करने के लिए सामग्री व्यूपोर्ट से अधिक होनी चाहिए।

iOS 9+ Safari Fixed:Position Scroll Issue Screen Recording

समस्या का कोई समाधान अभी तक। कैसे मैं इस मुद्दे को हल कर सकता हूँ?

अद्यतन: आगे परीक्षण के बाद, आईओएस सफारी 9 और उसके बाद की समस्या केवल आईओएस 8 पर परीक्षण की गई और कोई समस्या नहीं है।

अद्यतन 2: ऐसा नहीं है कि यह सबसे position:fixed; और यहां तक ​​कि position:-webkit-sticky; उपयोग करने वाली वेबसाइटों पर होता है अब स्पष्ट है। आपने :)

एचटीएमएल देखना चाहें

<section> 
    <article></article> 
    <article></article> 
    <article></article> 
</section> 

<div class="sticky"> 
    <a href=""></a> 
</div> 

सीएसएस:

html, body { 
    margin:0; 
} 

article { 
    display: block; 
    height: 200px; 
    width: 100%; 
    margin-bottom: 20px; 
    background: whitesmoke; 
} 

.sticky { 
    width:100%; 
    height:100px; 
    position: fixed; 
    bottom:0; 
    background: orange; 
    text-align:center; 

} 

.sticky a { 
    display: inline-block; 
    width: 100px; 
    height: 100px; 
    background: yellow; 
} 

http://codepen.io/toobulo/pen/dGEodo

मुद्दा, Codepen संपादक के भीतर नहीं होता यह है के रूप में मोबाइल सफारी के लोचदार/टूलबार आकार में परिवर्तन से संबंधित। खुद पृष्ठ में कोड निर्यात करें, या दिए गए लिंक का उपयोग करें:

https://cdn.rawgit.com/anonymous/3234ad797dd80e5f8905/raw/ab51c4d8621cfb827f83a33d21940579f8682cde/index.html

उत्तर

4

यह समस्या ios में उछाल प्रभाव से संबंधित है और उपकरण पट्टी & हेडर बार खोने। एक ही रास्ता है कि मैं इसे ठीक करने के पाया है निम्न करने के लिए है:

html, 
body { 
    height: 100%; 
    width: 100%; 
    overflow: auto; 
    -webkit-overflow-scrolling: auto 
} 

साथ ही आप तो यह केवल मोबाइल के लिए काम करता है एक ब्रेकप्वाइंट पर यह कर सकता है। उम्मीद है की यह मदद करेगा।

** अतिप्रवाह स्क्रॉलिंग जोड़ा गया।

+0

जबकि इस समाधान समस्या ठीक होती है, यह इस तरह जावास्क्रिप्ट calculations- जैसे के रूप में विभिन्न क्षेत्रों के लिए कीड़े का एक नया कर सकते हैं खोलता है: 'वर स्क्रॉल = $ (विंडो) .scrollTop(); अगर (स्क्रॉल> = 10) {// कुछ करें} ' – Joe

+0

@ जो आपको प्रश्न आवश्यकताओं के भाग के रूप में शामिल करना चाहिए तो –

+1

@ZachSaucier मैं विभिन्न सुझाए गए फ़िक्स से बने ब्रांड-नई आवश्यकताओं के साथ प्रश्न को ओवरक्रोइड नहीं करना चाहता था , उम्मीद है कि व्यवहार को इसके सबसे सरल रूप में हल किया जाएगा (जेएस से संबंधित मुद्दों के बिना), इसलिए मेरी टिप्पणी इस प्रतिक्रिया के भीतर उपयुक्त है, नहीं? – Joe

-1

आप बना सकते हैं। स्टिकी लिंक पूर्ण करें और निम्न सीएसएस लागू करें ताकि लिंक विंडो/ब्राउज़र से स्वतंत्र हो।

.sticky { 
    width: 50px; 
} 
.sticky a { 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    margin: auto; 
} 
+0

यह मदद नहीं करता है क्योंकि मुझे व्यूपोर्ट के सापेक्ष फिक्स्ड पोजीशनिंग की आवश्यकता है - दस्तावेज़ की ऊंचाई नहीं। आपके समाधान के साथ, div एक लंबे पृष्ठ के साथ स्क्रॉल करेगा। – Joe

+1

ठीक है, तो आप ** आकार बदलें (jQuery का) का उपयोग कर प्रत्येक स्क्रॉल पर (var1) = (व्यूपोर्ट हाइट) और (var2) = (पृष्ठ में व्यूपोर्ट की निचली स्थिति) की गणना करने का प्रयास कर सकते हैं और गणना करें: (mid_point) = (var2 - (var1)/2)। मुझे उम्मीद है कि आपको मिल गया है। फिर आप अपने ब्लॉक की स्थिति ** mid_point ** गतिशील रूप से सेट कर सकते हैं। –

+0

धन्यवाद, हालांकि स्थिति का उपयोग करके हल करना अच्छा होगा: निश्चित; और कोई अतिरिक्त जेएस नहीं, मैं आपकी मदद की सराहना करता हूं और इसे अंतिम उपाय के रूप में आजमाउंगा। :) – Joe