පෙළ තේරීම ඉස්මතු කිරීම අක්‍රීය කරන්නේ කෙසේද


5204

බොත්තම් මෙන් ක්‍රියා කරන නැංගුරම් සඳහා (උදාහරණයක් ලෙස ප්‍රශ්න , ටැග් ස්ටක් පිටාර ගැලීම් පිටුවේ ඉහළින් ඇති , පරිශීලකයින් යනාදිය) හෝ ටැබ් සඳහා, පරිශීලකයා අහම්බෙන් පෙළ තෝරා ගන්නේ නම් උද්දීපනය කිරීමේ බලපෑම අක්‍රිය කිරීමට CSS සම්මත ක්‍රමයක් තිබේද?

මෙය ජාවාස්ක්‍රිප්ට් සමඟ කළ හැකි බව මට වැටහී ඇති අතර කුඩා ගොග්ලිං මඟින් මොසිල්ලා පමණක් ලබා දී ඇත -moz-user-select විකල්පය ලබා දී ඇත.

CSS සමඟ මෙය සාක්ෂාත් කර ගැනීම සඳහා සම්මත අනුකූල ක්‍රමයක් තිබේද, එසේ නොවේ නම්, “හොඳම පුහුණුවීම්” ප්‍රවේශය කුමක්ද?


7
මූලද්රව්ය මායාකාරිය තුළ ඇති මූලද්රව්ය ඉස්මතු කිරීම අබල කර ඇති අතර, ශෛලිය හෝ පන්ති ගුණාංගය තුළ CSS සමඟ උද්දීපනය කර තිබේද? හෝ වෙනත් වචන වලින් කිවහොත්, -webkit-user-select ect සඳහා වෙනත් අගයන් තිබේද? වෙන කිසිවක් හැර?

7
ආශ්‍රිත: stackoverflow.com/questions/16600479/… = ළමා අංග කිහිපයක් පමණක් තෝරා ගැනීමට ඉඩ දෙන්නේ කෙසේද
ජේ.කේ.

9
සමහර බ්‍රව්සර්වල දෝෂයක් ඇති අතර “සියල්ල තෝරන්න” (CTRL + A සහ ​​CMD + A) තවමත් දේවල් තෝරා ගනී. මෙය විනිවිද පෙනෙන තේරීමේ වර්ණයකින් සටන් කළ හැකිය: ::selection { background: transparent; } ::-moz-selection { background: transparent; }
DaAwesomeP

12
මට කියන්න පුළුවන්ද: කරුණාකර මෙය නොකරන්න. මගේ අත්දැකීම් අනුව, බොත්තමක් ලෙස සේවය කරන යම් පෙළක් වෙනත් තැනක පිටපත් කර ඇලවීමට මට බොහෝ විට අවශ්‍ය නොවේ. සමහර වෙබ් සංවර්ධකයින් මා වෙනුවෙන් මෙම අංගය හිතාමතාම අක්‍රීය කිරීමට පිටත්ව ගිය හෙයින් එය කිරීමට නොහැකි වීම නොසිතූ ලෙස කෝපයට පත් වනු ඇත. එබැවින් ඔබට ඉතා හොඳ හේතුවක් නොමැති නම් කරුණාකර මෙය නොකරන්න .
kajacx

3
වසර 2017 දී, එය භාවිතා කිරීමට වඩා හොඳ ක්රමයක් වන postcssඅතර autoprefixerපසුව, සහ මාලාවක් බ්රව්සර් postcssසියල්ල සිසිල් කරන්න.
අමර්ලිකා

Answers:


7325

2017 ජනවාරි යාවත්කාලීන කරන්න:

Can I use ට අනුව , user-selectඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 9 සහ ඊට පෙර අනුවාදයන් හැර අනෙකුත් සියලුම බ්‍රව්සර්වල දැනට සහය දක්වයි (නමුත් කනගාටුවට කරුණක් නම් තවමත් විකුණුම් උපසර්ගයක් අවශ්‍ය වේ).


සියලුම නිවැරදි CSS වෙනස්කම්:

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


user-selectප්‍රමිතිකරණ ක්‍රියාවලියේ පවතින බව සලකන්න (දැනට W3C වැඩ කරන කෙටුම්පතක ). සෑම තැනකම වැඩ කිරීම සහතික කර නොමැති අතර, බ්‍රව්සර් අතර ක්‍රියාත්මක කිරීමේ වෙනස්කම් තිබිය හැකි අතර අනාගතයේදී බ්‍රව්සර් සඳහා ඒ සඳහා සහාය ලබා දිය හැකිය.


වැඩි විස්තර මොසිල්ලා සංවර්ධක ජාල ප්‍රලේඛනයෙන් සොයාගත හැකිය .


38
ලස්සන කේත molokoloco: D, මම පෞද්ගලිකව එය භාවිතා කිරීමෙන් stay ත්ව සිටියද, සමහර විට ඔබට විවිධ බ්‍රව්සර් සඳහා වෙනස් අගයන් අවශ්‍ය විය හැකි අතර එය ජාවාස්ක්‍රිප්ට් මත රඳා පවතී. පංතියක් සාදා එය ඔබේ මූලද්‍රව්‍යයට එකතු කිරීම හෝ ඔබේ ස්ටයිල්-ෂීට් එකේ ඇති ඔබේ මූලද්‍රව්‍යයට CSS යෙදීම ඉතා වෙඩි නොවදින සාක්ෂියකි.
Blowsie

