600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > css为什么没有内容选择器 css层次选择器有哪些 – CSS – 前端 css3兼容ie7

css为什么没有内容选择器 css层次选择器有哪些 – CSS – 前端 css3兼容ie7

时间:2020-09-10 04:06:34

相关推荐

css为什么没有内容选择器 css层次选择器有哪些 – CSS – 前端 css3兼容ie7

@ 如何在js文件中动态加载另一个js文件?

就像正常的下载文件一样。把服务的js文件下载下来,然后在本地浏览器执行。

另外你需要补充一下浏览器加载、解析、渲染的一些知识。复制一下偶之前整理的笔记。

浏览器加载

加载过程 当浏览器获得一个html文件时,会”自上而下“加载,并在加载过程中进行解析渲染。 加载过程中遇到外部CSS文件,浏览器另外发出一个请求,来获取css文件。 遇到图片资源,浏览器也会另外发出一个请求,来获取图片资源。这是异步请求,并不会影响html文档进行加载。 但是当文档加载过程中遇到js文件,html文档会挂起渲染(加载解析渲染同步)的线程,不仅要等待文档中js文件加载完毕,还要等待解析执行完毕,才可以恢复html文档的渲染线程。加载外联js和css的阻塞情况

一个不太严谨但方便记忆的口诀:JS 全阻塞,CSS 半阻塞

JS 会阻塞后续 DOM 解析以及其它资源(如 CSS,JS 或图片资源)的加载。CSS不阻塞DOM的加载和解析(它只阻塞DOM的渲染呈现。这里谈加载),不会阻塞其它资源(如图片)的加载,但是会阻塞 后续JS 文件的执行(原因之一是,js执行代码可能会依赖到css样式。css只阻塞执行而不阻塞js的加载)。鉴于上面的特性,当css后面存在js的时候,css会间接地阻塞js后面资源的加载(css阻塞js,js阻塞其他资源 )。现代浏览器会进行 prefetch 优化,浏览器在获得 html 文档之后会对页面上引用的资源进行提前下载

外联js文件使用defer属性和asyn可以达到异步非阻塞加载的效果,由于现代浏览器都存在 prefetch,所以 defer, async 可能并没有太多的用途,可以作为了解扩展知识,仅仅将脚本文件放到 body 底部(但还是在之前)就可以起到很不错的优化效果(遵循先解析再渲染再执行script这个顺序)。当把js放在最后的时候,其实浏览器将自动忽略标签,从而自动在最后的最后补上。

浏览器解析

1、浏览器通过请求的 URL 进行域名解析,向服务器发起请求,接收文件(HTML、CSS、JS、Images等等)。2、HTML 文件加载后,开始构建 DOM Tree(DOM树)3、CSS 样式文件加载后,开始解析和构建 CSS Rule Tree4、Javascript 脚本文件加载后, 通过 DOM API 和 CSSOM API 来操作 DOM Tree 和 CSS Rule Tree

浏览器渲染

1、浏览器引擎通过 DOM Tree 和 CSS Rule Tree 构建 Rendering Tree(渲染树)2、布局阶段——在屏幕上绘制渲染树中的所有节点的几何属性,比如: 位置,宽高,大小等等,这个过程称为 Flow 或 Layout 。3、绘制元素——绘制所有节点的可视属性。4、合并渲染层——把以上绘制的所有图层(类似于PhotoShop中的“图层”)合并,最终输出一张图片

其中的阶段3、4可称之为Paint

Repaint和Reflow

当用户在浏览网页时进行交互或通过 js 脚本改变页面结构时,以上的部分操作有可能重复运行,此过程称为 Repaint 或 Reflow。

Repaint

当元素改变的时候,将不会影响元素在页面当中的位置(比如 background-color, border-color, visibility),浏览器仅仅会应用新的样式重绘此元素,此过程称为 Repaint。

Reflow

当元素改变的时候,将会影响文档内容或结构,或元素位置,此过程称为 Reflow。( HTML 使用的是 flow based layout ,也就是流式布局,所以,如果某元件的几何尺寸发生了变化,需要重新布局,也就叫 Reflow。)

Reflow 的成本比 Repaint 的成本高得多的多。大家应当尽量避免Reflow。

如何优化浏览器渲染过程

1、创建有效的 HTML 和 CSS ,不要忘记指定文档编码,比如。2、CSS 样式应该包含在 中, Javascript 脚本出现在末尾。3、减少 CSS 嵌套层级和选择适当的选择器,可参考 如何提升 CSS 选择器性能。4、不要通过 JS 逐条修改 DOM 的样式,提前定义好 CSS 的 Class 进行操作。5、尽量减少将 DOM 节点属性值放在循环当中,会导致大量读写此属性值。6、尽可能的为产生动画的 HTML 元素使用 fixed 或 absolute 的 position ,那么修改他们的 CSS 是不会 Reflow 的。

@ css复合选择器有哪三种?

1、元素选择器 标签名{ }

2、id选择器 #id属性值{ }

3、类选择器 .class属性值{ }

4、选择器分组(并集选择器)

作用:通过它可以同时选中多个选择器对应的元素(通常用于集体声明)

语法:选择器1,选择器2,选择器n{ }

5、复合选择器(交集选择器)

作用:选择更准确更精细的目标元素并为其设置属性

语法:选择器1选择器2选择器n{ }

!注意选择器之间不能有空格,要紧挨在一起

6、通配选择器

作用:用来选中页面中所有的元素

语法:*{ }

7、后代元素选择器

作用:选中指定元素的指定后代元素

语法:祖先元素 后代元素{ }

8、子元素选择器

作用:选中指定父元素的子元素

语法:父元素>子元素

9、伪类选择器

伪类表示元素的一种特殊状态

:hover 移入时元素的状态

:visited 已被访问过后的元素的状态

:active 被点击时元素的状态

10、 属性选择器

作用:根据元素中的属性或属性值来选取指定元素

语法:[属性名]选取含有指定属性的元素

? [属性名=“属性值”]选取含指定属性值的元素

? [属性名^="属性值"] 选取属性值以指定内容开头的元素

? [属性名$="属性值"] 选取属性值以指定内容结尾的元素

? [属性名*="属性值"] 选取属性值包含指定内容的元素

11、兄弟元素选择器

+选择器

作用:选中一个元素后紧挨着的指定的兄弟元素

语法:前一个+后一个(作用在后一个)

~选择器

作用:选中后边所有的制定兄弟元素

语法:前一个~后边所有

@ css选择器识别范围?

css选择器优先级核心:每个选择器本身有优先级,作用范围越具体优先级越高。

CSS优先级从高到低分别是:

1.在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。

2.作为style属性写在元素标签上的内联样式

3.id选择器

4.类选择器

5.伪类选择器

6.属性选择器

7.标签选择器

8.通配符选择器

9.浏览器选择器

当CSS样式的规则由多个选择器组成时,id选择器的权值为1000,class选择器为100,标签选择器为10,按权值求和的记过高低决定哪个优先。当两个css规则的权值相同时,谁更具体用谁,也就是权值高的选择器作用的越具体优先级越高。当两个选择器规则和权值都是一样,后面样式会覆盖前面的!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。