Как отключить подсветку выделения текста? - PullRequest
4773 голосов
/ 06 мая 2009

Для якорей, которые действуют как кнопки (например, Вопросы , Теги , Пользователи и т. Д. В верхней части страницы переполнения стека) или вкладок , есть ли в CSS стандартный способ отключить эффект выделения, если пользователь случайно выделил текст?

Я понимаю, что это можно сделать с помощью JavaScript, и немного прибегнув к поиску, можно было получить только Mozilla -moz-user-select.

Существует ли совместимый со стандартами способ сделать это с помощью CSS, и если нет, то каков подход "наилучшей практики"?

Ответы [ 40 ]

10 голосов
/ 20 января 2016

Попробуйте использовать это:

::selection {
    background: transparent;
}

И если вы хотите указать, что нет выбора внутри определенного элемента, просто поместите класс или идентификатор элемента перед правилом выбора, например:

.ClassNAME::selection {
    background: transparent;
}
#IdNAME::selection {
    background: transparent;
}
10 голосов
/ 03 июня 2016

Этот эффект выделения вызван действием hover (onMouseHover). При наведении на любую вкладку ее цвет будет изменен. Просто скажи, к примеру.

<div class="menu">
 <ul class="effect">
   <li>Questions </li>
   <li>JOBS </li>
   <li>Users</li>
 </ul>
</div>

<!-- CSS CODE -->

.effect:hover{
   color: none;
}

Вы можете дать любой цвет, если хотите выделить его, иначе вы не можете дать ни одного.

9 голосов
/ 15 апреля 2016
 -webkit-user-select: none;  
  -moz-user-select: none;    
  -ms-user-select: none;      
  user-select: none;
9 голосов
/ 30 апреля 2018

Если вы хотите отключить выделение и выделение для всей страницы, вы можете легко сделать это с помощью CSS:

* {
    -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 */
  }
9 голосов
/ 06 сентября 2016

Вы можете использовать свойство User-select, как показано ниже для этого ..

p {  
     -webkit-user-select: none;  /* Chrome all / Safari all */
     -moz-user-select: none;     /* Firefox all */
     -ms-user-select: none;      /* IE 10+ */
      user-select: none;          /* Likely future */             
   }

Ссылка для подробного описания

6 голосов
/ 22 сентября 2018

с CSS-

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

  "unselectable='on' onselectstart="return false;"
  onmousedown="return false;
}
<div>
  Blabla
  <br/> More Blabla
  <br/> More Blabla...
</div>
4 голосов
/ 01 февраля 2018

Я объединил различные атрибуты выбора CSS браузера с невыбираемым тегом, необходимым для Internet Explorer <9. </p>

<style>
[unselectable="on"] {
    -webkit-user-select: none; /* Safari */
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* Internet Explorer 10+/Edge */
    user-select: none; /* Standard */
}
</style>
<div unselectable="on">Unselectable Text</div>
4 голосов
/ 31 января 2018

Еще лучше, вы можете отключить выделение текста.

Если вам нравится SASS (SCSS) и вы не хотите использовать компас, вы можете сделать это:

styles.scss

@mixin user-select($select) {
  -webkit-touch-callout:#{$select};
  @each $pre in -webkit-, -moz-, -ms-, -o-, -khtml- {
  #{$pre + user-select}: #{$select};
  }
  #{user-select}: #{$select};
}

.no-select {
  @include user-select(none);
}
1 голос
/ 02 марта 2017

Может быть, вы можете использовать это решение до:

nav li {
	display: inline-block;
	position: relative;
}

nav li a {
	display: inline-block;
	padding: 10px 20px;
}

nav li a:hover {
	color: red;
}

nav li.disabled:before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	right: 0;
}
<nav>
	<ul>
	<li><a href="#">Link</a></li>
	<li class="disabled"><a href="#">Link</a></li>
	<li><a href="#">Link</a></li>
	</ul>
</nav>

JsFiddle - https://jsfiddle.net/grinmax_/9L1cckxu/

0 голосов
/ 31 октября 2018
::selection {background: transparent; color: transparent;}

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