【问题标题】:Is it okay to make really large linear gradients? [closed]可以制作非常大的线性渐变吗? [关闭]
【发布时间】:2020-03-30 13:08:59
【问题描述】:

对于链接悬停效果,我希望背景颜色与当前文本颜色相同,并具有一点透明度。由于您不能直接将 alpha 添加到 currentColor,因此我想出的一个技巧是使用真正拉伸的渐变(见下文)。

这很好用,但我不确定在资源方面让端点远离图表是否安全。浏览器是否必须生成整个渐变(这将是一个巨大的图像)以仅显示其中的一部分,还是只生成必要的部分?如果一个页面上有很多这些,浏览器是否必须为每个实例重新生成它?

简而言之,制作像下面这样的巨大渐变会导致性能问题,还是可以这样做?

a {
    color: blue;
}
a:hover {
    background: linear-gradient(currentColor -25000%, transparent 10000%);
    /* stretched out far enough so you only see a single color */
    /* (these values work like an alpha of 0.25) */
}
<a href="#">lorem ipsum</a>
<a href="#" style="color: red;">lorem ipsum</a>

【问题讨论】:

  • 这完全取决于浏览器如何实现渐变以及这样做的效率如何。在你关心的所有浏览器上用一个有代表性的例子对其进行基准测试……

标签: css linear-gradients html-rendering


【解决方案1】:

您可以使用伪元素并这样做。

.link {
  position: relative;
  display: inline-block;
  color: red;
  padding: 1rem;
}

.link::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: currentColor;
  opacity: 0;
  z-index: -1;
  transition: opacity 140ms ease;
}

.link:hover::after {
  opacity: .4;
  transition: opacity 140ms ease;
}
&lt;a href="#0" class="link"&gt;press&lt;/a&gt;

【讨论】:

  • 谢谢,这似乎是一种不那么骇人听闻的方式。你建议我们现在如何处理这个问题?问一些我不再使用的东西没有多大意义,而且一开始有点含糊。
  • @vvye 您的问题是一个问题并得到了答案。我建议你接受这个作为答案:)
猜你喜欢
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多