วิธีหยุดการไฮไลต์องค์ประกอบ div เมื่อดับเบิลคลิก


94

ฉันมีองค์ประกอบ div นี้พร้อมภาพพื้นหลังและฉันต้องการหยุดไฮไลต์ในองค์ประกอบ div เมื่อดับเบิลคลิก มีคุณสมบัติ CSS สำหรับสิ่งนี้หรือไม่?


คุณอยู่ในเบราว์เซอร์ใด ในการทดสอบของฉันฉันไม่สามารถใช้ div ทั้งหมดเพื่อเน้นใน Firefox 5, Chrome 12 หรือ IE9
tw16

คำตอบ:


161

CSS ด้านล่างนี้จะป้องกันไม่ให้ผู้ใช้เลือกข้อความได้ ตัวอย่างสด: http://jsfiddle.net/hGTwu/20/

-webkit-user-select: none; /* Chrome/Safari */        
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+ */

/* Rules below not implemented in browsers yet */
-o-user-select: none;
user-select: none;

ในการกำหนดเป้าหมาย IE9 ลงและ Opera unselectableต้องใช้แอตทริบิวต์ html แทน:

<div unselectable="on">Test Text</div>

นั่นไม่ได้ป้องกันไม่ให้ไฮไลต์ทั้ง div ฉันสังเกตว่ามันใช้สำหรับข้อความเท่านั้น ฉันต้องการป้องกันไม่ให้ div ทั้งหมดถูกไฮไลต์เมื่อดับเบิลคลิกที่มัน
dave

@dave: ฉันคิดว่าเนื่องจากการดับเบิลคลิกครั้งเดียวที่ทำให้เกิดการไฮไลต์คือเมื่อมีข้อความอยู่ในนั้นนั่นคือสิ่งที่คุณหมายถึง ไม่จำเป็นต้องลงคะแนน
tw16

1
ไม่ทำงานใน IE หรือ Opera คุณต้องการunselectableแอตทริบิวต์ ไม่มี-o-user-selectทาง
Tim Down

หมายเหตุสำหรับผู้ใช้ SASS / SCSS: คุณสามารถ@include user-select(none);ใช้ CSS ดิบแทนได้
hilnius

น่าแปลกที่สิ่งนี้ทำให้ div สามารถลากได้แม้ในขณะที่draggable = falseแต่เฉพาะใน Firefox
rovyko

53

สิ่งนี้ใช้ได้กับฉัน

html
{
  -webkit-tap-highlight-color:transparent;
}

นี่น่าจะเป็นคำตอบที่ดีที่สุด
JohnA10

11
สิ่งนี้จะเกี่ยวข้องกับเบราว์เซอร์ webkit เช่น Chrome และ Safari เท่านั้นและอาจใช้ไม่ได้กับ IE หรือ Firefox เวอร์ชันใด ๆ
Simon East

31

ฉันพยายามหาวิธีหยุดการไฮไลต์ div ใน Chrome และหันมาที่โพสต์นี้ แต่น่าเสียดายที่ไม่มีคำตอบใดช่วยแก้ปัญหาของฉันได้

หลังจากการค้นคว้าทางออนไลน์มากมายฉันพบว่าการแก้ไขเป็นสิ่งที่ง่ายมาก ไม่จำเป็นต้องมี CSS ที่ซับซ้อนใด ๆ เพียงเพิ่ม CSS ต่อไปนี้ในหน้าเว็บของคุณเท่านี้คุณก็พร้อมแล้ว ซึ่งใช้ได้กับแล็ปท็อปและหน้าจอมือถือ

div { outline-style:none;}

หมายเหตุ : ใช้ได้ใน Chrome เวอร์ชัน 44.0.2403.155 ม. นอกจากนี้ยังรองรับในเบราว์เซอร์หลัก ๆ ทั้งหมดในปัจจุบันตามที่อธิบายไว้ใน url นี้: https://developer.mozilla.org/en-US/docs/Web/CSS/outline-style


8

ฉันไม่ใช่ผู้เชี่ยวชาญด้าน CSS แต่ฉันคิดว่าคุณสามารถใช้คำตอบของ tw16 ได้ตราบเท่าที่คุณขยายจำนวนองค์ประกอบที่ได้รับผลกระทบ ตัวอย่างเช่นการทำเช่นนี้จะป้องกันไม่ให้ไฮไลต์ทุกที่บนหน้าของฉันโดยไม่ส่งผลต่อการโต้ตอบประเภทอื่น

*, *:before, *:after {
    -webkit-user-select: none; /* Chrome/Safari */        
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* IE10+ */
}

บรรทัดแรกนั้นได้รับความอนุเคราะห์จาก Paul Irish (ผ่านhttp://adamschwartz.co/magic-of-css/chapters/1-the-box/ )


อย่าใช้ CSS นี้เมื่อคุณมี PWA บน iOS 13 สิ่งนี้จะบล็อกแป้นพิมพ์โดยสิ้นเชิง
เฟอร์

2

กำหนดเป้าหมายองค์ประกอบ div ทั้งหมด:

div::-moz-selection { background:transparent; }
div::selection { background:transparent; }

กำหนดเป้าหมายองค์ประกอบทั้งหมด:

::-moz-selection { background:transparent; }
::selection { background:transparent; }

1

ปิดการใช้งานผู้ใช้เลือก:

div {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

ตั้งค่าพื้นหลังโปร่งใสสำหรับองค์ประกอบที่เลือก:

div::-moz-selection { background:transparent; }
div::selection { background:transparent; }

3
แม้ว่าข้อมูลโค้ดนี้จะช่วยแก้ปัญหาได้ แต่การมีคำอธิบายจะช่วยปรับปรุงคุณภาพของโพสต์ของคุณได้มาก โปรดจำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตและบุคคลเหล่านั้นอาจไม่ทราบสาเหตุของการแนะนำโค้ดของคุณ
msrd0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.