दिलचस्प पोस्ट
छिपे हुए माता-पिता div में बाल अवकाश दिखाएं रेल 4 में एट्रि_ पहुंच-योग्य कैसे उपयोग किया जाता है? क्या वंश के घटनाक्रम श्रोताओं को नष्ट किए बिना आंतरिक एचटीएमएल में शामिल करना संभव है? मैं जावास्क्रिप्ट में एक दो आयामी सरणी कैसे बना सकता हूं? "प्रतीक्षा कार्य" के बीच कोई अंतर। वापसी; "और" वापसी कार्य। चला () "? एक्सएचआर अनुरोध से ब्लॉब डेटा प्राप्त करना सरलतम / क्लीननेट को जावास्क्रिप्ट में कार्यान्वित करने के लिए सबसे सरल तरीका है? जावास्क्रिप्ट में स्थिर चर सीएसएस गुण: प्रदर्शन बनाम दृश्यता तुलना () और तुलना () के बीच अंतर क्या है? ई -11000 डुप्लिकेट कुंजी त्रुटि इंडेक्स मोंगोडब मॉंगोज़ में FileSystemWatcher बनाम मतदान में परिवर्तन के लिए देखने के लिए मैं नोड.जेएस वेब अनुप्रयोग में मोंगोडीबी कनेक्शन कैसे प्रबंधित करूं? जावा में पायथन कॉलिंग? JQuery में हर 5 सेकंड फ़ंक्शन को कॉल करने का सबसे आसान तरीका क्या है?

सीएसएस का उपयोग कर पाठ चयन हाइलाइटिंग को अक्षम कैसे करें?

एंकर जो बटंस (उदाहरण के लिए, स्टैक ओवरफ्लो पृष्ठ के शीर्ष पर प्रश्न , टैग , उपयोगकर्ता आदि आदि) की तरह कार्य करते हैं, क्या हाइलाइटिंग प्रभाव को अक्षम करने के लिए कोई सीएसएस मानक तरीका है, अगर उपयोगकर्ता अकस्मात पाठ का चयन करता है?

मुझे एहसास है कि यह जावास्क्रिप्ट के साथ किया जा सकता है, और एक छोटी गोगलिंग ने मोज़िला-केवल -moz-user-select विकल्प का मुकाबला किया

क्या यह सीएसएस के साथ पूरा करने के लिए एक मानक-अनुरूप तरीका है, और यदि नहीं, तो "सर्वोत्तम अभ्यास" दृष्टिकोण क्या है?

वेब के समाधान से एकत्रित समाधान "सीएसएस का उपयोग कर पाठ चयन हाइलाइटिंग को अक्षम कैसे करें?"

जनवरी, 2017 का अद्यतन करें:

क्या मैं उपयोग कर सकता हूँ , user-select वर्तमान में इंटरनेट एक्सप्लोरर 9 और पिछले संस्करणों को छोड़कर सभी ब्राउज़रों में समर्थित है (लेकिन दुर्भाग्यवश अभी भी एक विक्रेता उपसर्ग की जरूरत है)।


सभी सही सीएसएस विविधताएं हैं:

 .noselect { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ } 
 <p> Selectable text. </p> <p class="noselect"> Unselectable text. </p> 

अधिकांश ब्राउज़रों में, यह सीएसएस user-select संपत्ति पर स्वामित्व विविधताओं का उपयोग करके प्राप्त किया जा सकता है, मूल रूप से प्रस्तावित है और फिर CSS3 में त्याग दिया गया है और अब सीएसएस UI स्तर 4 में प्रस्तावित किया गया है:

 *.unselectable { -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; /* Introduced in IE 10. See http://ie.microsoft.com/testdrive/HTML5/msUserSelect/ */ -ms-user-select: none; user-select: none; } 

आईई <10 और ओपेरा <15 के लिए, आपको ऐसे तत्व की unselectable विशेषता का उपयोग करना होगा जो आप अभावी होने के लिए चाहते हैं आप HTML में एक विशेषता का उपयोग करके इसे सेट कर सकते हैं:

 <div id="foo" unselectable="on" class="unselectable">...</div> 

अफसोस की बात है कि यह संपत्ति विरासत में नहीं मिली है, जिसका अर्थ है कि आपको <div> अंदर प्रत्येक तत्व के प्रारंभिक टैग में एक विशेषता <div> । यदि यह एक समस्या है, तो आप इसके बजाय एक तत्व के वंश के लिए यह करने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं:

 function makeUnselectable(node) { if (node.nodeType == 1) { node.setAttribute("unselectable", "on"); } var child = node.firstChild; while (child) { makeUnselectable(child); child = child.nextSibling; } } makeUnselectable(document.getElementById("foo")); 

