CSS 教程(3)-选择器

1.Grouping Selectors 分组选择器
在样式表中有很多具有相同样式的元素。
h1
{
color:green;
}
h2
{
color:green;
}
p
{
color:green;
}
为了尽量减少代码,你可以使用分组选择器。
每个选择器用逗号分隔.
在下面的例子中,我们对以上代码使用分组选择器:

h1,h2,p
{
color:green;
}

2.嵌套选择器
它可能适用于选择器内部的选择器的样式。

选择器的嵌套,在CSS中可以大大减少对class和id的声明,因此,在构建页面的HTML时,通常只给外层标记定义class或者id,内层标记能通过嵌套表示的则利用嵌套的方式,从而,不需要再定义新的class或者id,只有当子标记无法利用此规则时,才进行单独的声明

在下面的例子设置了三个样式:

  • 为所有p元素指定一个样式
  • 为所有class="marked"的元素指定一个样式
  • 为所有class="marked"元素内的p元素指定一个样式
p
{
color:blue;
text-align:center;
}
.marked
{
background-color:red;
}
.marked p
{
color:white;
}

3.后代选取器
后代选取器匹配所有值得元素的后代元素。
以下实例选取所有 <p> 元素插入到 <div> 元素中:
···
<style>
div p {
background-color: yellow;//只要div后面的p就会显示背景色,不管多靠后
}
</style>
<div>
<p>段落 1。 在 div 中。</p>
<p>段落 2。 在 div 中。</p>
<div>test<p>neibu PP</p></div>
</div>

<p>段落 3。不在 div 中。</p>
<p>段落 4。不在 div 中。</p>
···

4.子元素选择器
与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。(只有亲孩子一代才行)
···
<style>
div>p {
background-color: yellow;
}
</style>

<h1>Welcome to My Homepage</h1>
<div>
<h2>My name is Donald</h2>
<p>I live in Duckburg.</p>
</div>
<div>
<span>
<p>I will not be styled.</p>
</span>
</div>
<p>My best friend is Mickey.</p>
···

5.相邻兄弟选择器
相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素的元素,且二者有相同父元素。
如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。

<style>
    div+p {
        background-color: yellow;
    }
</style>

<h1>Welcome to My Homepage</h1>
<div>
    <h2>My name is Donald</h2>
    <p>I live in Duckburg.</p>
</div>
<p>My best friend is Mickey.</p>//显示黄色
<p>I will not be styled.</p>

6.后续兄弟选择器
后续兄弟选择器选取所有指定元素之后的相邻兄弟元素。

<style>
    div~p {
        background-color: yellow;
    }
</style>

<p>之前段落,不会添加背景颜色。</p>
<div>
    <p>段落 1。 在 div 中。</p>
    <p>段落 2。 在 div 中。</p>
</div>
<p>段落 3。不在 div 中。</p>
<p>段落 4。不在 div 中。</p>

7.** 伪类(Pseudo-classes)**
CSS伪类是用来添加一些选择器的特殊效果。

<style>
    a:link {
        color: #000000;
    }
    a:visited {
        color: #00FF00;
    }
    a:hover {
        color: #FF00FF;
    }
    a:active {
        color: #0000FF;
    }
    a.aaa:hover {//class也可以作为伪类的,这个时候,第二个链接,鼠标放上去显示蓝色而不会是红色,第一个会显示红色
        color: blue;
    }
</style>

<a href="/css/" target="_blank">这是一个链接</a>
<a class="aaa" href="/css/" target="_blank">这是一个链接</a>
  • CSS - :first - child伪类(:last-child)
    您可以使用 :first-child 伪类来选择元素的第一个子元素
    ···
    <style>
    p:first-child {
    color: blue;
    }
    </style>

<p>This is some text.</p>//只有它显示蓝色,匹配了p的第一个元素的选择器
<p>This is some text.</p>
···

选择相匹配的所有<p>元素的第一个 <i> 元素
p > i:first-child
{
color:blue;
}

选择器匹配所有作为元素的第一个子元素的 <p> 元素中的所有 <i> 元素
p:first-child i
{
color:blue;
}

具体的伪类:

  • :checked 选择器
    :checked 选择器匹配每个选中的输入元素(仅适用于单选按钮或复选框)(选择上后,放大了选择框)
<style>
    input:checked {
        height: 50px;
        width: 50px;
    }
</style>

<input type="radio" checked="checked" value="male" name="gender" /> Male
<br>
<input type="radio" value="female" name="gender" /> Female
<br>
<input type="checkbox" checked="checked" value="Bike" /> I have a bike
<br>
<input type="checkbox" value="Car" /> I have a car
  • :disabled 选择器
    :disabled 选择器匹配每个禁用的的元素(主要用于表单元素)
    设置所有type="text"的禁用的输入元素的背景颜色为灰色