58
'පරිශීලක-තේරීම'- වටිනාකම්: කිසිවක් නැත | පෙළ | ටොගල් | මූලද්‍රව්‍යය | මූලද්‍රව්‍ය | සියල්ල | උරුම - w3.org/TR/2000/WD-css3-userint-20000216
Blowsie

34
ඇත්ත වශයෙන්ම -o-user-select ඔපෙරා හි ක්‍රියාත්මක නොවේ. එය වෙනුවට IE හි තෝරා නොගත හැකි ගුණාංගය ක්‍රියාත්මක කරයි.
ටිම් ඩවුන්

30
කිසියම් හේතුවක් නිසා, මෙය IE8 හි පමණක් ක්‍රියාත්මක නොවූ නිසා මම <div onselectstart="return false;">මගේ ප්‍රධාන අංශයට එකතු කළෙමි .
robasta

308
මෙය හාස්‍යජනකය! එකම දේ කිරීමට විවිධ ක්‍රම. පරිශීලක තේරීම් සඳහා නව ප්‍රමිතියක් කරමු. අපි එය අමතන්නෙමු standard-user-select. එවිට අපට මෙම ගැටළු ඇති නොවේ. පසුගාමී අනුකූලතාව සඳහා අප අනෙක් අයද ඇතුළත් කළ යුතුය. දැන් කේතය බවට පත්වේ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; standard-user-select: none;. අහ්, වඩා හොඳයි.
ක්ලෝඩියු

854

බොහෝ බ්‍රව්සර් වලදී, සීඑස්එස් user-selectදේපලෙහි හිමිකාර වෙනස්කම් භාවිතා කරමින් මෙය සාක්ෂාත් කරගත හැකි අතර , මුලින් යෝජනා කර පසුව CSS 3 හි අතහැර දමා දැන් CSS UI මට්ටම 4 හි යෝජනා කර ඇත :

*.unselectable {
   -moz-user-select: none;
   -khtml-user-select: none;
   -webkit-user-select: none;

   /*
     Introduced in Internet Explorer 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>. මෙය ගැටළුවක් නම්, ඔබට ඒ වෙනුවට ජාවාස්ක්‍රිප්ට් භාවිතා කර මූලද්‍රව්‍යයෙන් පැවත එන්නන් සඳහා පුනරාවර්තන ලෙස මෙය කළ හැකිය:

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"));

යාවත්කාලීන කිරීම 2014 අප්‍රියෙල් 30 : ගසට නව මූලද්‍රව්‍යයක් එකතු කළ සෑම අවස්ථාවකම මෙම ගස් ගමන් කිරීම නැවත ක්‍රියාත්මක කළ යුතුය, නමුත් an හෑන් විසින් කරන ලද ප්‍රකාශයකින් පෙනී යන්නේ ඉලක්කයේ ඉලක්කය mousedownසකසන සිදුවීම් හසුරුවන්නෙකු එකතු කිරීමෙන් මෙය වළක්වා ගත හැකි බවයි unselectable. සිද්ධිය. වැඩි විස්තර සඳහා http://jsbin.com/yagekiji/1 බලන්න.


මෙය තවමත් සියලු හැකියාවන් ආවරණය නොකරයි. තෝරා නොගත හැකි මූලද්‍රව්‍ය වලින් තෝරා ගැනීම ආරම්භ කළ නොහැකි අතර, සමහර බ්‍රව්සර්වල (උදාහරණයක් ලෙස ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සහ ෆයර්ෆොක්ස්), සම්පූර්ණ ලේඛනයම තෝරා නොගත හැකි ලෙස තෝරා නොගත හැකි මූලද්‍රව්‍යයට පෙර ආරම්භ වී අවසන් වන තේරීම් වලක්වා ගත නොහැක.


30
ඔබ ඔබේ උදාහරණයෙන් * තේරීම් කාරකය ඉවත් කළ යුතුය, එය සැබවින්ම කාර්යක්ෂම වන අතර ඔබේ උදාහරණයේ එය භාවිතා කිරීමේ අවශ්‍යතාවයක් නොමැතිද?
Blowsie

66
@Blowsie: මම හිතන්නේ නැහැ: බව CSS 2 පිරිවිතර රාජ්යයන් *.fooහා .fooහරියටම සමාන වේ (දෙවන නඩුව, විශ්වීය තේරීම් (දී *බ්රවුසරය quirks මර්දන නිසා, මම ඇතුළු පේන්න නැහැ) අදහස් කරන්නේ), *කැමැත්ත හානියක් කාර්ය සාධනය. *කියවීම සඳහා මා මුලින් කිරීමට පටන් ගත් දේ ඇතුළත් කිරීම මගේ දිගුකාලීන පුරුද්දකි : බැලූ බැල්මට එය පැහැදිලිවම සඳහන් කරන්නේ කතුවරයා සියලු අංග සමඟ සැසඳීමට අදහස් කරන බවයි.
ටිම් ඩවුන්

38
තව දුරටත් කියවීමෙන් පසු, එය යතුර ලෙස භාවිතා කරන විට එය කාර්යක්ෂම නොවන බව පෙනේ (ධර්මිෂ් select තේරීම් කාරකය) එනම්. තෝරා නොගත හැකි *. වැඩි විස්තර මෙතැනින් code.google.com/speed/page-speed/docs/…
Blowsie

20
පන්තිය = "තෝරා නොගත හැකි" භාවිතා කරනවා වෙනුවට, ගුණාංග තේරීම භාවිතා කරන්න [unselectable = "on"] {…}
ක්‍රිස් කැලෝ

13
Ran ෆ්‍රැන්සිස්: නැත. මම කලින් අදහස් දැක්වීමේදී බ්ලූසිට පැවසූ පරිදි, එය හරියටම වෙනසක් නැත.
ටිම් ඩවුන්

196

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සඳහා ජාවාස්ක්‍රිප්ට් විසඳුමක්:

onselectstart="return false;"

55
අමතක කරන්න ondragstartඑපා!
මතියස් බයිනන්ස්

9
මෙහි තවත් දෙයක්. ඔබ එය ශරීරයට එකතු කළහොත් ඔබට පෙළපොත් තුළ හෝ IE හි ආදාන ක්ෂේත්‍ර තුළ පෙළ තෝරා ගැනීමට නොහැකි වනු ඇත. IE සඳහා මා එය සවි කළ ආකාරය. body.onselectstart = function(e) { if (e.target.nodeName != "INPUT" && e.target.nodeName != "TEXTAREA") { e.preventDefault(); return false; } return true; }
TheBrain

2
මෙය jQuery - $ ("p") භාවිතා කර ගුණාංගයක් ලෙස එකතු කළ හැකිය. Attr ("onselectstart", "false අසන්න") IE8 හි මට ඇති එකම විශ්වාසදායක ක්‍රමය මෙයයි
Matt

13
ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් හි පැරණි සංස්කරණවල වැඩ නොකරන නිසා අබුදායා? එය, මෙම පිළිතුරේ සමස්ත කරුණ මෙන් ය.
පෙක්කා

?? මම inputභාවිතා කළත් මට සෑම විටම මූලද්‍රව්‍යවල පෙළ තෝරා ගත හැකිය user-select: none. මෙය වළක්වා ගන්නේ කෙසේදැයි මට දැන ගැනීමට අවශ්‍යයි
oldboy

191

CSS 3 හි පරිශීලක-තෝරාගත් දේපල ලබා ගන්නා තෙක් , ඔබ දැනටමත් සොයාගෙන ඇති දේපල සඳහා Gecko- පදනම් වූ බ්‍රව්සර් සහාය දක්වයි -moz-user-select. වෙබ්කිට් සහ බ්ලින්ක් මත පදනම් වූ බ්‍රව්සර් -webkit-user-selectදේපල සඳහා සහය දක්වයි .

Gecko විදැහුම්කරණ එන්ජිම භාවිතා නොකරන බ්‍රව්සර් වල මෙය ඇත්ත වශයෙන්ම සහය නොදක්වයි.

එය කිරීමට "ප්‍රමිති" අනුකූල ඉක්මන් හා පහසු ක්‍රමයක් නොමැත; JavaScript භාවිතා කිරීම විකල්පයකි.

ඇත්තම ප්‍රශ්නය නම්, පරිශීලකයන්ට උද්දීපනය කිරීමට නොහැකි වීමටත්, සමහර අංග පිටපත් කර ඇලවීමටත් ඔබට අවශ්‍ය ඇයි? මගේ වෙබ් අඩවියේ යම් කොටසක් ඉස්මතු කිරීමට පරිශීලකයින්ට ඉඩ නොදීමට මට එක වරක්වත් හමු වී නැත. මගේ මිතුරන් කිහිප දෙනෙක්, පැය ගණනක් කේත කියවීම සහ ලිවීමෙන් පසු ඔවුන් ඉස්මතු වූ අංගය ඔවුන් සිටි පිටුවේ කොතැනදැයි මතක තබා ගැනීමට හෝ සලකුණු ලබා දීමෙන් ඔවුන්ගේ ඇස් ඊළඟට බැලීමට කොතැනදැයි දැන ගනු ඇත.

මෙය ප්‍රයෝජනවත් යැයි මට පෙනෙන එකම ස්ථානය නම්, ඔබ විසින් පිටපත් නොකළ යුතු පෝරම සඳහා බොත්තම් තිබේ නම් සහ පරිශීලකයෙකු වෙබ් අඩවිය පිටපත් කර අලවා තිබේ නම්.


20
බොත්තම් කාරණය හරියටම මගේ අභිප්රේරණය වනු ඇත.
ක්‍රීම්

27
මෙය අවශ්‍ය වීමට තවත් හේතුවක් වන්නේ ජාලක හෝ වගුවක පේළි කිහිපයක් තෝරා ගැනීමට Shift ක්ලික් කිරීමයි. ඔබට පෙළ ඉස්මතු කිරීමට අවශ්‍ය නැත, ඔබට එය පේළි තෝරා ගැනීමට අවශ්‍යය.
ගෝර්ඩන් ටකර්

7
වෙනත් කෙනෙකුගේ අන්තර්ගතය නීත්‍යානුකූලව නැවත ප්‍රකාශයට පත් කරන නීතිමය ගැටළු ද ඇත, නමුත් බලපත්‍රයේ වගන්තියක් මඟින් වෙබ් ප්‍රකාශකයන්ට පෙළ පහසුවෙන් පිටපත් කර ඇලවීම වැළැක්විය යුතුය. මෙම ප්‍රශ්නය සොයා ගැනීමට මා පෙලඹුණේ මෙයයි. මම අවශ්‍යතාවයට එකඟ නොවන නමුත් මම ගිවිසුම්ගත වන සමාගම එය මේ ආකාරයෙන් ක්‍රියාත්මක කිරීමට නීත්‍යානුකූලව බැඳී සිටී.
ක්‍රේග් එම්

5
RaCraigM CSS විලාසය පුද්ගලයෙකුට HTML ප්‍රභවය අල්ලා එය පිටපත් කිරීම වළක්වන්නේ නැත. ඔබේ අන්තර්ගතය ආරක්ෂා කිරීමට ඔබට අවශ්‍ය නම් ඔබට වඩා හොඳ ක්‍රම සොයා ගැනීමට සිදුවේ.
Agile Jedi

27
ඇදගෙන යාමේ විශාල අන්තර්ක්‍රියාකාරී වෙබ් යෙදුමකි ... අහම්බෙන් ඉස්මතු කිරීම විශාල භාවිතයේ ගැටලුවකි.
මාක් හියුස්

138

ඔබට <p>මූලද්‍රව්‍ය හැර සෑම දෙයකම පෙළ තේරීම අක්‍රිය කිරීමට අවශ්‍ය නම් , ඔබට මෙය CSS හි කළ හැකිය ( -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;
}

12
ඔබ ආදාන ක්ෂේත්‍රද තෝරා ගත හැකි බවට වග බලා ගන්න: p, input { -webkit-user-select: text; -khtml-user-select: text; -moz-user-select: text; -o-user-select: text; user-select: text; }
joshuadelange

11
එක් අයිතමයක් හැර සෙසු කේතයන්හි බ්‍රව්සර් යූඅයි අපේක්ෂාවන් අක්‍රිය කිරීම ගැන ඉතා සැලකිලිමත් වන්න. උදාහරණයක් ලෙස ලැයිස්තු අයිතම <li /> පෙළ ගැන කුමක් කිව හැකිද?
ජේසන් ටී ෆෙදරිංහැම්

යන්තම් යාවත්කාලීන ... ෆයර්ෆොක්ස් 21 සිට MDN අනුව -moz-noneහා noneසමාන වේ.
කෙවින් ෆෙගන්

2
): පිළිවෙළින් පෙළ: පෙරනිමි හා කර්සරය: මේ සඳහා ඔබට කර්සරය එකතු විය හැක
T4NK3R

THE බෝම්බ. ඒ කියන්නේ. අවසානය. ul>* { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: -moz-none; -o-user-select: none; user-select: none; }[අනුපිළිවෙලට නැති ලැයිස්තුවක ඇති සියල්ල තෝරා, එය සම්පූර්ණ දර්ශන ගස කුණු කූඩයට දමනවාට වඩා තෝරා නොගත හැකිය.] පාඩමට ස්තූතියි. IME (ඇන්ඩ්‍රොයිඩ් ක්ලිප්බෝඩ් විජට්) දියත් කරනවාට වඩා මගේ බොත්තම් ලැයිස්තුව ඉතා හොඳ පෙනුමක් ඇති අතර තිරය තට්ටු කිරීම සහ එබීම නිවැරදිව ප්‍රතිචාර දක්වයි.
හයිපර්සොෆ්ට් පද්ධති

125

පෙර පිළිතුරු වල විසඳුම් තුළ තේරීම නවතා ඇත, නමුත් කර්සරය තවමත් වෙනස් වන නිසා ඔබට පෙළ තෝරා ගත හැකි බව පරිශීලකයා තවමත් සිතයි. එය ස්ථිතිකව තබා ගැනීමට, ඔබට ඔබේ CSS කර්සරය සැකසිය යුතුය:

.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>

මෙය ඩෙස්ක්ටොප් යෙදුමක මෙන් ඔබේ පෙළ මුළුමනින්ම සමතලා කරනු ඇත.


"පැතලි" යනු කුමක් සඳහාද?
kojow7

lay kojow7 "ස්ථර" වලට ප්‍රතිවිරුද්ධව. පෙළ වෙනුවට අනෙක් මූලද්‍රව්‍ය මත පාවෙමින් තිබේ. එය SVG සහ PNG රූප අතර වෙනසට සමානය.
යේටි

4
ෆයර්ෆොක්ස් සමාගමට තවමත් 2019 දී විකුණුම් උපසර්ගය අවශ්‍ය බව දැන ගැනීම පුදුමයට කරුණකි. මම නොසලකා හැරීම භාවිතා කළේ user-select: none;ප්‍රමිතිය මේ වන විට සම්මත වනු ඇතැයි සිතමින්, නමුත් කනගාටුවට කරුණක් නොවේ. ප්‍රමිති කමිටුවේ සිටින පුද්ගලයින් තවමත් විවාද කරන්නේ කුමක් දැයි ඔබ කල්පනා කරයි. "නෑ, යාලුවනේ ... මම ඇත්තටම හිතන්නේ එය user-select: cant;වඩාත් විස්තරාත්මකව පෙනෙන නිසා විය යුතුයි . "අපි මේක ඉවරයි, මයික්. අපිට ප්‍රේරිතය අතහරින්න වෙනවා. ඒක නරක ස්වරූපයක්!" "හැමෝටම ඇති! අපි මේ කාරණය ගැන ලබන මාසයේ නැවත සිතා බලමු. ප්‍රමිති කමිටු රැස්වීම කල් තැබුවා!"
මානසික වෛද්‍ය

109

ඔබට එය ෆයර්ෆොක්ස් සහ සෆාරි වලින් කළ හැකිය (ක්‍රෝම් ද?)

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

121
මම මෙය කිරීමට නිර්දේශ නොකරමි, මන්ද එය ඇත්ත වශයෙන්ම ගැටලුව විසඳන්නේ නැත; පෙළ තේරීම අක්‍රීය කිරීම - එය හුදෙක් එය සඟවයි. මෙය නරක භාවිතයට හේතු විය හැක, මන්ද මම මගේ කර්සරය පිටුව වටා ඇදගෙන ගියහොත් එය නොදැන ඕනෑම අත්තනෝමතික පෙළක් තෝරා ගත හැකිය. මෙය සියලු වර්ගවල අමුතු භාවිතයන් "දෝෂ" වලට හේතු විය හැක.
කීතාමස්

1
විනිවිද පෙනෙන ප්‍රදේශ සහිත පීඑන්ජී-පින්තූර මත ක්‍රියා නොකරයි: සෑම විටම ලා නිල් පැහැයෙන් තෝරා ගනු ඇත… කිසියම් ක්‍රියාමාර්ගයක් තිබේද?
AvL

80

සඳහා සලසන වක් මගක් WebKit පිරිසැලසුම් :

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

මම එය කාඩ්ෆ්ලිප් උදාහරණයකින් සොයාගත්තා.


1
transparentRgba වෙනුවට භාවිතා කිරීම ඇන්ඩ්‍රොයිඩ් හි ක්‍රෝම් 42 හි ද ක්‍රියා කරයි.
ක්ලින්ට් පැච්ල්

77

මම දෙමුහුන් CSS + jQuery විසඳුමට කැමතියි.

ඇතුළත ඇති සියලුම අංග <div class="draggable"></div>තෝරාගත නොහැකි කිරීමට, මෙම CSS භාවිතා කරන්න:

.draggable {
    -webkit-user-select: none;
     -khtml-user-select: none;
       -moz-user-select: none;
        -ms-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;
 }

ඉන්පසු, ඔබ jQuery භාවිතා කරන්නේ නම්, මෙය $(document).ready()බ්ලොක් එකක් තුළ එක් කරන්න :

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

ඕනෑම ආදාන අංග අන්තර්ක්‍රියාකාරී වීමට ඔබට තවමත් අවශ්‍ය බව මම සිතමි, එබැවින් :not()ව්‍යාජ තේරීම් කාරකය. ඔබට භාවිතා කළ හැකිය'*' ගන්නේ නැතිනම් ඔබට ඒ වෙනුවට .

Caveat: Internet Explorer 9 ට මෙම අමතර jQuery කෑල්ල අවශ්‍ය නොවනු ඇත, එබැවින් ඔබට එහි අනුවාද චෙක්පතක් එක් කිරීමට අවශ්‍ය විය හැකිය.


5
-Ms-user-select භාවිතා කරන්න: කිසිවක් නැත; (IE10 සඳහා) සහ ඔබේ jQuery "if" මෙය විය යුතුය: if (($ .browser.msie && $ .browser.version <10) || $ .browser.opera)
mhenry1384

පරිස්සම් වෙන්න මචං !!! එය ෆයර්ෆොක්ස් වලින් තෝරා ගැනීමට නම් ඔබ භාවිතා කළ යුතුය-moz-user-select: Normal;
නිකොලස් තෙරී

7
hen mhenry1384 jQuery.browser1.3 අනුවාදය අනුව ඉවත් කර ඇති අතර 1.9 අනුවාදයෙන් ඉවත් කර ඇත - api.jquery.com/jQuery.browser
WynandB

Yn වයිනන්ඩ් හොඳ කරුණ. කුමන CSS දේපල භාවිතා කළ යුතුද යන්න තීරණය කිරීම සඳහා පවතින්නේ කුමන ආකාරයේ "විශේෂාංග හඳුනාගැනීම" ද?
ටොම් ඔගර්

OmTomAuger ඔබට jQuery.support භාවිතා කළ හැකිය, එය ඔබට තනි විශේෂාංග පරීක්ෂා කිරීමට ඉඩ දෙයි: Link
Aequanox

69

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

එය හොඳම ක්‍රමය නොවේ.


3
ඔබට titleගුණාංගය ලෙසද භාවිතා කළ හැකිය .
දත් බුරුසුව

6
එය ඉතා නිර්මාණාත්මක විසඳුමකි. විශේෂයෙන් එය මාතෘකාව ආරෝපණය භාවිතා කළේ නම් එය තිර පා .කයන්ට වඩා හොඳ වනු ඇත.
ව්‍යාජ සවන්

4
මම එය උත්සාහ කළෙමි ( JSBin ) එය IE හි ක්‍රියා නොකරයි. අවාසනාවට පැරණි IEs පමණක් user-selectවැඩ නොකරයි.
ව්‍යාජ සවන්

1
මෙය ක්‍රෝම් හි ක්‍රියාත්මක වන විශිෂ්ට JS නොවන විකල්පයකි! නියමයි!
saricden

ලස්සනයි! ......
හුදකලා

69

ඒ සඳහා ඔබට CSS හෝ JavaScript භාවිතා කළ හැකිය .

මෙම JavaScript ආකාරයෙන් සහාය පැරණි වැනි බ්රවුසර, පැරණි මෙන්ම Internet Explorer හි සංස්කරණ, නමුත් එය ඔබගේ නඩුව නොවේ නම්, CSS ක්රමය නම් භාවිතා කරන්න:

HTML / JavaScript:

<html onselectstart='return false;'>
  <body>
    <h1>This is the Heading!</h1>
    <p>And I'm the text, I won't be selected if you select me.</p>
  </body>
</html>

HTML / CSS:

.not-selectable {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
<body class="not-selectable">
  <h1>This is the Heading!</h1>
  <p>And I'm the text, I won't be selected if you select me.</p>
</body>


59

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සඳහා, ඔබ ව්‍යාජ පන්තියක්focus එක් කළ යුතුය (. ක්ලාස් නම: අවධානය) සහ outline-style: none.

.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; /* Internet Explorer  */
}

