css - 将 CSS 延迟到 :hover if possible? 是否更高效

标签 css

考虑以下几点:

.element {
    cursor: pointer;
}

.element:hover {
    cursor: pointer;
}

对我来说,这两个 CSS 片段是相同的。光标仅在悬停元素时可见。两种装饰光标的方法都同样有效。

我很好奇它在幕后是如何工作的。这里有使用其中一个的偏好吗?如果是,为什么?

最佳答案

这里我们来分析一下。唯一的区别是 hover 伪元素,它以声明方式指示更改呈现以响应用户操作。

CSS3 spec中的游标属性描述包含以下内容:

This property specifies the type of cursor to be displayed for the pointing device when over the element's border, padding, and content.

这可以解释为修改光标作为对鼠标悬停事件的响应。

另一方面,CSS3 Spec 中的 :hover 伪选择器描述包含以下内容:

A visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element.

这会将一整套属性应用于相关元素作为对鼠标悬停事件的响应,这可能意味着如果您在那里有一些其他属性,则可能需要重新绘制屏幕的某些部分,但由于您只是设置鼠标光标重绘不应该发生,因此对于您的特定示例,使用带有光标的悬停可以被视为语法过于复杂,因为它们的作用完全相同。

对于您的具体示例,应该没有任何显着的性能差异,因为在这两种情况下都会引发鼠标悬停事件,并且 native 代码中的事件处理程序会应用新光标。不会发生重绘。

关于css - 将 CSS 延迟到 :hover if possible? 是否更高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323056/

相关文章:

html - 自适应iframe仅适用于Youtube,不适用于Vimeo

html - 如何更改超大屏幕的背景颜色?

css - 在 style.css 中更改颜色不适用于 WP 主题

php - Magento2 为产品图片添加动态背景

javascript - 当我在图标 Bootstrap 中单击时展开网格系统列

javascript - li .sibling .fadeTo 问题与 jQuery

jquery - 适用于所有屏幕尺寸的 HTML 前端

html - 更改输入表单的值属性及其样式

jquery - CSS(或 jQuery): How to set horizontal scrollbar in the middle position?

html - 水印 CSS 在打印中不起作用