【发布时间】:2018-01-31 01:33:32
【问题描述】:
我注意到在具有透明背景的图像上使用 CSS 颜色过渡会产生意想不到的效果。这是一个例子:
:root {
--size: 4em;
--duration: 5s;
}
html, body {
margin: 0;
background: slategray;
color: white;
}
.main-menu {
overflow: hidden;
background: black;
}
.main-menu *:hover {
background: skyblue;
-webkit-transition-duration: 5s;
transition-duration: var(--duration);
}
.image-div {
float: right;
padding: calc(var(--size) / 2);
-webkit-transition-duration: 5s;
transition-duration: var(--duration);
}
.image {
max-width: var(--size);
}
<div class="main-menu">
<div class="image-div">
<img class="image" src="https://s4.postimg.org/5zy6kjqcd/maximize.png"/>
</div>
</div>
总而言之,问题是这样的。如果您将鼠标悬停在 image-div div 的内边距上,则该 div 的背景颜色和包含的 image div 以相同的速率执行颜色转换,正如预期的那样。但是,如果您将鼠标悬停在 image div 上,其颜色的过渡似乎比 image-div div 的颜色稍快。
鉴于我能够在 Firefox、Chrome、Safari 和 Edge 上重现这种确切的行为,我觉得这是预期的行为,但我想了解它为什么会发生。
【问题讨论】:
-
我将源代码发布到JSFiddle,如果你想玩的话。
标签: html image css css-transitions