您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > CSS

CSS 基础选择器

时间:2019-10-09 16:01:30  来源:  作者:

 

css 选择器是用来指定该组 CSS 样式会对什么元素生效的,是连接 html 结构和 CSS 样式的桥梁。这一篇将给大家介绍一下 CSS 里基础选择器的用法,同时会对使用上给出一些建议。

基础选择器包括 ID 选择器、类选择器、标签选择器、通配符选择器和属性选择器这几种。

ID 选择器

ID 选择器是用 “#” 号加 ID 名称 xxx 来表示,用来选择 HTML 中 id="xxx" 的 DOM 元素。我们以选择下面这个 ID 为 content 的元素为例:

<div id="content">我是id选择器需要选中的元素</div>

当我们想把样式应用到这个元素的时候,就可以用下面的 ID 选择器:

#content{
 color: #fff;
 background: #000;
}

这样 ID 为 content 的元素就会有一个黑底白字的效果了。在 ID 选择器中,有几点要注意:

1、ID 选择器只能对一个元素生效,同一个页面里不允许出现两个 ID 相同的元素。2、理论上 ID 选择器是效率最高的选择器。但是由于它只能选一个元素,特异性太高,在 实际开发中也很少在 CSS 里使用 ID 选择器。3、也正是因为 ID 选择器特异性高,所以在 JS 里使用 ID 选择器的比较常见。

类选择器

类选择器是用 “.” 加上 class 名称来表示,用来选择 HTML 中 class="xxx" 的 DOM 元素。我们以选择下面 class 名称为 list-item 的元素为例:

<ul>
 <li class="list-item"></li>
 <li class="list-item"></li>
 <li class="list-item"></li>
 <li class="list-item"></li>
</ul>

当我们想把样式应用到列表里每一条元素的时候,就可以用类选择器:

.list-item{
 border-bottom: 1px solid #ccc;
}

这样列表里所有的项就都有一个宽 1px 灰色的下边框了。

在类选择器中,要注意以下几点:

1、类选择器的效率也是不错的,和 ID 选择器并不会有太大的差异。所以在写 CSS 的时候,比较推荐用类选择器。2、类选择器会选择到所有类名相同的 DOM 元素,没有数量限制。3、类选择器应该是样式开发中应用最多的选择器。

通配选择器

通配选择器使用星号来选择到页面里所有元素。用法如下:

*{
 margin: 0;
 padding: 0;
}

上面这个样式就是把所有元素的内外边距都归零。由于通配选择器要把样式覆盖到所有的元素上,可想而知它的效率并不会高,所以在实际开发中一般不建议使用通配选择器。

标签选择器

标签选择器的作用是选中 HTML 中某一种类的标签,它直接使用 HTML 中的标签名作为选择器的名称。比如我们需要把页面里所有大标题的字号都调成 20px,就可以用标签选择器来实现:

h1{
 font-size: 20px;
}

Tips:标签选择器通常用来重置某些标签的样式,标签选择器的效率也不是很高,但要好过通配选择器。

属性选择器

属性选择器比较好理解,就是通过 DOM 的属性来选择该 DOM 节点。属性选择器是用中括号 “[]” 包裹,比如选择所有带有 href 属性的标签,就可以使用这样的选择器:

a[href]{
 color: red;
}

这条选择器就可以让所有带 href 属性的 a 标签字体都变成红色。属性选择器有如下几种形式:

[attr],用来选择带有 attr 属性的元素,如刚提到的 a [href]。

<!-- HTML:-->
<a href="/">返回主页</a>
// 下面的CSS会使所有带href的a标签字体变红色:
a[href]{
 color: red;
}

[attr=xxx],用来选择有 attr 属性且属性值等于 xxx 的元素,如选择所有文本类型的输入框,可以用 input [type=text]。

<!-- HTML:-->
<input type="text" value="大花碗里扣个大花活蛤蟆"/>
// CSS:
input[type=text]{
 color: red;
}

这个选择器里面要注意,xxx 和 HTML 中的属性值必须完全相等才会生效。

<!-- HTML:-->
<input class="input text" type="text" value="大花碗里扣个大花活蛤蟆"/>
// CSS:
input[class=input]{
 color: red;
}

上面例子中 input [class=input] 的选择器并不能选中 class=“input text” 的元素,如果非要用这种选择器,必须使用 input [class=“input text”] 才可以。

[attr~=xxx],这个选择器中间用了~=,选择属性值中包含 xxx 的元素,但一定是逗号分隔的多个值中有一个能和 xxx 相等才行。

<!-- HTML:-->
<input class="input text" type="text" value="大花碗里扣个大花活蛤蟆"/>
// CSS:
input[class~=input]{
 color: red;
}

在上面的例子中,使用 input [class~=input] 就可以选中 class=“input text” 的元素了。

[attr|=xxx],这个选择器是用来选择属性值为 xxx 或 xxx- 开头的元素,比较常用的场景是选择某一类的属性。

