【问题标题】:Does a CSS transition effect on HTML links slow down page transitions on click?HTML 链接上的 CSS 过渡效果会减慢点击时的页面过渡吗?
【发布时间】:2016-01-26 13:27:16
【问题描述】:

我在我网站的 CSS 中找到了这个 sn-p:

a {
    transition: 0.25s;
}

我不确定它到底是做什么的,但我担心当有人单击链接进入下一页时,它会增加四分之一秒的延迟。我应该出于性能原因将其删除吗?

【问题讨论】:

  • @PraveenKumar 总的来说,这看起来像是对 CSS 过渡性能的一个很好的概述,但我认为它没有专门解决链接上的过渡效果。
  • 它不会对点击事件产生任何影响。过渡效果 CSS.
  • @StephenOstermiller 这就是为什么我不确定...:)
  • @AhsN 不正确。此代码可能会影响为 CSS 中其他位置的链接定义的任何属性。示例:jsfiddle.net/3w388nbk/1

标签: html css hyperlink css-transitions transitions


【解决方案1】:

CSS 会影响页面上 DOM 元素的视觉呈现。过渡属性将应用于 CSS 更改(例如淡入淡出、增长/收缩)。单击链接超出了 CSS 的范围,不会导致延迟。延迟完全取决于所应用的效果。

【讨论】:

  • 如果它不影响点击时的页面转换,它会做什么?
  • 这只是一个通用的 CSS 声明。与其说“高度转换”、“宽度转换”、“颜色转换”,不如说更一般的“转换”。据我所知,您通常会说 transition: all 0.25s; (不确定是否可以省略)这会将所有 CSS 更改应用于过渡。页面导航与 CSS 没有任何联系。
【解决方案2】:

CSS 转换不会影响页面之间的转换。它们只能影响页面本身的视觉效果。

在这种情况下,当您将鼠标悬停在链接上时,可能会使颜色变化变得更柔和,而不是瞬间发生。下面的代码片段演示了它,延迟时间更长 2 秒,以使其更明显。

a {
  transition: 2s;
  color: blue;
}
a:hover {
  color: red;
}
<a href="#">Hover over this link</a>

如果确实如此,那么指定应用变换的确切效果会更安全。 Kamuran Sönecek 在他的回答中指出,当链接改变大小并强制页面重排时,这可能是一个性能问题。 colorbackground-color 是它可能针对的目标。确保过渡仅应用于这些项目会更安全。

指定transition-property,在它应用的地方也会更清楚。如果很清楚它适用于哪些转换,我可能不会一开始就问这个问题。

a {
  transition: color, background-color, 2s;
  color: blue;
  background-color: white;
}
a:hover {
  color: red;
  background-color: #CCC;
}
<a href="#">Hover over this link</a>

【讨论】:

    【解决方案3】:

    一些过渡影响性能。我们在构建上一个 SPA 项目时遇到了性能问题。

    当任何样式属性更改时,您的 CSS sn-p 将影响所有 a 元素。

    div {transition: 2s;height:100px;background:#f00;width:100px}
    

    如果你使用这个 CSS sn-p,所有的改变都将通过动画完成:背景、高度、宽度、文本颜色等。

    示例如下:

    var width = 100;
    function myFunc(){
        width += 100;
        document.getElementById("teest").style.width = width + "px";
        document.getElementById("teest").style.background = '#FF9' + width;
    }
    setInterval(myFunc,2000);
    * {transition: 2s}
    div {height:100px;background:#f00}
    #teest { width:100px}
    <div id="teest"></div>

    【讨论】:

    • 是的,它会影响性能,但仅限于页面渲染。它不会像我担心的那样为每次点击增加 250 毫秒。
    • 我更新了我自己对这个问题的回答,因为这表明应该将过渡移至a:hover,这将进一步限制其范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2016-11-18
    • 1970-01-01
    • 2015-07-15
    • 2014-03-18
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多