CSS3学习笔记 之 动态伪类选择器

  动态伪类选择器为伪类选择器的一种,其语法如下:

E: pseudo-class {property:value} 
其中E为HTML中的元素,pseudo-class是CSS的伪类选择器名称,property是CSS的属性, value为CSS属性值。

动态伪类并不存在于HTML中,只有当用户和网站交互的时候才能体现出来。动态伪类包含两种,第一种是在链接中常看到的锚点伪类,另一种为用户行为伪类。

其支持的详细语法如下:

选择器类型功能描述
E:link链接伪类选择器选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过。常用于链接锚点上
E:visited链接伪类选择器选择匹配的E元素,而且匹配元素被定义了超链接并已被访问过。常用于链接锚点上
E:hover用户行为伪类选择器选择匹配的E元素,而且匹配元素被激活。常用于锚点与按钮上。
E:avtive用户行为伪类选择器选择匹配的E元素,且用户鼠标停留在元素E上。IE6及以下浏览器仅支持a:hover
E:focus用户行为为类选择器选择匹配的E元素,而且匹配的元素获得焦点

除了E:active和E:focus需要IE8和以上版本支持外,其他的动态伪类选择器所有浏览器都支持。

用如下代码测试动态伪类选择器,实现按钮在被选中和点击时候的效果:

<!DOCTYPE HTML>
<HTML lang="en-US">
	<HEAD>
		<META charset="UTF-8">
		<TITLE>使用动态伪类选择器美化按钮</TITLE>
		<STYLE type="text/css">
			.download-info {
				text-align: center;
			}
			/*默认状态下的按钮效果*/
			.btn {
				background-color: #0074cc;
				*background-color: #0055cc;
				/*CSS渐变制作背景图片*/
				background-image: -ms-linear-gradient(top, #0088cc, #0055cc);
				background-image: -webkit-gradient(linear, 0, 0, 0 100%, from(#0088cc), to(#0055cc));
				background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);
				background-image: -o-linear-gradient(top, #0088cc, #0055cc);
				background-image: -moz-linear-gradient(top, #0088cc, #0055cc);
				background-image: linear-gradient(top, #0088cc, #0055cc);
				background-repeat: repeat-x;
				display: inline-block;
				*display: inline;
				border: 1px solid #cccccc;
				*border: 0;
				border-color: #ccc;
				/*CSS3的色彩模块*/
				border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
				border-radius: 6px;
				color: #ffffff;
				cursor: pointer;
				font-size: 20px;
				font-weight: normal;
				filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);
				filter: progid:dximagetransform.microsoft.gradient(enabled=false);
				line-height: normal;
				padding: 14px, 24px;
				/*CSS3文字阴影特性*/
				text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
				text-decoration: none;
				vertical-align: middle;
				*zoom: 1;

			}

			/*悬浮状态下按钮效果*/
			.btn:hover {
				background-position: 0 -15px;
				background-color: #0055cc;
				*background-color: #004ab3;
				color: #ffffff;
				text-shadow: 0, -1px 0 rgba(0, 0, 0, 0.25);
				/*CSS3动画效果*/
				-webkit-transition: background-position 0.1s linear;
				-moz-transition: background-position 0.1s lineaar;
				-ms-transition: background-position 0.1s linear;
				-0-transition: background-position 0.1s linear;
				transition: background-position 0.1s linear;
			}

			/*点击时按钮效果*/
			.btn:active {
				background-color: #0055cc;
				*background-color: #004ab3;
				background-color: #004099 \9;
				background-image: none;
				outline: 0;
				/*CSS3盒子阴影特性*/
				box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.15);
				color: rgba(255, 255, 255, 0.75);
			}
				/*获得焦点按钮效果*/
			.btn: focus {
				outline: thin dotted #333;
				outline: 5px auto -webkit-focus-ring-color;
				outline-offset: -2px;
			}
			</STYLE>
	</HEAD>
	<BODY>
		<div class="download-info">
			<a hred="#" class="btn">View project on GitHub</a>
		</div>
	</BODY>
</HTML>

显示效果如下(使用的是.btn默认样式):

当光标放在按钮上的时候的效果(使用的是.btn:hover时候的样式):



当按钮被点击时候的效果(使用的是.btn:active对应的样式):



爱恨原则(LoVe/HAte):


锚点伪类的设置必须遵守一个“爱恨原则”LoVe/HAte, 也就是link-visited-hover-active.(L-V-H-A),另外在IE6, IE7, IE8中a:hover, a:active, a:visited并没有按照规范描述的算法来计算它们的针对性(specificity),

而是根据链接的实际状态来决定使用哪个规则集里面的声明。详情可参考这篇文章: 

RS3005: IE6 IE7(Q) IE8(Q) 中 A 元素的 :visited :hover :active 伪类未按规范要求的算法来计算针对性


参考资料:

《图解CSS3:核心技术与案例实战》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值