will-change
will-change 为web开发者提供了一种告知浏览器该元素会有哪些变化的方法,
这样浏览器可以在元素属性真正发生变化之前提前做好对应的优化准备工作。
这种优化可以将一部分复杂的计算工作提前准备好,使页面的反应更为快速灵敏;
通常,当元素恢复到初始状态时,浏览器会丢弃掉之前做的优化工作。
但是如果直接在样式表中显式声明了 will-change 属性,则表示目标元素可能会经常变化,
浏览器会将优化工作保存得比之前更久。所以最佳实践是当元素变化之前和之后通过脚本来切换 will-change 的值。
如果你的页面在性能方面没什么问题,则不要添加 will-change 属性来榨取一丁点的速度。
will-change 的设计初衷是作为最后的优化手段,用来尝试解决现有的性能问题。它不应该被用来预防性能问题。
过度使用 will-change 会导致大量的内存占用,并会导致更复杂的渲染过程,因为浏览器会试图准备可能存在的变化过程。这会导致更严重的性能问题。
pointer-events
CSS 属性指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件的 target。
pointer-events: auto;
pointer-events: none; //元素永远不会成为鼠标事件的target
pointer-events: visiblePainted; /* SVG only */
pointer-events: visibleFill; /* SVG only */
pointer-events: visibleStroke; /* SVG only */
pointer-events: visible; /* SVG only */
pointer-events: painted; /* SVG only */
pointer-events: fill; /* SVG only */
pointer-events: stroke; /* SVG only */
pointer-events: all; /* SVG only */
除了指示该元素不是鼠标事件的目标之外,值none表示鼠标事件“穿透”该元素并且指定该元素“下面”的任何东西。
对body元素应用pointer-events:none,禁用了包括hover在内的鼠标事件,从而提高滚动性能。
使用pointer-events来阻止元素成为鼠标事件目标不一定意味着元素上的事件侦听器永远不会触发。
如果元素后代明确指定了pointer-events属性并允许其成为鼠标事件的目标,那么指向该元素的任何事件在事件传播过程中都将通过父元素,
并以适当的方式触发其上的事件侦听器。当然,位于父元素但不在后代元素上的鼠标活动都不会被父元素和后代元素捕获
(鼠标活动将会穿过父元素而指向位于其下面的元素)。
all
all可以重置一个元素除了unicode-bidi and direction以外的所有属性;可以将属性重置为初始值或者继承值,或者其他;
initial | inherit | unset | revert
伪类选择器
- :indeterminate 不确定状态; indeterminate默认为false,在元素标签上设置值没有用;必须在脚本设置为true
- :default 表单元素的默认状态,其后操作取消或选中,不影响:default设置的样式
- :defined 表示任何已定义的元素。这包括任何浏览器内置的标准元素以及已成功定义的自定义元素 (例如通过 CustomElementRegistry.define() 方法)
- :in-range input元素,其当前值处于属性min 和max 限定的范围之内
- :out-of-range input元素,其当前值处于属性 min 和 max 限定的范围外
- :invalid 表示任意内容未通过验证的 input 或其他 form 元素
- :valid 表示任意内容通过验证的 input 或其他 form 元素
- :read-only 表示元素不可被用户编辑的状态,除了form元素,所有的标签默认都是
- :read-write 表示元素可被用户编辑的状态,除了form元素,contenteditable=”true”的都满足
- :root 匹配文档树的根元素。对于 HTML 来说,:root 表示 html元素,除了优先级更高之外,与 html 选择器相同
- :target CSS 伪类 代表一个唯一的页面元素(目标元素),其id 与当前URL片段匹配
伪元素
- ::backdrop 是在任何处于全屏模式的元素下的即刻渲染的盒子(并且在所有其他在堆中的层级更低的元素之上)
- ::selection CSS伪元素应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分)
角度图解