30 अप्रैल 2014 को अपडेट करें : इस वृक्ष ट्रसर्सल को फिर से चलाने की आवश्यकता होती है जब भी कोई नया तत्व वृक्ष में जोड़ा जाता है, लेकिन यह @ हन द्वारा एक टिप्पणी से लगता है कि यह एक मूसडुअन ईवेंट हैंडलर जोड़कर संभव है, जो उस पर unselectable घटना का लक्ष्य विवरण के लिए http://jsbin.com/yazekiji/1 देखें।


यह अभी भी सभी संभावनाओं को शामिल नहीं करता है हालांकि, अदृश्य तत्वों में चयन शुरू करना असंभव है, कुछ ब्राउज़रों (उदाहरण के लिए आईई और फ़ायरफ़ॉक्स, उदाहरण के लिए), उन सभी चयनों को रोकने के लिए अभी भी असंभव है, जो बिना अचयनित तत्व के पूरे होने पर समाप्त हो जाते हैं और पूरे दस्तावेज़ को अचयनित किए बिना

IE के लिए एक जावास्क्रिप्ट समाधान है

 onselectstart="return false;" 

जब तक सीएसएस 3 का उपयोगकर्ता-चयन संपत्ति उपलब्ध नहीं हो जाती है, गीको- आधारित -moz-user-select संपत्ति का समर्थन करती है जिसे आपने पहले ही पाया है। वेबकिट और ब्लिंक-आधारित ब्राउज़र -webkit-user-select संपत्ति का समर्थन करते हैं।

यह निश्चित रूप से ब्राउज़र में समर्थित नहीं है जो Gecko रेंडरिंग इंजन का उपयोग नहीं करते हैं।

ऐसा करने के लिए कोई मानक "मानक" अनुरूप नहीं है – आसान और आसान तरीका है; जावास्क्रिप्ट का प्रयोग करना एक विकल्प है।

असली सवाल यह है, क्यों आप चाहते हैं कि उपयोगकर्ताओं को हाइलाइट करने में सक्षम न हो और संभवतः कुछ तत्वों को कॉपी और पेस्ट कर सकें? मैं एक ही समय में नहीं आया हूं कि मैं अपनी वेबसाइट के एक निश्चित हिस्से को उजागर नहीं करने देना चाहता था। मेरे कई दोस्त, कई घंटे पढ़ना और लिखना कोड के बाद हाइलाइट फीचर का उपयोग करने के तरीके को याद करने का एक तरीका के रूप में, जहां वे थे, या एक मार्कर प्रदान करने के तरीके के रूप में उपयोग करेंगे ताकि उनकी आंखों को पता चल जाए कि अगले किन तक देखना है।

एकमात्र जगह मैं यह उपयोगी साबित कर सकता था कि यदि आपके पास ऐसे फॉर्म के लिए बटन होते हैं जिन्हें कॉपी और चिपकाया नहीं जाना चाहिए, यदि कोई उपयोगकर्ता वेबसाइट को कॉपी और चिपकाता है

यदि आप <p> तत्वों को छोड़कर सब कुछ पर पाठ चयन को अक्षम करना चाहते हैं, तो आप इसे सीएसएस में कर सकते हैं ( -moz-none जो उप-तत्वों में ओवरराइड की अनुमति देता है, जो कि अन्य ब्राउज़र में अनुमति none ):

 * { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: -moz-none; -o-user-select: none; user-select: none; } p { -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -o-user-select: text; user-select: text; } 

आप फ़ायरफ़ॉक्स और सफारी में ऐसा कर सकते हैं (क्रोम भी?)

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

उपरोक्त समाधान चयन में रोक दिया गया है, लेकिन उपयोगकर्ता अभी भी सोचता है कि आप पाठ चुन सकते हैं क्योंकि कर्सर अभी भी बदलता है। इसे स्थिर रखने के लिए, आपको अपना सीएसएस कर्सर सेट करना होगा:

 .noselect { cursor: default; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } 
 <p> Selectable text. </p> <p class="noselect"> Unselectable text. </p> 

वेबकिट के लिए वैकल्पिक हल:

 /* Disable tap highlighting */ -webkit-tap-highlight-color: rgba(0,0,0,0); 

मैंने इसे CardFlip उदाहरण में पाया।

मुझे हाइब्रिड सीएसएस + jQuery समाधान पसंद है I

<div class="draggable"></div> अंदर सभी तत्वों को अचयनित करने के लिए, इस सीएसएस का उपयोग करें:

 .draggable { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; } .draggable input { -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -o-user-select: text; user-select: text; } 

