css:如何在选择文字时不突出显示(在Chrome中)

时间:2011-11-28 16:55:11

标签: html css

我使用::selection更改了文本高亮颜色,这在我的页面中非常有用。但是,我发现Chrome的行为与FF不同,后者使用默认的蓝色突出显示<br>,而不是我为所有元素设置的颜色。 FF不会高亮显示<br>,因此效果很好。

我试图覆盖::selection的{​​{1}},但不起作用;试图使用<br>,也不起作用;试过user-select:none;,这让我的display:none;全部消失了......

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

我认为您需要阅读this question with all its answers

顺便说一下,如果您需要在Chrome中模拟此行为,我认为您可以使用<br/>模拟<span>。像这样:

<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
p.normal::selection {
    background:#cc0000;
    color:#ff0;
}
p.normal span::selection {
    background:#cc00ff;
    color:#ff0;
}
p.normal span {
    width:100%;
    clear:left;
    display: block;
    height: 1em;
}

p.moz::-moz-selection {
    background:#cc0000;
    color:#ff0;
}

p.webkit::-webkit-selection {
    background:#cc0000;
    color:#ff0;
}
</style>
</head> 
<body>
    <p class="normal">Hello Normal
    <span></span>
    <span></span>
    <span></span>
    How are you?
    </p>
    <p class="moz">Hello Mozilla
    <br/>
    <br/>
    <br/>
    How are you?
    </p>
    <p class="webkit">Hello Webkit
    <br/>
    <br/>
    <br/>
    How are you?
    </p>
</body>
</html>

修改

经过多次测试后,我得出结论,要复制Chrome中的行为,您需要一个复制this styles的JavaScript。

<强> EDIT2:

要删除第二行中的粉色边框,我会再创建一个demo(我认为它更清晰)。

答案 1 :(得分:1)

您可以像这样在CSS中将所有<br>设置为不可选择。

br
{
    -webkit-user-select: none; /* Safari */        
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* IE10+/Edge */
    user-select: none; /* Standard */
}
<p>Run the snippet to see for yourself.</p>
<br>
<p>See?</p>

答案 2 :(得分:0)

<br>嵌套为<p>

的子项

::selection {
  background: chartreuse;
}
div {
  padding: .3em;
}
div + div {
  border-top: 1px solid lightgray;
}
p {
  margin: 0;
}
code:before {
  content: "<";
}
code:after {
  content: ">";
}
<div>
    <p>Layout is fine</p>
    <br>
    <p>but selection <del>isn't</del> <ins>wasn't (fixed in Chrome as of v 59.0.3071.115 or earlier)</ins></p>
</div>
<div>
    <p>One <code>br</code> in it's own <code>p</code> between this <code>p</code> </p>
    <p><br></p>
    <p>and this one</p>
</div>
<div>
    <p>Two <code>br</code>s nested in the end of this <code>p</code><br><br></p>
    <p>No <code>br</code>s in this <code>p</code>, and nothing between the <code>p</code></p>
</div>
<div>
    <p>No <code>br</code>s in this <code>p</code>, and nothing between the <code>p</code>s</p>
    <p><br>One <code>br</code>s nested in the start of this <code>p</code></p>
</div>

答案 3 :(得分:0)

您可以使用<hr/>替换<br />,然后将其不透明度设置为0.赞here