首页 > 前端开发 > 正文

web前端开发后代选择器 如何更好的使用css选择器充分发挥其性能

2023-10-11 23:32:02 | 我爱编程网

前端开发是很多朋友有关注的类型,那么web前端开发后代选择器 如何更好的使用css选择器充分发挥其性能,我爱编程网为大家带来了相关文章,希望给大家提供参考。

web前端开发后代选择器 如何更好的使用css选择器充分发挥其性能

如何更好的使用css选择器充分发挥其性能

CSS 选择器性能损耗来自?
CSS选择器对性能的影响源于浏览器匹配选择器和文档元素时所消耗的时间,所以优化选择器的原则是应尽量避免使用消耗更多匹配时间的选择器。而在这之前我们需要了解CSS选择器匹配的机制, 如子选择器规则:
#header > a {font-weight:blod;}

我们中的大多数人都是从左到右的阅读习惯,会习惯性的设定浏览器也是从左到右的方式进行匹配规则,推测这条规则的开销并不高。
我们会假设浏览器以这样的方式工作:寻找 id 为 header 的元素,然后将样式规则应用到直系子元素中的 a 元素上。我们知道文档中只有一个 id 为 header 的元素,并且它只有几个 a 元素的子节点,所以这个CSS选择器应该相当高效。
事实上,却恰恰相反,CSS选择器是从右到左进行规则匹配。了解这个机制后,例子中看似高效的选择器在实际中的匹配开销是很高的,浏览器必须遍历页面中所有的 a 元素并且确定其父元素的 id 是否为 header 。
如果把例子的子选择器改为后代选择器则会开销更多,在遍历页面中所有 a 元素后还需向其上级遍历直到根节点。
#header a {font-weight:blod;}