<!-- HTML:-->
<div class="article">我是article</div>
<div class="article-title">我是article-title</div>
<div class="article-content">我是article-content</div>
<div class="article_footer">我是article_footer,不是以artical-开头的</div>
// CSS:
div[class|=article]{
 color: red;
}

上面的选择器就可以对所有 article 开头的元素生效,包括 class=“article” 的元素。上面的例子中,选择器会对前三条都生效,但不会对第四条生效。

[attr^=xxx],这个选择器会匹配以 xxx 开头的元素,实际上就是用正则去匹配属性值,只要是以 xxx 开头都可以。

<!-- HTML:-->
<div class="article">我是article</div>
<div class="article-title">我是article-title</div>
<div class="article-content">我是article-content</div>
<div class="article_footer">我是article_footer,不是以artical-开头的</div>
// CSS:
div[class^=article]{
 color: red;
}

还是用刚才的例子,如果把选择器换成 div [class^=article],那么上面四个 HTML 元素都会被选中了。

[attr$=xxx],这个选择器和上一个相似,它是用正则匹配的方式来选择属性值以 xxx 结尾的元素。

<!-- HTML:-->
<button class="btn btn-disabled">禁用的按钮</button>
<select class="select select-disabled city-select"></select>
<input class="input input-disabled" value="禁用的输入框"/>
// CSS:
[class$=disabled]{
 display: none;
}

上面的例子中,我们想把页面里有禁用标识的所有元素都隐藏掉,就可以使用 [class$=disabled] 来选择所有 class 里以 disabled 结尾的元素。这么用的前提是提前约定好,disabled 相关的类要放在最后,否则就像上面的 select 一样不会生效。

[attr*=xxx],最后一个,这个是用正则匹配的方式来选择属性值中包含 xxx 字符的所有元素。这个选择器的规则算是最宽泛的,只要 xxx 是元素属性值的子字符串,这个选择器就会生效。

<!-- HTML:-->
<button class="btn btn-disabled">禁用的按钮</button>
<select class="select select-disabled city-select"></select>
<input class="input input-disabled" value="禁用的输入框"/>
// CSS:
[class*=disabled]{
 display: none;
}

还是用刚才 disable 的例子,如果我们用 [class*=disabled] 选择器来选择 disabled 元素,就可以不考虑 -disable 属性所在的位置了,它对所有带这个单词的属性都会生效,哪怕是 class=“i-am-a-disabled-element” 的元素都可以。

Tips:1. 属性选择器要做文本的匹配,所以效率也不会高。2. 在使用属性选择器时,尽量要给它设置上生效的范围,如果只用了个 [href] 相当于要在所有元素里找带 href 的元素,效率会很低。如果用 a [href] 会好的多,如果用 .link [href] 就更好了。这种组合方式我们在下一节讲解。3. 属性选择器很灵活,如果能使用 CSS 代替 JS 解决一些需求,可以不用太纠结性能的问题,用 JS 实现也一样要耗费资源的。

总结

这一篇我们讲了 CSS 里几种基础的选择器,包括 ID 选择器、类选择器、标签选择器、通配符选择器和属性选择器。这几个选择器里面最常用的就是类选择器,最灵活的是属性选择器,而 ID 选择器、标签选择器和通配选择器的应用场景都不多。



