当前位置: 首页 > 知识库问答 >
问题:

透明背景图像的CSS颜色过渡行为

佘俊茂
2023-03-14

我注意到在具有透明背景的图像上使用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以与预期相同的速率执行颜色转换。但是,如果将鼠标悬停在图像div上,其颜色的过渡速度似乎略快于图像div div的颜色。

鉴于我能够在Firefox、Chrome、Safari和Edge上重现这种确切的行为,我觉得这是预期的行为,但我想了解为什么会发生这种情况。

共有2个答案

蒋弘致
2023-03-14

鉴于我能够在Firefox、Chrome、Safari和Edge上重现这种确切的行为,我觉得这是预期的行为,但我想了解为什么会发生这种情况。

发生这种情况的原因是,img变换会拾取图像div变换后的颜色,因此会更快变亮。

简而言之,image-div从纯黑变为纯黑,而img从黑色变为天蓝色。

此外,由于在到达img之前将鼠标移动到图像div上,因此转换会在之前开始,尽管延迟取决于将鼠标移动到img的速度

巢宏富
2023-03-14

当您将鼠标悬停在img上时,会触发两个悬停事件,一个在img上,另一个在其父图像div上,当您在中使用时。主菜单*:悬停选择器:

相反,仅在image-div上使用悬停,如下所示:

.main-menu .image-div:hover {
  background: skyblue;
}

现在转换的区别将不存在-请参阅下面的演示:

html, body {
  margin: 0;
  background: slategray;
  color: white;
}
.main-menu {
  overflow: hidden;
  background: black;
}
.main-menu .image-div:hover {
  background: skyblue;
}
.image-div {
  float: right;
  padding: calc(4em / 2);
  -webkit-transition-duration: 5s;
  transition-duration: 5s;
}
.image {
  max-width: 4em;
}
<div class="main-menu">
  <div class="image-div">
    <img class="image" src="https://s4.postimg.org/5zy6kjqcd/maximize.png"/>
  </div>
</div>
 类似资料:
  • 问题内容: 我有一个DIV,我想放置一个图案作为背景。此图案是灰色的。为了使它更好一点,我想在上面放一个透明的颜色“层”。以下是我尝试过的方法,但是没有用。有没有办法将彩色图层放在背景图像上? 这是我的CSS: 问题答案: 这里是: 对此的HTML: 当然,如果其中没有其他元素,则需要为该类定义宽度和高度

  • 问题内容: 我没有使用CSS3。所以我不能使用或属性。不使用这些属性,如何使a透明?它应该是此链接中的文本框示例。这里的文本框背景色是透明的。我想做同样的事情,但是不使用上面提到的属性。 问题答案: 不透明度使您透明或透明。在这里查看示例Fiddle。 注意:这些不是CSS3属性

  • 在超文本标记语言中,我什么时候使用颜色,背景颜色和背景标签有什么区别? 有什么区别?

  • 问题内容: 假设我要在CSS中渲染箭头,箭头应具有头部,尾部和灵活的宽度,以便可以包含文本。我当然可以创建多个div来获得所需的内容,但是如何在CSS3中完成呢? 我可以使用多个背景图片: 的HTML: 这给了我一个带有箭头和尾巴的透明中间部分。似乎不可能在中间部分指定颜色。 仅使用一张背景图像,您可以执行以下操作: 我知道这在很多方面都是可行的,但是背景颜色属性是否真的从速记定义中丢失了? 问题

  • 我尝试将背景透明的tiff格式的图像转换为jpeg,以将其大小调整为200x200或1200x1200,但在转换时,背景变为黑色,我希望在转换后保持背景透明或白色 我的代码如下: 这在java JAI中是如何实现的?

  • 问题内容: 我正在使用类似于以下代码的内容: 我希望这可以使背景的不透明度为0.4,文本的不透明度为100%。相反,它们都具有0.4的不透明度。 问题答案: 儿童遗传不透明。如果他们不这样做,那将会很奇怪和不便。 您可以为背景图像使用半透明的PNG文件,也可以为背景颜色使用RGBa(alpha表示)颜色。 例如,50%的黑色背景褪色: