แถบเมนูซาฟารี IOS ขัดแย้งกับปุ่มที่ต่ำกว่า 10% ของหน้าจอ


14

ฉันกำลังสร้างเว็บพอร์ทัลซึ่งจะต้องใช้งานได้และสวยในหลาย ๆ แพลตฟอร์ม หนึ่งในแพลตฟอร์มคือ IOS Safari และนี่คือปัญหาที่ฉันพบ ในรหัสของฉันฉันจัดตำแหน่งปุ่มลอยสองปุ่มที่ด้านล่างของ div ที่มีความกว้างและความสูง 100% ทั้งหมดนี้ทำงานได้ดีและปุ่มของฉันปรากฏขึ้นเหมือนที่ควรจะอยู่ที่ด้านล่างของหน้า อย่างไรก็ตามเมื่อฉันคลิกปุ่มมุมมองกะทัดรัดจากซาฟารีมือถือจะเปลี่ยนเป็นมุมมองแบบเต็มและปุ่มของฉันจะถูกซ่อนอยู่หลังแถบนำทางด้านล่าง!

เป็นพฤติกรรมปกติหรือไม่ที่ Safari บนมือถือจะแสดงเมนูแบบขยายเมื่อผู้ใช้แตะที่ด้านล่าง 10% ของหน้าจอ? ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร

ใน gif นี้คุณสามารถเห็นปัญหาในการจำลอง IOS: ตัวอย่าง
คุณสามารถเห็นปัญหาเกิดขึ้นเฉพาะเมื่อปุ่มอยู่ในมุมมอง 10% ที่ต่ำกว่า นี่เป็นเพียงปุ่มปกติรหัสของฉันถูกตรวจสอบสามครั้งโดยนักพัฒนาหลายคนและไม่มีข้อผิดพลาด


หากคุณแสดงรายการข้อมูลโค้ดของคุณให้ตั้งค่าสถานะนี้และเราสามารถย้ายข้อมูลไปยังสแต็กล้น ...
bmike

ฉันได้สร้างข้อบกพร่องสำหรับ Safari โปรดแสดงความคิดเห็นที่นั่น: bugs.webkit.org/show_bug.cgi?id=194235
sheerun

คำตอบ:


5

นี่เป็นพฤติกรรมปกติใน Mobile Safari การแตะที่ด้านล่างจะแสดงตัวเลือกเบราว์เซอร์ที่หลากหลายและเลื่อนหน้าเว็บขึ้นตามลำดับ ฟังก์ชันการทำงานของหน้าเว็บยังคงเหมือนเดิมดังนั้นผู้ใช้ยังคงสามารถแตะที่ปุ่มหลังจากเลื่อนเพื่อเข้าถึงฟังก์ชันการทำงานที่มีอยู่


4
ขอบคุณ Patrix ฉันรู้ว่านี่เป็นเรื่องปกติ แต่มีวิธีการแทนที่พฤติกรรมนี้ผ่าน html, css หรือ js หรือไม่? ฉันได้โพสต์คำถามนี้ไว้ใน stack overflow แล้ว แต่เนื่องจากเป็นสิ่งที่เกี่ยวข้องกับ apple อาจจะถามถึงความแตกต่าง
dennismuijs

1
StackOverflow (หรือแม้แต่ไซต์ SE ที่นักพัฒนาเว็บแฮงเอาท์) ดีกว่าสำหรับโฆษณาประเภทนี้มากกว่าโฆษณา (ซึ่งมุ่งเน้นที่ปัญหาของผู้ใช้ปลายทาง) เนื่องจากการเข้าถึงการควบคุมเบราว์เซอร์เป็นสิ่งสำคัญสำหรับผู้ใช้ฉันสงสัยว่ามีวิธีหลีกเลี่ยงพฤติกรรมนี้หรือไม่
nohillside

ลิงก์ไปยัง stack overflow q & a
Ben Roberts

7

ฉันคิดว่าฉันอาจพบคำตอบ การตั้งค่าเนื้อหาของคุณให้มีสไตล์ดังนี้

  • height: 100% (อนุญาตให้เนื้อหาเติมวิวพอร์ตและอยู่ด้านล่างสุด)
  • overflow-y: scroll(อนุญาตให้คุณเลื่อนด้านล่างวิวพอร์ตซึ่งเป็นค่าเริ่มต้นvisible)
  • -webkit-overflow-scrolling: touch (เพื่อทำให้พฤติกรรมการเลื่อนราบรื่นขึ้น)

ดูเหมือนว่าจะบังคับให้เมนู iOS ใน Safari ปรากฏขึ้นเสมอ ด้วยวิธีนี้การคลิกปุ่มจะใช้งานได้จริงแทนที่จะเปิดขึ้นเมนู Safari หวังว่านี่จะช่วยได้!


แน่นอนว่ามันใช้งานได้ แต่เว็บไซต์บางแห่งเท่านั้นที่สามารถทนต่อการตั้งค่าoverflow-y: scrollในพื้นที่เนื้อหาหลักของพวกเขา แฮ็คนี้มีผลข้างเคียงที่จะส่งผลกระทบต่อทุกองค์ประกอบของเด็ก เพื่อให้ถูกต้องยิ่งขึ้นคุณสมบัติ css เหล่านี้ส่งผลโดยตรงต่อองค์ประกอบลูกทั้งหมดและการบังคับให้เมนูซาฟารีแสดงเป็นผลข้างเคียงจริง ๆ
zevdg

ขอบคุณ ยังไม่ได้ลองแตะที่ด้านล่างของหน้าจอ แต่อย่างน้อย 10% ของการออกแบบของฉันไม่ได้รับการคุ้มครองโดยแถบเมนูของ Safari ที่น่าสะพรึงกลัว ในการเพิ่มสิ่งนี้คุณต้องให้องค์ประกอบที่มีทุกองค์ประกอบheight: 100%ด้วยเช่นกัน สำหรับ บริษัท ที่สร้างรายได้จากโทรศัพท์มือถือมากประสบการณ์การใช้เว็บบนมือถือนั้นแย่มาก
corysimmons
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.