CSS3选择器

基础

属性选择器(CSS2)

  • [attr=val]
  • attr代表属性值,val代表变量值
<style>
        [id="test1"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>

属性选择器的扩展(CSS3)

  • 在css3中增加了三个属性选择器,使属性选择器有了通配符的概念。
    • [attr^=val]
    • [attr$=val]
    • [attr*=val]
  • ^代表属性值以某字符串作为开头
<style>
        [id^="te"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>
<div id="test"> 
</div>
  • $代表属性值以某字符串作为结尾
<style>
        [id$="st"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>
<div id="test"> 
</div>
  • *代表属性值内包含某字符串
<style>
        [id*="es"]{
            background-color: yellow;
            height: 200px;
            width:400px;
        }
    </style>
<div id="test"> 
</div>

伪类选择器

  • 在css中,我们知道我们可以通过类选择器定义不同的样式如p.yellow={background-color:yellow},此处.yellow为类选择器,yellow为类名,在伪类选择器中我们使用css中预先定义好的类名对元素样式进行修改,最常用的为对a元素不同状态的修改。
  <style>
        a:link{
            color: #FF0000;
            text-decoration: none;
        }
        /*鼠标点击之前*/
        a:hover{
            color: #00FF00;
            text-decoration: none;
        }
        /*鼠标挪动到链接上*/
        a:visited{
            color: #FF00FF;
            text-decoration: underline;
        }
        /*鼠标点击之后*/
        a:active{
            color:#0000ff;
            text-decoration: underline;
        }
        /*鼠标点击之时*/
    </style>

伪元素选择器

  • 所谓伪元素选择器并不是要对真正的元素使用样式,而是对css中已经定义好的伪元素使用样式
  • first-line用于对某个元素中的第一行文字使用样式
<style>
        p:first-line{
            color: #00ccff;
        }
    </style>
<p>云泥岂知鲲鹏志,<br>扶摇直上九万里</p>
  • first-letter用于对某个元素中的第一个文字或第一个字母设置样式
<style>
        p:first-letter{
            color: #00ccff;
        }
    </style>
<p>云泥岂知鲲鹏志,<br>扶摇直上九万里</p>
  • before用于在某个元素之前插入一些元素
p:before{
            content: '待到秋来九月八,';
            color: #00ccff;
        }
/*插入文字*/
p:before{
            content: url(1.png);
            color: #00ccff;
        }
/*插入图片*/
  • after伪元素选择器
    • 无fuck说

结构性伪类选择器

  • 结构性伪类选择器最主要的的特征是允许开发者根据文档的结构对元素进行操作。

root,not,empty,target

  • root选择器
    • root选择器将样式绑定到页面的根元素,所谓根元素元素,就是指包着整个页面的HTML元素
:root{
    background-color: yellow;
}
body{
    background-color: limegreen;
}
  • 在使用body元素与root元素指定元素背景时,根据不同的显示条件,显示范围会有所变化,如上面这个示例,在删除root选择器后整个页面都将变为绿色
  • not选择器,如果你想对某个元素设置样式,却不想对他的某个子元素设置,可以使用not选择器。
<style>
        #test *:not(h1){
            background-color: yellow;
        }
    </style>
  • empty选择器用于元素内容为空时指定样式,换行符与空格符被认为元素内有内容
div:empty{
            height: 100px;
            width: 100px;
            background-color: yellow;
        }
  • target选择器是对页面中的target元素(当他们的id被当做超链接来使用时)指定样式的,当用户点击了超链接对指定元素进行样式修改。
<style type="text/css">
:target{
    background-color: yellow;
}
</style>
</head>
<body>
<p id="menu">
<a href="#text1">示例文字1</a> | 
<a href="#text2">示例文字2</a> | 
<a href="#text3">示例文字3</a> | 
<a href="#text4">示例文字4</a> | 
<a href="#text5">示例文字5</a> 
</p>
<div id="text1">
<h2>示例文字1</h2>
<p>...此处略去</p>
</div>
<div id="text2">
<h2>示例文字2</h2>
<p>...此处略去</p>
</div>
<div id="text3">
<h2>示例文字3</h2>
<p>...此处略去</p>
</div>
<div id="text4">
<h2>示例文字4</h2>
<p>...此处略去</p>
</div>
<div id="text5">
<h2>示例文字5</h2>
<p>...此处略去</p>
</body>

first-child、last-child、nth-child、nth-last-child

  • first-child与last-child选择器可以选择当前元素第一次和最后一次出现的地方(一般用于列表表格)
li:first-child{
            background-color: yellow;
        }
        li:last-child{
            background-color: black;
        }
  • nth-child和nth-last-child选择器是之前俩个的扩展,分别可加入参数表示序号对元素进行操作,nth-last-child表示倒序。
<style>
        li:nth-child(3){
            background-color: yellow;
        }
    </style>
<style>
        li:nth-last-child(2){
            background-color: yellow;
        }
    </style>
<style>
        ul li:nth-child(even){
            background-color: yellow;
        }
    </style>
所有偶数序列的元素
<style>
        ul li:nth-child(odd){
            background-color: yellow;
        }
    </style>
所有奇数序列的元素
  • nth-child计算序号的方法是取当前元素的父元素所有的子元素进行排序,因此很多时候会带来一些不可预知的问题

nth-of-type与nth-last-of-type

  • 由于上述问题的存在,css3新增了这两个选择器解决问题,nth-of-type可以只匹配相同类型的元素进行选取。
<style type="text/css">
        h2:nth-of-type(odd){
        background-color:yellow;
}
</style>

循环使用样式

  • 我们可以采用nth-child与简单表达式的方法对样式进行循环
    <style>
        li:nth-child(3n){
            background-color: yellow;
        }
        li:nth-child(3n+1){
            background-color: red;
        }
        li:nth-child(3n+2){
            background-color: green;
        }
    </style>

UI元素状态伪类选择器

  • UI元素状态伪类选择器的主要特征是只有在元素处于某种状态时样式表才起作用,默认情况下没有作用
  • 在css3中共有11种UI元素状态伪类选择器
    E:hover、E:active、E:focus、E:enabled、E:disabled、E:read-only、E:read-write、E:checked、E:default、E:indeterminate、E::selection.

E:hover、E:active、E:focus

  • E:hover选择器用于鼠标挪动指定元素上时指定样式
  • E:active选择器用于指定元素被激活时
  • E:focus用于指定元素获得焦点时,主要用于表单

E:enabled、E:disabled

  • E:enabled用于元素可用时的样式
  • E:disabled用于元素不可用时的样式(主要用于表单)
<script>
function radio_onchange()
{    
    var radio=document.getElementById("radio1");
    var text=document.getElementById("text1");
    if(radio.checked)
        text.disabled="";
    else
    {
        text.value="";
        text.disabled="disabled";
    }
}
</script>
<style>
input[type="text"]:enabled{
    background-color:yellow; 
}
input[type="text"]:disabled{
    background-color:purple;
}
</style>
<form>
<input type="radio" id="radio1" name="radio" 
 onchange="radio_onchange();">可用</radio>
<input type="radio" id="radio2" name="radio" 
onchange="radio_onchange();">不可用</radio><br/>
<input type=text id="text1" disabled />
</form>

E:read-only、E:read-write

  • E:read-only:当元素处于只读状态时
  • E:read-write:当元素处于非只读状态时
<style type="text/css">
input[type="text"]:read-only{
        background-color: gray;
}
input[type="text"]:read-write{
        background-color: greenyellow;
}
//firefox
input[type="text"]:-moz-read-only{
        background-color: gray;
}
input[type="text"]:-moz-read-write{
        background-color: greenyellow;
}
</style>

E:checked、E:default、E:indeterminate、

  • 这三个选择器主要用于radio和CheckBox
  • E:checked用于指定单选框(或复选框)被选定时的样式
  • E:default用于指定页面初始化时就被指定默认选取的元素,值得注意的时该样式即使是后来选取状态被取消,也依然有效。
  • E:indeterminate用于对元素指定样式,一旦单选框被选定,则样式失效
input[type="radio"]:indeterminate{
        outline: solid 1px blue;
}
  • 该选择器各浏览器的兼容性不高

E::selection

  • 该元素指定元素被选定时的样式
<style type="text/css">
p::selection{
    background:red;
    color:#FFF;
}
p::-moz-selection{
    background:red;
    color:#FFF;
}
input[type="text"]::selection{
    background:gray;
    color:#FFF;
}
input[type="text"]::-moz-selection{
    background:gray;
    color:#FFF;
}
td::selection{
    background:green;
    color:#FFF;
}
td::-moz-selection{
    background:green;
    color:#FFF;
}
</style>

通用兄弟元素选择器

  • 指定某元素之后所有同级兄弟元素的样式
div ~ p {background-color:#00FF00;}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容

  • 一,CSS3 选择器分类 二,选择器语法 1,基本选择器语法 选择器 类型 功能描述 * 通配选择器 选择文档中所...
    newSpring666阅读 298评论 0 0
  • 第6章 征服CSS3选择器 属性选择器 在HTML中,通过各种各样的属性可以给元素增加很多附加的信息。例如,通过i...
    阿振_sc阅读 400评论 0 1
  • 属性选择器 属性选择器早在CSS2中就被引入了,其主要作用就是对带有指定属性的HTML 元素设置样式,而CSS3在...
    樱桃小丸子儿阅读 797评论 0 19
  • 2.6 语言伪类选择器 使用语言伪类选择器来匹配使用语言的元素是非常有用的,特别是用于多语言版本的网站,其作用更是...
    白小虫阅读 252评论 0 1
  • 一、属性选择器 Element[attr]只使用属性名,但没有确定任何属性值p[cxy]{background: ...
    EndEvent阅读 389评论 0 0