3
classNameපංතිය සමඟ ඇති මූලද්‍රව්‍යයක් මත තේරීම ආරම්භ වන තාක් කල් මෙය IE හි ක්‍රියාත්මක වේ . මෙම JSBin බලන්න .
ව්‍යාජ සවාන්

57

මෙම පේළි CSS තුළට ඇතුළු කිරීමට උත්සාහ කර පන්ති දේපලෙහි "disHighlight" අමතන්න:

.disHighlight {
    user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    -webkit-touch-callout: none;
    -o-user-select: none;
    -moz-user-select: none;
}

51

ඉක්මන් වැටෙයි යාවත්කාලීන කිරීම

ඔබ noneසියලු CSS user-selectගුණාංග සඳහා අගය භාවිතා කරන්නේ නම් (එහි බ්‍රව්සර් උපසර්ග ඇතුළුව), මෙය තවමත් සිදුවිය හැකි ගැටළුවක් ඇත.

.div {
    -webkit-user-select: none; /* Chrome all / Safari all */
    -moz-user-select: none;    /* Firefox all             */
    -ms-user-select: none;     /* Internet Explorer  10+  */
     user-select: none;        /* Likely future           */
}

ලෙස CSS-ප්රජාතන්ත්රවාදය නොරැකි ජවිපෙ පවසයි එම ප්රශ්නය වන්නේ:

