CSS反向悬停动画

时间:2019-12-10 20:22:43

标签: html css

我用CSS编写了一个HTML页面,当用户将鼠标放在其上时,文本的颜色变为红色,如果将鼠标移出,则返回白色。

问题是,由于transition: 2s color linear;,页面加载时文本会执行“淡入”动画(我需要将颜色从白色更改为红色,但一开始它是从透明更改为(我认为)为白色)

有没有一种方法可以使文本立即显示而不会淡入淡出?

这是代码和jsfiddle,但是您需要将代码复制并粘贴到计算机上,然后使用浏览器将其打开,以查看“淡入”(在jsfiddle上看起来没有不良影响)< / p>

这是HTML

html,
body {
  background-color: black;
  color: white;
  overflow: hidden;
}

p {
  text-align: center;
  cursor: default;
}

.watermark {
  display: block;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  resize: none;
}

#watermark {
  color: white;
  font-size: 260%;
  transition: 2s color linear;
  -webkit-transition: color 2s linear;
}

#watermark:hover {
  transition: 0.5s ease-in-out;
  -webkit-transition: 0.5s linear;
  color: rgb(255, 17, 69);
}
<!DOCTYPE html>
<html lang="it">

<head>
  <link rel="stylesheet" type="text/css" href="home.css">
</head>

<body>
  <div class="watermark">
    <p id="watermark">hover effect</p>
  </div>
</body>

</html>
=

2 个答案:

答案 0 :(得分:2)

这与在Chrome中加载CSS文件的方式有关,我敢肯定不是所有的浏览器都会遇到此问题。一种解决方案是创建一个空白脚本标签,以迫使浏览器认为它是在CSS之后加载到文件中的。 Chrome似乎有问题(请参见下面的STackOverflow链接)。

HTML:

<!DOCTYPE html>
<html>

    <head>
        <link rel="stylesheet" type="text/css" href="home.css">
        <script> </script>
    </head>

    <body>
        <div class="watermark">
                <p id="watermark">hover effect</p>
        </div>
    </body>

</html>

编辑:

这里是到堆栈溢出讨论区的链接,其中对此进行了详细介绍。我通读了它,发现了这个简单的修复程序。所以编辑我的答案。

Stop CSS transition from firing on page load

答案 1 :(得分:0)

您的过渡声明应为:

transition: color 2s linear;