理解了CSS选择器从右到左匹配的机制后,明白只要当前选择符的左边还有其他选择符,样式系统就会继续向左移动,直到找到和规则匹配的选择符,或者因为不匹配而退出。我们把最右边选择符称之为关键选择器。
如何减少 CSS 选择器性能损耗?
Google 资深web开发工程师 Steve Souders 对 CSS 选择器的执行效率从高到低做了一个排序:
1.id选择器(#myid)
2.类选择器(.myclassname)
3.标签选择器(div,h1,p)
4.相邻选择器(h1+p)
5.子选择器(ul < li)
6.后代选择器(li a)
7.通配符选择器(*)
8.属性选择器(a[rel="external"])
9.伪类选择器(a:hover, li:nth-child)
根据以上「选择器匹配」与「选择器执行效率」原则,我们可以通过避免不恰当的使用,提升 CSS 选择器性能。
1、避免使用通用选择器
.content * {color: red;}

浏览器匹配文档中所有的元素后分别向上逐级匹配 class 为 content 的元素,直到文档的根节点。因此其匹配开销是非常大的,所以应避免使用关键选择器是通配选择器的情况。
2、避免使用标签或 class 选择器限制 id 选择器
BAD
button#backButton {…}
BAD
.menu-left#newMenuIcon {…}
GOOD
#backButton {…}
GOOD
#newMenuIcon {…}

3、避免使用标签限制 class 选择器
BAD
treecell.indented {…}
GOOD
.treecell-indented {…}
BEST
.hierarchy-deep {…}

4、避免使用多层标签选择器。使用 class 选择器替换,减少css查找
BAD
treeitem[mailfolder="true"] > treerow > treecell {…}
GOOD
.treecell-mailfolder {…}

5、避免使用子选择器
BAD
treehead treerow treecell {…}
BETTER, BUT STILL BAD
treehead > treerow > treecell {…}
GOOD
.treecell-header {…}

6、使用继承
BAD
#bookmarkMenuItem > .menu-left { list-style-image: url(blah) }
GOOD
#bookmarkMenuItem { list-style-image: url(blah) }

思考
作为一名前端工程师,应该具有「提升 CSS 选择器性能」的意识,但实际应用中,是否需要完全贯彻这些原则呢?这是一个探索「追求高性能」与「可维护性」两者平衡的问题。
对于「淘宝」,每个页面的 DOM 元素超过1000个以上的网站来说,通过限制 CSS 选择器,改善性能是具有实际意义的。但对于普通网站,我更倾向于保证「语义化」和「可维护性」的前提下,提升 CSS 选择器性能。

web前端开发后代选择器 如何更好的使用css选择器充分发挥其性能我爱编程网

web前端里面什么是父级选择器?什么是子级选择器?

在Web前端开发中,CSS选择器是一种用来选取HTML元素并设置样式的工具。其中,父级选择器和子级选择器都是常用的CSS选择器类型。
父级选择器指的是在CSS中使用一个元素的父元素作为选择器的情况。其语法格式为:`parentSelector childSelector {...}`,其中 `parentSelector` 表示父级元素的选择器,`childSelector` 表示子级元素的选择器,中间需要加上空格分隔开。例如:
```css
.container p {
font-size: 16px;
}
```
在该示例中,`.container` 是父级选择器,`p` 是子级选择器。这条CSS规则将会选中所有位于 `.container` 元素内部的 `p` 元素,并设置它们的字号为 `16px`。
子级选择器则是指只选中某个元素下的直接子元素的选择器。其语法格式为:`parentSelector > childSelector {...}`,其中 `parentSelector` 表示父级元素的选择器,`childSelector` 表示子级元素的选择器,中间需要加上 `>` 符号分隔开。例如:
```css
ul > li {
list-style-type: none;
}
```
在该示例中,`ul` 是父级选择器,`li` 是子级选择器。这条CSS规则将会选中所有位于 `ul` 元素内部、且作为直接子元素的 `li` 元素,并设置它们的列表样式为无。
需要注意的是,在实际开发中,还需要考虑CSS选择器的性能、优先级和组合使用等问题,并根据具体需求进行定制化开发。

web前端开发后代选择器 如何更好的使用css选择器充分发挥其性能

Web前端开发知识点之CSS的使用方式

今天小编要跟大家分享的文章是关于Web前端开发知识点之CSS的使用方式。本文章小编从与HTML的结合方式、CSS语法、选择器以及盒子模型四个方面进行讲解。下面来和小编一起看一看吧!


一、与HTML的结合方式


CSS与HTML的结合方式一共有三种,分别是:外部样式、内部样式和内联样式。


①外部样式


当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用 标签链接到样式表。 标签在文档的头部:


_








或者可以像下面这样在





②内部样式


当单个文档需要特殊的样式时,就应该使用内部样式表。你可以使用





③内联样式


要使用内联样式,你需要在相关的标签内使用样式(style)属性。


_


Thisisaparagraph





由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。


二、CSS语法


CSS语法规则由两个主要的部分构成:选择器,以及一条或多条声明。


选择器通常是您需要改变样式的HTML元素。


每条声明由一个属性和一个值组成。两条声明之间被分号分开。


属性是您希望设置的样式属性。每个属性有一个值。属性和值被冒号分开。


在下面这个例子中,h1是选择器,color和font-size是属性,red和14px是值。





三、选择器


CSS的选择器主要分为两大类,一类基本选择器;一类扩展选择器。


①基本选择器


基本选择器包括id选择器,元素选择器和类选择器。


id选择器可以为标有特定id的HTML元素指定特定的样式。id选择器以"#"来定义。例如下面代码指定id为red的标签中文本为红色。


#red{color:red;}


元素选择器可以为相应的HTML元素指定特定的样式。元素选择器前面没有任何字符。例如下面代码指定div标签中文本为红色。


div{color:red;}


类选择器可以为标有特定class的HTML元素指定特定的样式。类选择器以一个点号显示。例如下面代码指定class为center的标签中文本居中对齐。


.center{text-align:center}


②扩展选择器


扩展选择器是在基本选择器的基础上扩展出来的,下面介绍几种常见的。


*选择器(*
{})可以为HTML的所有元素指定特定的样式。例如下面代码指定HTML页面中所有文本为红色。


*{color:red;}


并集选择器(选择器1,选择器2{})可以为多个选择器指定特定的样式。例如下面代码指定div和span两种标签中文本为红色。


div,span{color:red;}


子选择器(选择器1选择器2{})可以为选择器1中的选择器2指定特定的样式。例如下面代码指定div中span标签文本为红色。


divspan{color:red;}


父选择器(选择器1>选择器2{})可以为含有选择器2的选择器1指定特定的样式。例如下面代码指定含有span的div标签文本为红色。


div>span{color:red;}


属性选择器(元素[属性="属性值"])可以为含有该属性且属性值等于该值的元素指定特定的样式。其中,元素和属性值可以省略。例如下面代码指定align属性等于center的div标签文本为红色。


div[align="center"]{color:red;}


伪类选择器(元素:状态{})可以为该元素处于该状态时指定特定的样式。例如下面的代码指定鼠标悬浮在超链接上时文本为红色。


a:hover{color:red;}


四、盒子模型


所有HTML元素可以看作盒子,在CSS中,"box
model"这一术语是用来设计和布局时使用。


CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。


盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。


下面的图片说明了盒子模型:






Margin(外边距)-清除边框外的区域,外边距是透明的。


Border(边框)-围绕在内边距和内容外的边框。


Padding(内边距)-清除内容周围的区域,内边距是透明的。


Content(内容)-盒子的内容,显示文本和图像。



默认情况下,标签的width和height属性指的是content(内容)的宽和高,我们在设置边框和边距的时候一定要注意。如果想要让width和height是最终盒子的大小,可以设置下面的代码:


box-sizing:border-box;


以上就是小编今天为大家分享的关于Web前端开发知识点之CSS的使用方式的文章,希望本篇文章能够对正在从事web前端工作和学习的小伙伴们有所帮助,想要了解更多web前端知识记得关注北大青鸟web培训官网,最后祝愿小伙伴们工作顺利,城市一名优秀的web前端程序员。


文章来源:原创_绲墓适_


以上就是我爱编程网为大家带来的web前端开发后代选择器 如何更好的使用css选择器充分发挥其性能,希望能帮助到大家,了解更多相关信息,敬请关注我爱编程网。

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“web前端开发后代选择器 如何更好的使用css选择器充分发挥其性能”相关推荐