ඔබ වටා ඇති අංග තෝරා ගන්නේ නම්, වෙබ්කිට් තවමත් පෙළ පිටපත් කිරීමට ඉඩ දෙයි.

enforceසම්පූර්ණ මූලද්‍රව්‍යයක් තෝරා ගැනීමට ඔබට පහත එක භාවිතා කළ හැකිය, එයින් අදහස් වන්නේ ඔබ මූලද්‍රව්‍යයක් මත ක්ලික් කළහොත්, එම මූලද්‍රව්‍යයේ ඔතා ඇති සියලුම පෙළ තෝරා ගනු ලැබේ. මේ සඳහා ඔබ කළ යුත්තේ වටිනාකම වෙනස් noneකිරීමයි all.

.force-select {
    -webkit-user-select: all;  /* Chrome 49+     */
    -moz-user-select: all;     /* Firefox 43+    */
    -ms-user-select: all;      /* No support yet */
    user-select: all;          /* Likely future  */
}

48

ස්පර්ශ සිදුවීම සමඟ ඇන්ඩ්‍රොයිඩ් බ්‍රව්සරයේ එය සාක්ෂාත් කර ගැනීමේ අපහසුතා ඇති අය සඳහා, භාවිතා කරන්න:

html, body {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-tap-highlight-color: transparent;
}


