แม้ว่าแอตทริบิวต์ CSS {position:fixed;}
(ส่วนใหญ่) จะทำงานบนอุปกรณ์ iOS รุ่นใหม่ ๆ แต่ก็มีความเป็นไปได้ที่จะทำให้อุปกรณ์มีมุมแหลมและเป็นทางเลือก{position:relative;}
ในบางโอกาสโดยไม่มีสาเหตุหรือเหตุผล โดยปกติแล้วการล้างแคชจะช่วยได้จนกว่าจะมีบางอย่างเกิดขึ้นและมีมุมแหลมเกิดขึ้นอีกครั้ง
โดยเฉพาะจาก Apple เองที่เตรียมเนื้อหาเว็บของคุณสำหรับ iPad :
Safari บน iPad และ Safari บน iPhone ไม่มีหน้าต่างที่ปรับขนาดได้ ใน Safari บน iPhone และ iPad ขนาดหน้าต่างจะถูกกำหนดเป็นขนาดของหน้าจอ (ลบด้วยส่วนควบคุมอินเทอร์เฟซผู้ใช้ Safari) และผู้ใช้ไม่สามารถเปลี่ยนแปลงได้ หากต้องการเลื่อนไปรอบ ๆ หน้าเว็บผู้ใช้จะเปลี่ยนระดับการซูมและตำแหน่งของวิวพอร์ตเมื่อแตะสองครั้งหรือบีบนิ้วเพื่อซูมเข้าหรือออกหรือโดยการแตะและลากเพื่อเลื่อนหน้า เมื่อผู้ใช้เปลี่ยนระดับการซูมและตำแหน่งของวิวพอร์ตพวกเขากำลังทำเช่นนั้นภายในพื้นที่เนื้อหาที่สามารถดูได้ในขนาดคงที่ (นั่นคือหน้าต่าง) ซึ่งหมายความว่าองค์ประกอบของหน้าเว็บที่มีตำแหน่ง "คงที่" ไปที่วิวพอร์ตอาจอยู่นอกพื้นที่เนื้อหาที่สามารถดูได้ซึ่งอยู่นอกหน้าจอ
สิ่งที่น่าขันคืออุปกรณ์ Android ดูเหมือนจะไม่มีปัญหานี้ นอกจากนี้ยังเป็นไปได้ทั้งหมดที่จะใช้{position:absolute;}
เมื่ออ้างอิงถึงแท็กเนื้อหาและไม่มีปัญหาใด ๆ
ฉันพบต้นตอของนิสัยใจคอนี้ ว่าเป็นเหตุการณ์เลื่อนไม่เล่นได้ดีเมื่อใช้ร่วมกับแท็ก HTML หรือ BODY บางครั้งมันก็ไม่ชอบที่จะเริ่มงานอีเว้นท์หรือคุณจะต้องรอจนกว่าเหตุการณ์การแกว่งเลื่อนจะเสร็จสิ้นเพื่อรับเหตุการณ์ โดยเฉพาะวิวพอร์ตจะถูกวาดใหม่ในตอนท้ายของเหตุการณ์นี้และองค์ประกอบคงที่สามารถวางตำแหน่งใหม่ที่อื่นในวิวพอร์ตได้
นี่คือสิ่งที่ฉันทำ: ( หลีกเลี่ยงการใช้วิวพอร์ตและยึดติดกับ DOM! )
<html>
<style>
.fixed{
position:fixed;
}
.scrollableDiv{
position:relative;
overflow-y:scroll;
}
.viewportSizedBody{
position:relative;
overflow:hidden;
}
</style>
<body class="viewportSizedBody">
<div id="myFixedContainer" class="fixed">
This part is fixed.
</div>
<div id="myScrollableBody" class="scrollableDiv">
This part is scrollable.
</div>
</body>
<script type="text/javascript" src="{your path to jquery}/jquery-1.7.2.min.js"></script>
<script>
var theViewportHeight=$(window).height();
$('.viewportSizedBody').css('height',theViewportHeight);
$('#myScrollableBody').css('height',theViewportHeight);
</script>
</html>
โดยพื้นฐานแล้วสิ่งนี้จะทำให้ BODY มีขนาดของวิวพอร์ตและเลื่อนไม่ได้ DIV ที่เลื่อนได้ซึ่งซ้อนอยู่ภายในจะเลื่อนตามที่ BODY ตามปกติ (ลบด้วยเอฟเฟกต์การแกว่งดังนั้นการเลื่อนจะหยุดลงเมื่อสัมผัส) DIV คงที่จะคงที่โดยไม่มีการรบกวน
ตามหมายเหตุด้านข้างz-index
ค่าที่สูงของ DIV คงที่เป็นสิ่งสำคัญเพื่อให้ DIV ที่เลื่อนได้ดูเหมือนอยู่ข้างหลัง โดยปกติฉันจะเพิ่มในการปรับขนาดหน้าต่างและเลื่อนเหตุการณ์สำหรับการทำงานข้ามเบราว์เซอร์และความเข้ากันได้ของความละเอียดหน้าจออื่น
ถ้าทุกคนอื่นล้มเหลวโค้ดข้างต้นจะยังทำงานร่วมกับทั้งคงที่และ DIVs {position:absolute;}
เลื่อนการตั้งค่าให้