Tags:CSS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
这篇文章重点介绍一些强大的 CSS 代码片段,用它们可以执行一些繁重的布局编程工作,还能帮助我们构建强大的新式CSS布局。这里我们会介绍10 种新式 CSS 布局和大小调整技术,突出...【详细内容】
2021-12-21  Tags: CSS  点击:(9)  评论:(0)  加入收藏
其实文章原名叫做 “碰到不支持 flex 的项目怎么办?”现在差不多已经是 flex 的天下了,简单灵活,但有时还是不可避免地会接触到 IE 浏览器,比如我最近接触的 阅文作家专区 (qq....【详细内容】
2021-06-17  Tags: CSS  点击:(157)  评论:(0)  加入收藏
在 mac 文件管理中有这样一个小细节。 当文件名不超过一行时,完整显示,此时鼠标放上去无任何提示 当文件名超过一行时,出现省略号,此时鼠标放上去提示显示完整文件名 一个很微...【详细内容】
2021-05-25  Tags: CSS  点击:(186)  评论:(0)  加入收藏
多行文本展开收起是一个很常见的交互, 如下图演示 实现这一类布局和交互难点主要有以下几点 位于多行文本右下角的“展开收起”按钮 “展开”和“收起”两种状态的切换 当...【详细内容】
2021-05-21  Tags: CSS  点击:(183)  评论:(0)  加入收藏
前言在写过一段时间 CSS 之后,大家对于常见的属性应该都很熟悉,例如最基本的 display、position、padding、margin、border、background 等等,在写 CSS 的时候不需要特别查什...【详细内容】
2021-04-27  Tags: CSS  点击:(258)  评论:(0)  加入收藏
在浏览器开始实现它们之前,CSS 新的功能通常需要经过长时间讨论之后,才在W3联盟的规范中定义。有许多值得一提的 CSS 新功能,但是在本文中,我们重点介绍可以浏览器的稳定版中进...【详细内容】
2020-11-11  Tags: CSS  点击:(80)  评论:(0)  加入收藏
简介CSS 包含了许多函数,而且它能够完成许多早期需要用 JavaScript才能完成的事情。每年都有新的特性被添加进来,这让我们的开发更加轻松,也减少了对JavaScript的依赖。CSS 函...【详细内容】
2020-09-07  Tags: CSS  点击:(74)  评论:(0)  加入收藏
当我们非常专注写代码时候,我们往往会无意识的写出一些无效CSS代码。 我把这种称为 “潜意识错误”。 导致这种错误后,我们经常会反问自己:“为什么我写出这样低级错误?” 不过,...【详细内容】
2020-08-26  Tags: CSS  点击:(71)  评论:(0)  加入收藏
这是Chrome浏览器中的一个新的实验性功能!现在,我们可以了解一个网站上使用的CSS的概况,从颜色的数量到未使用的声明数量......甚至是定义的媒体查询的总数。同样,这是一个实验...【详细内容】
2020-07-21  Tags: CSS  点击:(94)  评论:(0)  加入收藏
前文中我们对CSS超炫加载动画设计、实现与实例进行了讲解与说明,通过学习可知使用CSS提供的animation属性及伪元素等可以实现精美的CSS动画效果的设计与开发。本文我们将继续...【详细内容】
2020-07-09  Tags: CSS  点击:(56)  评论:(0)  加入收藏
▌简易百科推荐
Chrome 正在试验 CSS @container 查询器功能,这是由 Oddbird 的 Miriam Suzanne 和一群网络平台开发者支持的 CSS 工作组 Containment Level 3 规范。@container 查询器使我...【详细内容】
2021-12-23  前端晚间课    Tags: CSS   点击:(8)  评论:(0)  加入收藏
CSS选择器很强大下面是我在工作中使用最多的一些选择器:相邻元素, 英文称为sibling, 也就是兄弟姐妹的意思.其实很形象, 比喻两个dom是相邻的.但是邻居很多, 紧密相邻的, 还...【详细内容】
2021-12-23  不只是个小前端    Tags:CSS选择器   点击:(7)  评论:(0)  加入收藏
这篇文章重点介绍一些强大的 CSS 代码片段,用它们可以执行一些繁重的布局编程工作,还能帮助我们构建强大的新式CSS布局。这里我们会介绍10 种新式 CSS 布局和大小调整技术,突出...【详细内容】
2021-12-21  前端晚间课    Tags:CSS   点击:(9)  评论:(0)  加入收藏
CSS框架提供了设计一致解决方案的基本结构,以解决前端web开发中的常见问题。它们提供了通用功能,可以针对特定场景和应用程序进行覆盖。这大大减少了开始创建应用程序和网站所...【详细内容】
2021-12-06  粤嵌教育    Tags:v   点击:(15)  评论:(0)  加入收藏
作者:前端进阶者来源:前端进阶学习交流一、前言 我们经常在网页上 ,游戏界面加载时会看到加载进度条的效果,我们往往会以为这些加载进度条的效果,很难实现。今天教大家JS+CSS结合...【详细内容】
2021-11-05  Nodejs开发    Tags:CSS   点击:(45)  评论:(0)  加入收藏
<template> <div> <div class="triangle"></div> </div></template><style scoped> .triangle { width: 0; height: 0; border-width: 20px; border-styl...【详细内容】
2021-11-04  荣邦小伙917    Tags:css   点击:(40)  评论:(0)  加入收藏
一提起图标,大家可能第一个会想到PS、美工等词语,但很多小图标现在根本都不需要再打开PS了。1、常见的括号( 前进或后退“>” ).arrow{ width:12rpx; height:12rpx; border-...【详细内容】
2021-10-12  滇東小贰锅    Tags:css   点击:(55)  评论:(0)  加入收藏
在过去的几年里,Web开发已经变得非常流行。每年都会发布许多前端框架,Bootstrap一直是最受欢迎的一个,但是,还有许多其他的框架,你可能没有听说过,但绝对值得一试。想学的同学可以...【详细内容】
2021-09-27  粤嵌教育    Tags:CSS框架   点击:(74)  评论:(0)  加入收藏
水平和垂直对齐第一种方式 : grid + place-items .parent { display: grid; place-items: center; } /*注: place-items 是 justify-items 和 align-items 的简写属性 */...【详细内容】
2021-09-02  又菜又爱学习的程序员    Tags:CSS   点击:(84)  评论:(0)  加入收藏
5个有用的 CSS 布局生成器1、 cssgr.id如果你是前端开发人员,这是一个非常有用的网站。你可以首先指定所需的行数和列数,或者在给定的选项中进行选择,然后为其生成代码。这使你...【详细内容】
2021-08-26  程序员文周    Tags:css布局   点击:(144)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条