46
-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');

46

වැඩ

CSS:

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

මෙය ක්‍රියාත්මක විය යුතුය, නමුත් එය පැරණි බ්‍රව්සර් සඳහා ක්‍රියා නොකරනු ඇත. බ්‍රව්සර් අනුකූලතා ගැටලුවක් තිබේ.


පෙර නොවූ CSS දේපල දේපලෙහි පෙර සැකසූ අනුවාද ලැයිස්තුව අවසානයේ තදින් තිබිය යුතුය. එය හොඳ නිවැරදි පුහුණුවකි, අනෙක ක්‍රෝම් / වෙබ්කිට් වෙතින් "නව අයි.ඊ. බලන්න, මෙය දැනටමත් 2012 දී විය: dev.opera.com/articles/…
FlameStorm

මම උපුටා This is because through our site compatibility work, we have experienced that many authors of (especially mobile) sites only use -webkit- prefixed CSS, thereby ignoring other vendor prefixes and not even including an unprefixed equivalent. This leads to a reduced user experience on Opera and Firefox, which don’t receive the same shiny effects such as transitions, gradients and the like, even if the browser supported those effects.
දක්වන්නෙමි

42

SASS සමඟ (SCSS syntax)

ඔබට මෙය මික්සින් සමඟ කළ හැකිය :

// Disable selection
@mixin disable-selection {
    -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 */
}

// No selectable element
.no-selectable {
    @include disable-selection;
}