और फिर, यदि आप jQuery का उपयोग कर रहे हैं, तो इसे $(document).ready() अंदर जोड़ें $(document).ready() ब्लॉक:

 if (($.browser.msie && $.browser.version < 10) || $.browser.opera) $('.draggable').find(':not(input)').attr('unselectable', 'on'); 

मुझे लगता है कि आप अभी भी चाहते हैं कि कोई इनपुट तत्व इंटरैक्ट करने योग्य हों, इसलिए :not() छद्म-चयनकर्ता यदि आप परवाह नहीं करते हैं तो आप इसके बजाय '*' उपयोग कर सकते हैं

चेतावनी: IE9 को इस अतिरिक्त jQuery के टुकड़े की ज़रूरत नहीं है, इसलिए आप इसमें एक संस्करण की जांच जोड़ना चाहेंगे।

 .hidden:after { content: attr(data-txt); } 
 <p class="hidden" data-txt="Some text you don't want to be selected"></p> 

इसके अलावा इंटरनेट एक्सप्लोरर के लिए, आपको छद्म वर्ग फोकस (.लैस: फ़ोकस) और रूपरेखा-शैली को जोड़ने की आवश्यकता है : कोई नहीं

 .ClassName, .ClassName:focus { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; outline-style:none;/*IE*/ } 

काम कर रहे

सीएसएस:

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

यह काम करना चाहिए, लेकिन यह पुराने ब्राउज़रों के लिए काम नहीं करेगा। ब्राउज़र संगतता समस्या है

जिन लोगों को टच इवेंट के साथ एंड्रॉइड ब्राउज़र में एक ही समस्या प्राप्त करने में परेशानी होती है, उनका उपयोग करें:

 html,body{ -webkit-touch-callout: none; -webkit-user-select: none; -webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-tap-highlight-color: transparent; } 
 -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none; *.unselectable { -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; } 
 <div id="foo" unselectable="on" class="unselectable">...</div> 
 function makeUnselectable(node) { if (node.nodeType == 1) { node.unselectable = true; } var child = node.firstChild; while (child) { makeUnselectable(child); child = child.nextSibling; } } makeUnselectable(document.getElementById("foo")); 
 -webkit-user-select:none; -moz-user-select:none; 
 onselectstart="return false;" 
 ::selection { background: transparent; } ::-moz-selection { background: transparent; } * { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: -moz-none; -o-user-select: none; user-select: none; } p { -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -o-user-select: text; user-select: text; } 
 <div class="draggable"></div> 
 .draggable { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; user-select: none; } .draggable input { -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -o-user-select: text; user-select: text; } 
 if ($.browser.msie) $('.draggable').find(':not(input)').attr('unselectable', 'on'); 

यदि आप कम और बूटस्ट्रैप का प्रयोग कर रहे हैं तो आप लिख सकते हैं:

 .user-select(none); 

मोज़िला-केवल संपत्ति के अलावा, नहीं, केवल मानक सीएसएस (अब के रूप में) के साथ टेक्स्ट चयन को अक्षम करने का कोई तरीका नहीं है।

यदि आप देख रहे हैं, स्टैक ओवरफ्लो उनके नेविगेशन बटन के लिए पाठ चयन को अक्षम नहीं करता है, और मैं ज्यादातर मामलों में ऐसा करने के बारे में सिफारिश करेगा, क्योंकि यह सामान्य चयन व्यवहार को संशोधित करता है और यह उपयोगकर्ता की उम्मीदों के साथ संघर्ष करता है।

यह कुछ ब्राउज़रों में काम करता है:

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

आसानी से अपने वांछित तत्वों / एड्स को बिना चयन के स्पेस के कॉमावास से अलग करें, जैसे:

 h1::selection,h2::selection,h3::selection,p::selection{ background-color: transparent;} h1::moz-selection,h2::moz-selection,h3::moz-selection,p::moz-selection{ background-color: transparent;} h1::webkit-selection,h2::webkit-selection,h3::webkit-selection,p::webkit-selection{ background-color: transparent;} 

अन्य जवाब बेहतर हैं; यह संभवतः एक अंतिम उपाय / कैचॉल के रूप में देखा जाना चाहिए।

मान लीजिए कि इस तरह से दो div हैं

 .second { cursor: default; user-select: none; -webkit-user-select: none; /* Chrome/Safari/Opera */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE/Edge */ -webkit-touch-callout: none; /* iOS Safari */ } 
 <div class="first"> This is my first div </div> <div class="second"> This is my second div </div> 

इसे प्रथम div में जोड़ें, जिसमें आप टेक्स्ट के चयन को अक्षम करना चाहते हैं:

 onmousedown='return false;' onselectstart='return false;' 

ध्यान दें:

