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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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