HTML ටැගයක:

<div class="no-selectable">TRY TO HIGHLIGHT</div>

මෙම කෝඩ්පෙන් තුළ එය උත්සාහ කරන්න .

ඔබ ඔටෝප්‍රෙෆික්සර් භාවිතා කරන්නේ නම් ඔබට වෙනත් උපසර්ග ඉවත් කළ හැකිය.

බ්‍රව්සර් අනුකූලතාව මෙහි ඇත.


36

මොසිල්ලා පමණක් දේපල හැරුණු විට, නැත, සම්මත CSS සමඟ පෙළ තේරීම අක්‍රීය කිරීමට ක්‍රමයක් නොමැත (දැනට පවතින පරිදි).

ඔබ දුටුවහොත්, ස්ටැක් පිටාර ගැලීම ඔවුන්ගේ සංචාලන බොත්තම් සඳහා පෙළ තේරීම අක්‍රීය නොකරන අතර, සාමාන්‍ය තේරීම් හැසිරීම වෙනස් කරන අතර එය පරිශීලකයාගේ අපේක්ෂාවන් සමඟ ගැටෙන බැවින් බොහෝ අවස්ථාවලදී එසේ කිරීමට මම නිර්දේශ කරමි.


එය පරිශීලකයා අපේක්ෂා කරන හැසිරීම වෙනස් කරන බව මා එකඟ වන අතර, මෙම පෝරම ක්ෂේත්‍රය අසල වාඩි වී සිටින "අදහස් එක් කරන්න" බොත්තම වැනි දේ සඳහා එය අර්ථවත් වනු ඇත ...
X-Istence

නමුත් එය අනවශ්‍ය ක්‍රියාත්මක කිරීමේ තොරතුරු හෙළි නොකරයිද? ආදානය හෝ බොත්තම පෙළ තෝරාගත නොහැක.

onanon: බොහෝ පරිශීලකයින් බොහෝ විට ඔබේ බොත්තමෙහි පෙළ තෝරා ගැනීමට උත්සාහ නොකරනු ඇත, එබැවින් ප්‍රායෝගිකව එය එතරම් වැදගත් නොවේ. ඊට අමතරව, එසේ කිරීම සඳහා, ඔවුන්ට බොත්තමෙන් පිටත තේරීම ආරම්භ කිරීමට සිදුවේ they ඔවුන් බොත්තම ඇතුළත ක්ලික් කළහොත්, ඒ වෙනුවට ඔන්ක්ලික් හසුරුවන්නා සක්‍රීය වනු ඇත. ප්ලස්, සමහර බ්‍රව්සර් (උදා: සෆාරි) ඇත්ත වශයෙන්ම ඔබට සාමාන්‍ය බොත්තම් වල පෙළ තෝරා ගැනීමට ඉඩ දෙයි…
hbw

6
ඔබ චැට් ත්‍රෙඩ් එකකින් අදහස් මාලාවක් තෝරා ගන්නේ නම් සහ සෑම විවරණයකටම ඒ අසල ඉහළ / පහළ බොත්තමක් තිබේ නම්, අනෙක් දේවල් නොමැතිව පෙළ තෝරා ගැනීම සතුටක් වනු ඇත. පරිශීලකයා අපේක්ෂා කරන්නේ හෝ අවශ්‍ය වන්නේ එයයි. සෑම අදහසක් සමඟම බොත්තම් ලේබල පිටපත් කිරීමට / ඇලවීමට ඔහුට අවශ්‍ය නැත.
Mnebuerquo

2
උදාහරණයක් ලෙස ඔබ වෙනත් පිටුවකට හරවා යැවීම වෙනුවට div එකක් විවෘත කරන බොත්තමක් දෙවරක් ක්ලික් කළහොත් කුමක් කළ යුතුද? ද්වි-ක්ලික් කිරීම හේතුවෙන් බොත්තම සඳහා පෙළ තෝරා ගනු ලැබේ!
ගිගල

34

මෙය සමහර බ්‍රව්සර් වල ක්‍රියාත්මක වේ:

::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;}

අනෙක් පිළිතුරු වඩා හොඳ ය; මෙය බොහෝ විට අවසාන උත්සාහය / කැචල් ලෙස දැකිය යුතුය.


3
නිසැකවම දැනගත හැකි කරුණු කිහිපයක් ඇත, නමුත් මෙම විසඳුම අනිවාර්යයෙන්ම සියලුම බ්‍රව්සර් වල ක්‍රියා නොකරයි .
වොල්කර් ඊ.

33

divමේ වගේ s දෙකක් ඇතැයි සිතමු :