सही उत्तर सही है कि यह आपको पाठ चुनने में सक्षम होने से रोकता है। हालांकि, यह आपको पाठ की प्रतिलिपि बनाने में सक्षम नहीं होने से रोकता है, क्योंकि मैं अगले कुछ स्क्रीनशॉट्स के साथ दिखाऊंगा (7 नवम्बर 2014 तक)।

इससे पहले कि हमने कुछ भी चुना है

हमारे द्वारा चयनित होने के बाद

संख्याएं कॉपी की गई हैं

जैसा कि आप देख सकते हैं, हम संख्याओं का चयन करने में असमर्थ थे, लेकिन हम उन्हें कॉपी करने में सक्षम थे।

पर परीक्षण: उबंटु , गूगल क्रोम 38.0.2125.111

यह उपयोगी होगा यदि रंग चयन की भी आवश्यकता नहीं है:

 ::-moz-selection { background:none; color:none; } ::selection { background:none; color:none; } 

… अन्य सभी ब्राउज़र फिक्सेस यह इंटरनेट एक्सप्लोरर 9 या बाद में काम करेगा।

यह सीएसएस नहीं है, लेकिन यह उल्लेख के लायक है:

jQuery UI अक्षम चयन :

 $("your.selector").disableSelection(); 

नतीजा पाने के लिए मुझे जरूरी चाहिए कि मुझे दोनों ::selection और user-select

 input.no-select:focus { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } input.no-select::selection { background: transparent; } input.no-select::-moz-selection { background: transparent; } 

यद्यपि यह छद्म तत्व सीएसएस चयनकर्ता स्तर 3 के ड्राफ्ट में था, इसे उम्मीदवार की सिफारिश चरण के दौरान हटा दिया गया था, क्योंकि यह प्रकट हुआ कि उसका व्यवहार विशेषकर नेस्टेड तत्वों के साथ था, और अंतरालन हासिल नहीं किया गया था।

नेस्टेड तत्वों पर कैसे काम करता है: इस पर चर्चा की जा रही है

इसके बावजूद ब्राउज़र में कार्यान्वित किया जा रहा है, आप टैब डिज़ाइन (आपके मामले में) के चयन पर एक ही रंग और पृष्ठभूमि रंग का उपयोग करके चयनित पाठ का भ्रम नहीं बना सकते हैं।

सामान्य सीएसएस डिजाइन

 p { color: white; background: black; } 

चयन पर

 p::-moz-selection { color: white; background: black; } p::selection { color: white; background: black; } 

प्रयोक्ताओं को टेक्स्ट चुनने की अनुमति देने से प्रयोज्यता समस्याएं बढ़ जाएंगी

जावास्क्रिप्ट के बिना अपने समाधान की जांच करें:

jsFiddle

 li:hover { background-color: silver; } #id1:before { content: "File"; } #id2:before { content: "Edit"; } #id3:before { content: "View"; } 
 <ul> <li><a id="id1" href="www.w1.com"></a> <li><a id="id2" href="www.w2.com"></a> <li><a id="id3" href="www.w3.com"></a> </ul> 

मैंने सीएसएस-ट्रिक्स वेबसाइट से सीखा है

 user-select: none; 

और यह भी:

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

आप उस के लिए सीएसएस या जावास्क्रिप्ट का उपयोग कर सकते हैं, पुरानी ब्राउज़र में पुरानी ब्राउज़र में जावास्क्रिप्ट तरीके का समर्थन भी किया जा सकता है, लेकिन यदि यह आपका मामला नहीं है, तो सीएसएस तरीके का उपयोग करें:

HTML / जावास्क्रिप्ट:

 <body onselectstart='return false;'> <h1>This is the Heading!</h1> <p>And I'm the text, I won't be selected if you select me.</p> </body> 
  -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; 

इस एक का उपयोग करने का प्रयास करें:

 ::selection { background: transparent; } 

और अगर आप किसी विशेष तत्व के अंदर चयन नहीं करना चाहते हैं, तो बस चयन नियम से पहले तत्व वर्ग या आईडी डालें, जैसे:

 .ClassNAME::selection { background: transparent; } #IdNAME::selection { background: transparent; } 

इस हाइलाइटिंग प्रभाव के कारण होवर (ऑनमोहाउवर) नामक कार्रवाई के कारण है। जब आप किसी भी टैब पर होवर करेंगे, तो उसका रंग बदल जाएगा। बस उदाहरण के लिए कहें

 <div class="menu"> <ul class="effect"> <li>Questions </li> <li>JOBS </li> <li>Users</li> </ul> </div> <!-- CSS CODE --> .effect:hover{ color: none; } 

यदि आप इसे हाइलाइट करना चाहते हैं, तो आप किसी भी रंग दे सकते हैं, फिर भी आप कोई भी नहीं दे सकते।