27
วิธีการป้องกันเอฟเฟกต์โฮเวอร์แบบเหนียวสำหรับปุ่มบนอุปกรณ์ระบบสัมผัส
ฉันได้สร้างม้าหมุนที่มีปุ่มก่อนหน้าและปุ่มถัดไปที่สามารถมองเห็นได้เสมอ ปุ่มเหล่านี้มีสถานะโฮเวอร์พวกเขาเปลี่ยนเป็นสีน้ำเงิน บนอุปกรณ์ระบบสัมผัสเช่น iPad สถานะโฮเวอร์จะเหนียวดังนั้นปุ่มจะยังคงเป็นสีฟ้าหลังจากแตะ ฉันไม่ต้องการสิ่งนั้น ฉันสามารถเพิ่มno-hoverคลาสontouchendสำหรับแต่ละปุ่มและทำให้ CSS เป็นแบบนี้: button:not(.no-hover):hover { background-color: blue; }แต่มันอาจจะไม่ดีสำหรับประสิทธิภาพและไม่ได้จัดการอุปกรณ์เช่น Chromebook Pixel (ซึ่งมีทั้งหน้าจอสัมผัสและเมาส์) อย่างถูกต้อง ฉันสามารถเพิ่มtouchคลาสให้กับdocumentElementและทำให้ CSS ของฉันเป็นแบบนี้: html:not(.touch) button:hover { background-color: blue; }แต่มันก็ไม่ทำงานบนอุปกรณ์ที่มีทั้งการสัมผัสและเมาส์ ontouchendสิ่งที่ผมต้องการคือการเอารัฐเลื่อน แต่ดูเหมือนว่าจะเป็นไปไม่ได้ การมุ่งเน้นองค์ประกอบอื่นไม่ได้ลบสถานะโฮเวอร์ การแตะองค์ประกอบอื่นด้วยตนเองทำได้ แต่ฉันไม่สามารถเรียกใช้งานได้ใน JavaScript การแก้ปัญหาทั้งหมดที่ฉันพบดูเหมือนไม่สมบูรณ์ มีวิธีแก้ไขปัญหาที่สมบูรณ์แบบหรือไม่
144
javascript
css
hover
touch