使用CSS3的::selection改变选中文本颜色的方法


Posted in HTML / CSS onSeptember 29, 2015

浏览器上页面文字选中后默认的背景色是一种蓝色, 不同浏览器的颜色有些许差异,但大致相同,文字颜色也近乎白色,如下图所示,截自Firefox3.6浏览器:
使用CSS3的::selection改变选中文本颜色的方法
在CSS3的爸爸妈妈还没有相亲认识的时候,要改变页面上文字选中后的背景色以及文字颜色,就跟让太监生孩子一样困难。但是,随着CSS3呱呱落地,获得越来越多的浏览器认可,一切又显得那么自然而然。虽然有些顽固的糟老头(如IE浏览器)还不认可这个新生的CSS3,但是,丝毫不影响其在其他浏览器上对UI的又一次改进。
目前Firefox、Safari、Chrome以及Opera浏览器都支持文本选择属性,如果浏览器不支持该属性,会直接忽略它,所以不会产生任何不良的影响。
下面就简单展示下这个改进UI体验的小技巧。
改变默认选中颜色
首先,简单点的例子,我们可以设置整个页面文本选中的基本样式,如下:

CSS Code复制内容到剪贴板
  1. ::selection {   
  2.     background:#d3d3d3;    
  3.     color:#555;   
  4. }   
  5.   
  6. ::-moz-selection {   
  7.     background:#d3d3d3;    
  8.     color:#555;   
  9. }   
  10.   
  11. ::-webkit-selection {   
  12.     background:#d3d3d3;    
  13.     color:#555;   
  14. }  

于是,文本选中的默认蓝色背景就此变成了淡灰色,如下图所示,截自Chrome浏览器:
使用CSS3的::selection改变选中文本颜色的方法
当然,我们可以使用CSS选择器指定特定标签内容文字选中后的样式状态,例如下面所展示的栗色选中状态:

CSS Code复制内容到剪贴板
  1. .maroon::selection {   
  2. background:maroon;    
  3. color:#fff;   
  4. }   
  5.   
  6. .maroon::-moz-selection {   
  7. background:maroon;    
  8. color:#fff;   
  9. }   
  10.   
  11. .maroon::-webkit-selection {   
  12. background:maroon;    
  13. color:#fff;   
  14. }   
  15. <p class="maroon">...文字内容。</p>  

会得到类似下图的效果:
使用CSS3的::selection改变选中文本颜色的方法

简而言之,要改变选中文本的颜色和背景颜色,需要使用 CSS3 新增的伪 ::selection,设置颜色 color 和背景颜色 background-colcr 即可,如:

CSS Code复制内容到剪贴板
  1. ::selection { color:#333background-color:#cce8cf;}   
  2. ::-moz-selection { color:#333background-color:#cce8cf;}   
  3. ::-webkit-selection { color:#333background-color:#cce8cf;}  

上面的代码效果如下图(截自 Firefox 5 浏览器):
使用CSS3的::selection改变选中文本颜色的方法
当然,你也可以结合CSS选择器,指定标签或区域文本选中后的样式状态。如:

CSS Code复制内容到剪贴板
  1. h2::selection { color:#f60background-color:#cce8cf;}   
  2. p::selection { color:#333background-color:#cce8cf;}   
  3.   
  4. h2::-moz-selection { color:#f60background-color:#cce8cf;}   
  5. p::-moz-selection { color:#333background-color:#cce8cf;}   
  6.   
  7. h2::-webkit-selection { color:#f60background-color:#cce8cf;}   
  8. p::-webkit-selection { color:#333background-color:#cce8cf;}  

大部分标签使用 selection 没有问题,但 a 标签在不同的浏览器下有差异,有的浏览器 a 标签不会应用上 ::selection 样式(如 FF5,Chrome12),有些浏览器则会应用上 ::selection 样式(如 Opera 11.50)。这可能是有的浏览器认为a比较重要,为了让用户知道这是链接,所以不改变颜色。

HTML / CSS 相关文章推荐
使用HTML5和CSS3表单验证功能
May 05 HTML / CSS
CSS3+js实现简单的时钟特效
Mar 18 HTML / CSS
css3的focus-within选择器的使用
May 11 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
Jan 09 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
Jan 09 HTML / CSS
Html5 FileReader实现即时上传图片功能实例代码
Sep 01 HTML / CSS
浅谈html5 响应式布局
Dec 24 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
Jan 31 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
Apr 30 HTML / CSS
three.js模拟实现太阳系行星体系功能
Sep 03 HTML / CSS
canvas 绘图时位置偏离的问题解决
Sep 16 HTML / CSS
background-position百分比原理详解
May 08 HTML / CSS
CSS3绘制圆角矩形的简单示例
Sep 28 #HTML / CSS
CSS3的resize属性使用初探
Sep 27 #HTML / CSS
基于html和CSS3制作酷炫的导航栏
Sep 23 #HTML / CSS
基于CSS3实现的黑色个性导航菜单效果
Sep 14 #HTML / CSS
基于CSS3实现的漂亮Menu菜单效果代码
Sep 10 #HTML / CSS
实例讲解使用CSS实现多边框和透明边框的方法
Sep 08 #HTML / CSS
使用CSS3配合IE滤镜实现渐变和投影的效果
Sep 06 #HTML / CSS
You might like
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
匹配任意字符的正则表达式写法
2010/04/29 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
2017/09/07 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
python常见数制转换实例分析
2015/05/09 Python
python返回昨天日期的方法
2015/05/13 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
Python 变量的创建过程详解
2019/09/02 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
小学数学国培感言
2014/03/10 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android
vue实现简易音乐播放器
2022/08/14 Vue.js