经常看到一片文字被选中后,文字背景色不是默认的深蓝色,而是其他色,如:
经常见,但是总忽视这个问题,既然想起来,
马上到群里问了问,
原来是使用了对象的selection属性
1 | .detailsBox p::selection{ |
自己写了写,呵呵,这css属性还是有些小细节要注意,大致如下:
1,目前的ie都不支持(ie9未测试),所以这种自定义的被选中背景色,应该都是在非ie浏览器里才能看到的
2,firefox和其他webkit浏览器实现代码不同:
1 | .detailsBox p::selection{ |
注意这里是双冒号,而非伪类的一个冒号…..忽见此属性还是感觉有点奇怪
3,实现上容易出现的错误:
1/用逗号隔开的样式写法
1 | .detailsBox p::selection, |
这样写貌似没有问题,但是方法失效
2/此属性只可应用在文字标签的最内层上,不支持继承,何意?如:
1 | .detailsBox div::selection{ |
如上代码,我们好像把这个属性给了div,div内的对象可以继承,至少我们写字体的行高,字体大小属性是这样的,但事实这样写是无效的,显示结果如:
我的html代码如:
1 | <div class="detailsBox"> |
从结果上显示可以看出只有div直接包住的文字背景色变色了,而p及p中的a都没有受到影响。
这是这个属性有点奇怪的地方,
当然我们可以用通配符的写法让div中的所有对象都匹配上selection属性,如:
1 | .detailsBox *::selection{ |
这样杀伤力是否太大?
4,实现出来的效果稍有不同:
firefox中 背景是有间距的,
ie中文字被选中背景色的效果也如ff中一样有间距,只是还不支持这种自定义背景色
而在chorme中有全选的感觉,背景是铺满整个被选中的文字:
另外如果我们想禁用用户选择文字:
1 | moz-user-select: -moz-none; |
以上是 selection 属性的一些小总结,简单体验感觉,不正确的地方望知者指出