<style>
    input[type="text"]:enabled {
        background: #ffff00;
    }

    input[type="text"]:disabled {
        background: #dddddd;
    }
</style>

First name:
<input type="text" value="Mickey" />
<br> Last name:
<input type="text" value="Mouse" />
<br> Country:
<input type="text" disabled="disabled" value="Disneyland" />
<br>
  • :empty 选择器
    :empty选择器选择每个没有任何子级的元素(包括文本节点)
p:empty
{
background:#ff0000;
}
  • :first-of-type (:last-of-type)选择器
    :first-of-type选择器匹配元素其父级是特定类型的第一个子元素。
<style>
    p:first-of-type {
        background: #ff0000;
    }
</style>

<h1>This is a heading</h1>
<p>The first paragraph.</p>//这是第一个匹配P的
<p>The second paragraph.</p>
<p>The third paragraph.</p>
  • :in-range 选择器
    :in-range 选择器用于标签的值在指定区间值时显示的样式。
    注意: :in-range 选择器只作用于能指定区间值的元素,例如 input 元素中的 min 和 max 属性。
<style>
    input:in-range {
        border: 2px solid green;//如果在范围内,显示绿色
    }
    input[type="number"]:out-of-range {
        border: 2px solid red;//如果超出数字范围,显示红色
    }
</style>

<h3>:in-range 选择器实例演示。</h3>
<input type="number" min="5" max="10" value="7" />
  • :invalid 选择器
    :invalid 选择器用于在表单元素中的值是非法时设置指定样式。
    注意: :invalid 选择器只作用于能指定区间值的元素,例如 input 元素中的 min 和 max 属性,及正确的 email 字段, 合法的数字字段等。
<style>
    input:invalid {
        border: 2px solid red;//如果输入错误,
显示红色,如果输入正确的email的话,显示正常边框色
    }
</style>
<h3> :invalid 选择器实例演示。</h3>
<input type="email" value="supportEmail" />
  • :not 选择器
    :not(selector) 选择器匹配每个元素是不是指定的元素/选择器。
    :not(p)
    {
    background:#ff0000;
    }

  • :nth-child() 选择器
    :nth-child(n)选择器匹配父元素中的第n个子元素。

:nth-last-child() 选择器
:nth-last-of-type(n)选择器匹配同类型中的倒数第n个同级兄弟元素。

n可以是一个数字,一个关键字,或者一个公式。

  • :read-only 选择器
    -:required 选择器
    :required 选择器在表单元素是必填项时设置指定样式。
    表单元素可以使用 required 属性来设置必填项。
    注意: :required 选择器只适用于表单元素: input, select 和 textarea。

  • :hover 选择器
    :hover在鼠标移到链接上时添加的特殊样式。
    提示: :hover 选择器器可用于所有元素,不仅是链接。

  • :first-letter 选择器
    :first-letter选择器用来指定元素第一个字母的样式。

8.属性选择器
例子1,把包含标题(title)的所有元素变为蓝色

<style>
[title]
{
color:blue;
}
</style>
<h2>Will apply to:</h2>
<h1 title="Hello world">Hello world</h1>
<a title="runoob.com" href="http://www.runoob.com/">runoob.com</a>
<hr>
<h2>Will not apply to:</h2>
<p>Hello!</p>

实例2,改变了标题title='runoob'元素的边框样式

<style>
    [title=runoob] {
        border: 5px solid green;
    }
</style>
<h2>将适用:</h2>
<img title="runoob" src="logo.png" width="270" height="50" />
<br>
<a title="runoob" href="http://www.runoob.com/">runoob</a>
<hr>
<h2>将不适用:</h2>
<p title="greeting">Hi!</p>
<a class="runoob" href="http://www.runoob.com/">runoob</a>

表单样式
属性选择器样式无需使用class或id的形式:

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

推荐阅读更多精彩内容

  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,841评论 0 5
  • 1.CSS 元素选择器 最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。如果设置 H...
    饥人谷_小侯阅读 864评论 0 1
  • 作为前端和后台最基础可靠的神器工具JQuery,你真的对她有足够了解么? 亚非拉地区苦逼的前端er们,有时候不得不...
    扭了个妞阅读 380评论 0 0
  • 一、CSS选择器常见的有几种? 基本选择器 通配选择器~选择文档中所有的html元素,用一个*表示 元素选择器~选...
    dengpan阅读 966评论 0 3
  • 选择器 元素选择符 关系选择符 属性选择符 伪类选择符 伪对象选择符 一、元素选择符 通配选择符 (*):选择所有...
    云外之境阅读 1,863评论 0 0