.second {
  cursor: default;
  user-select: none;
  -webkit-user-select: none;
  /* Chrome/Safari/Opera */
  -moz-user-select: none;
  /* Firefox */
  -ms-user-select: none;
  /* Internet Explorer/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>

කර්සරය පෙරනිමියට සකසන්න එවිට එය පරිශීලකයාට තෝරා නොගත හැකි හැඟීමක් ලබා දෙනු ඇත.

සියලුම බ්‍රව්සර්වල එයට සහය දැක්වීමට උපසර්ගය භාවිතා කළ යුතුය. උපසර්ගයක් නොමැතිව මෙය සියලු පිළිතුරු වල ක්‍රියා නොකරනු ඇත.


30

වර්ණ තේරීම ද අවශ්‍ය නොවේ නම් මෙය ප්‍රයෝජනවත් වනු ඇත:

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

... අනෙක් සියලුම බ්‍රව්සර නිවැරදි කිරීම්. එය ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 9 හෝ ඊට පසුව ක්‍රියා කරනු ඇත.


1
ඒක කරන්න color: inherit;.
යාකොව් අයින්ස්පන්

ඔව් මම එයට කැමතියි. මොසිල්ලා
ලියකියවිලි

29

පෙළ සඳහා තේරීම අක්‍රිය කිරීමට අවශ්‍ය පළමු කොටසට මෙය එක් කරන්න:

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

28

සටහන:

නිවැරදි පිළිතුර නිවැරදි බැවින් එය පෙළ තෝරා ගැනීමට නොහැකි වීම වළක්වයි. කෙසේ වෙතත්, ඊළඟ තිරපිටපත් දෙක සමඟ මම පෙන්වන පරිදි (2014 නොවැම්බර් 7 වන විට) පෙළ පිටපත් කිරීමට එය ඔබට බාධාවක් නොවේ.

අපි කිසිවක් තෝරා ගැනීමට පෙර

අපි තෝරාගත් පසු

අංක පිටපත් කර ඇත

ඔබට පෙනෙන පරිදි, අපට සංඛ්‍යා තෝරා ගැනීමට නොහැකි විය, නමුත් අපට ඒවා පිටපත් කිරීමට හැකි විය.

පරීක්ෂා කර ඇත්තේ: උබුන්ටු , ගූගල් ක්‍රෝම් 38.0.2125.111.


1
මටත් එකම ප්‍රශ්නයක් තිබුණා. මැක් ක්‍රෝම් 48.0.2564.116 සහ මැක් සෆාරි 9.0.3 මත. මැක් ෆයර්ෆොක්ස් 43.0 මගින් චරිතය පිටපත් නොකෙරේ, නමුත් ඒවා අතර අමතර අන්ත රේඛා තබා ඇත. මේ සම්බන්ධයෙන් කළ යුත්තේ කුමක්ද?
එන්එච්ඩාලි

26

මට අවශ්ය ප්රතිඵලය ලබා ගැනීම සඳහා, මම යන දෙකම භාවිතා කිරීමට සිදු සොයා ::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;
}

finalyyyyyyy ක්‍රියාත්මක වන පිළිතුරක්
oldboy

23

එය පහසුවෙන් කළ හැක්කේ:

-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;

විකල්පයක් ලෙස:

අපි ඔබට කියමු <h1 id="example">Hello, World!</h1>. ඔබට එහි අභ්‍යන්තර HTML ඉවත් කිරීමට සිදුවනු ඇත h1, මේ අවස්ථාවේ දී හෙලෝ, වර්ල්ඩ් . එවිට ඔබට CSS වෙත ගොස් මෙය කිරීමට සිදුවේ:

#example::before // You can of course use **::after** as well.
{
    content: 'Hello, World!'; // Both single-quotes and double-quotes can be used here.

    display: block; // To make sure it works fine in every browser.
}

දැන් එය හුදෙක් සිතන්නේ එය බ්ලොක්-මූලද්‍රව්‍යයක් මිස පෙළ නොවේ.



21

ජාවාස්ක්‍රිප්ට් නොමැතිව මගේ විසඳුම පරීක්ෂා කරන්න:

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>

මගේ තාක්ෂණය සමඟ උත්පතන මෙනුව යොදන ලදි: http://jsfiddle.net/y4Lac/2/


21

මෙම ව්‍යාජ මූලද්‍රව්‍යය CSS තේරීම් 3 වන මට්ටමේ කෙටුම්පත් වල පැවතුනද, අපේක්ෂක නිර්දේශ අවධියේදී එය ඉවත් කරන ලදි, මන්දයත් එහි හැසිරීම නිශ්චිතව දක්වා නොමැති බව පෙනේ, විශේෂයෙන් කැදැලි සහිත මූලද්‍රව්‍ය සමඟ වන අතර අන්තර් ක්‍රියාකාරිත්වය අත්කර ගැනීමට නොහැකි විය.

එය සාකච්ඡා කරන්නේ කෙසේද :: තෝරාගැනීම කැදැලි මූලද්‍රව්‍ය මත ක්‍රියා කරයි .

එය බ්‍රව්සර් තුළ ක්‍රියාත්මක වුවද, ටැබ් සැලසුමට අනුව (ඔබේ නඩුවේදී) තෝරාගැනීමේදී එකම වර්ණය හා පසුබිම් වර්ණය භාවිතා කිරීමෙන් පෙළ තෝරා නොගැනීම පිළිබඳ මිත්‍යාවක් ඔබට කළ හැකිය.

සාමාන්‍ය CSS නිර්මාණය

p { color: white;  background: black; }

තෝරාගැනීමේදී

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

පා select ය තෝරා ගැනීමට පරිශීලකයින්ට ඉඩ නොදීමෙන් භාවිතයේ ගැටළු මතු වේ.


නෙට්බීන්ස් ස්වයංක්‍රීයව සම්පූර්ණ කිරීම ගැන මා කතා කරන්නේ කුමක් දැයි නොදැනීමට හේතුව මෙය විය යුතුය!
බාගෙට
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.