2023年5月

user-select是一个CSS属性,用于控制用户是否可以选中元素的文本内容。该属性有以下可选值:

  • none:禁止用户选择元素中的文本内容;
  • auto:允许用户选择元素中的文本内容;
  • text:类似auto,但只有文本内容可选中,其他元素不可选中;
  • contain:类似auto,但元素中的所有内容都可选中。

例如,以下代码将禁止用户选择所有div元素中的文本内容:

div {
  user-select: none;
}

该属性适用于多种情况,例如可以用于禁止用户选择页面上的某些元素、提高表单的易用性等等。

will-change是CSS属性,用于提前告诉浏览器哪些元素的属性可能会被修改,从而优化性能。

当使用CSS进行动画或过渡效果时,浏览器通常需要重新计算页面布局和绘制。这可能会导致卡顿和性能问题。使用will-change属性,可以让浏览器提前知道哪些元素可能会发生变化,从而进行预先优化,减少动画效果的卡顿和性能问题。

will-change属性可以设置的值包括:

  • auto:默认值,不进行任何优化
  • scroll-position:表示元素的滚动位置可能会发生变化
  • contents:表示元素的内容可能会发生变化
  • transform:表示元素的变换属性(如transformtranslatescale等)可能会发生变化
  • opacity:表示元素的不透明度可能会发生变化
  • leftrighttopbottom:表示元素的定位属性(如positionleftrighttopbottom)可能会发生变化

需要注意的是,过度使用will-change属性可能会导致性能问题,因为它会强制浏览器创建一个新的图层,从而增加了内存和计算的负担。因此,只有在需要优化性能的情况下才应该使用will-change属性。