找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1670|回复: 0

[分享] CSS选择器(转载)

[复制链接]
发表于 2013-4-8 17:58:05 | 显示全部楼层 |阅读模式 来自 中国–北京–北京
前面花了两节内容分别在《CSS3选择器——基本选择器》和《CSS3选择器——属性选择器》介绍了CSS3选择器中的基本选择器和属性选择器使用方法,今天要和大家一起学习CSS3选择器中的第三部分,也是最后一部分——伪类选择器。伪类选择器对于大家来说最熟悉的莫过于:link,:focus,:hover之类的了,因为这些在平时中是常用到的伪类选择器,那么先和大家一起简单总结一下CSS中常用的伪类选择器的使用方法,最后把重心放到CSS3新增加的":nth-child"选择器的使用方法。
和前面一样,在开始之前先创建一个Dom:

<div class="demo clearfix">  <ul class="clearfix">        <li class="first links odd" id="first"><a href="">1</a></li>        <li class="links even"><a href="">2</a></li>        <li class="links odd"><a href="">3</a></li>        <li class="links even"><a href="">4</a></li>        <li class="links odd"><a href="">5</a></li>        <li class="links even"><a href="">6</a></li>        <li class="links odd"><a href="">7</a></li>        <li class="links even"><a href="">8</a></li>        <li class="links odd"><a href="">9</a></li>        <li class="links even last" id="last"><a href="">10</a></li></ul></div>
同样先加上一些样式,让他看起来好看一点

.demo {                                width: 300px;                                border: 1px solid #ccc;                                padding: 10px;                                                }                        .demo li {                                border: 1px solid #ccc;                                padding: 2px;                                float: left;                                margin-right:4px;                        }                         .demo a {                                float: left;                                display: block;                                height: 20px;                                line-height: 20px;                                width: 20px;                                -moz-border-radius: 10px;                                -webkit-border-radius: 10px;                                border-radius: 10px;                                text-align: center;                                background: #f36;                                color: green;                                text-decoration: none;                        }
最出效果:
CSS的伪类语法和别的语法有点不一样,其主要有两种语法表达方式

E:pseudo-class {property:value}/*其中E为元素;pseudo-class为伪类名称;property是css的属性;value为css的属性值*/
示例:

a:link {color:red;}
第二种写法

E.class:pseudo-class{property:value}
如:

a.selected:hover {color: blue;}
下面开始我们一起来看看这些伪类的具体应用:
一、动态伪类
动态伪类,因为这些伪类并不存在于HTML中,而只有当用户和网站交互的时候才能体现出来,动态伪类包含两种,第一种是我们在链接中常看到的锚点伪类,如":link",":visited";另外一种被称作用户行为伪类,如“:hover”,":active"和":focus"。先来看最常见的锚点伪类

.demo a:link {color:gray;}/*链接没有被访问时前景色为灰色*/                        .demo a:visited{color:yellow;}/*链接被访问过后前景色为***/                        .demo a:hover{color:green;}/*鼠标悬浮在链接上时前景色为绿色*/                        .demo a:active{color:blue;}/*鼠标点中激活链接那一下前景色为蓝色*/
对于这四个锚点伪类的设置,有一点需要特别注意,那就是他们的先后顺序,要让他们遵守一个爱恨原则LoVe/HAte,也就是Link--visited--hover--active。如果你把顺序搞错了会给你带来意想不到的错误,大家对于这个应该很熟悉的,如果是初学的朋友,可以私下练习一下。其中:hover和:active又同时被列入到用户行为伪类中,他们所表达的意思是:
  • :hover用于当用户把鼠标移动到元素上面时的效果;
  • :active用于用户点击元素那一下的效果(正发生在点的那一下,松开鼠标左键此动作也就完成了)
  • :focus用于元素成为焦点,这个经常用在表单元素上。
本站的button就采用了这几处效果:

.form-submit {                            -moz-transition: border-color 0.218s ease 0s;                                        -webkit-transition: border-color 0.218s ease 0s;                                        -o-transition: border-color 0.218s ease 0s;                                        -ms-transition: border-color 0.218s ease 0s;                                        transition: border-color 0.218s ease 0s;                            background: none repeat scroll 0 0 #F5F5F5;                            border: 1px solid #DCDCDC;                                        -moz-border-radius: 2px 2px 2px 2px;                                        -webkit-border-radius: 2px 2px 2px 2px;                            border-radius: 2px 2px 2px 2px;                            color: #333333;                            font: 11px/27px arial,sans-serif;                            height: 27px;                            padding: 0 8px;                            text-align: center;                            text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);                        }                        .form-submit:hover {                            background-color: #F8F8F8;                            border-color: #C6C6C6;                                        -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);                                        -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);                            box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);                            color: #333333;                        }                        .form-submit:active {                            border-color: #4D90FE;                                        -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3) inset;                                        -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3) inset;                            box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3) inset;                            color: #000000;                        }                        .form-submit:focus {                            border: 1px solid #4D90FE !important;                        }
你可以点击这里体验一下这种效果。
对于:hover在IE6下只有a元素支持,:active只有IE7-6不支持,:focus在IE6-7下不被支持。
二、UI元素状态伪类
我们把":enabled",":disabled",":checked"伪类称为UI元素状态伪类,这些主要是针对于HTML中的Form元素操作,最常见的比如我们"type="text"有enable和disabled两种状态,前者为可写状态后者为不可状态;另外"type="radio"和"type="checkbox""有"checked"和"unchecked"两种状态。来看两个实例,比如说你想将"disabled"的文本框与别的文本框区别出来,你就可以这样应用

input[type="text"]:disabled {border:1px solid #999;background-color: #fefefe;}
这样一来就把页面中禁用的文本框应用了一个不同的样式。那么对于其他几个用法是一样的,这里就不在讲述。IE6-8不支持":checked",":enabled",":disabled"这三种选择器。
三、CSS3的:nth选择器
这节内容才是关键,也是CSS3选择器最新部分,有人也称这种选择器为CSS3结构类,下面我们通过实际的应用来具体了解他们的使用和区别,首先列出他具有的选择方法:
  • :fist-child选择某个元素的第一个子元素;
  • :last-child选择某个元素的最后一个子元素;
  • :nth-child()选择某个元素的一个或多个特定的子元素;
  • :nth-last-child()选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;
  • :nth-of-type()选择指定的元素;
  • :nth-last-of-type()选择指定的元素,从元素的最后一个开始计算;
  • :first-of-type选择一个上级元素下的第一个同类子元素;
  • :last-of-type选择一个上级元素的最后一个同类子元素;
  • :only-child选择的元素是它的父元素的唯一一个了元素;
  • :only-of-type选择一个元素是它的上级元素的唯一一个相同类型的子元素;
  • :empty选择的元素里面没有任何内容。
下面我们针对上面所列的各种选择器,一个一个来介绍:
1、:first-child
:first-child是用来选择某个元素的第一个子元素,比如我们这里的这个demo,你想让列表中的"1"具有与从不同的样式,我们就可以使用:first-child来实现:

.demo li:first-child {background: green; border: 1px dotted blue;}
在没有这个选择器出现之前,我们都需在要第一个li上加上一个不同的class名,比如说“first”,然后在给他应用不同的样式

.demo li.first {background: green; border: 1px dotted blue;}
其实这两种最终效果是一样的,只是后面这种,我们需要在html增加一个额外的class名,请看效果:
IE6不支持:first-child选择器。


发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-12-23 02:56 , Processed in 0.052396 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表