【问题标题】:linear-gradient not working in Chrome线性渐变在 Chrome 中不起作用
【发布时间】:2026-01-04 09:50:02
【问题描述】:

经过大量搜索后,我陷入了线性渐变,它在 Firefox 中有效,但在 Chrome 中无效。

我在一个参考文献中描述的线性渐变之前添加了-webkit-,但仍然无法正常工作我认为问题出在渐变轴上

我的代码

<nav class="top_menu">
    <ul class="black_high">
        <li class="first active"> <a href="#">Home</a>

        </li>
        <li> <a href="#">news</a>

        </li>
    </ul>
</nav>
.top_menu ul li.active a::after {
    position: absolute;
    bottom: 8px;
    left: 0;
    width: 100%;
    height: 2px;
    transform:none;

    content: '';
    opacity: 1;
    background: #fff;
    background: linear-gradient(left, transparent 0%,#fff 50%,transparent 100%);
    background: -moz-linear-gradient(left, transparent 0%,#fff 50%,transparent 100%);
    background: -webkit-gradient(left, transparent 0%,#fff 50%,transparent 100%);
}

在这里创建一个小提琴 -- http://jsfiddle.net/h2zu5xx2/4/

任何提示/建议都会很好。提前致谢。

【问题讨论】:

  • 你的 webkit 渐变的 css 是错误的。如果您查看它,则属性无效,因此语法错误。您是否从检查器(例如 chrome 中的开发工具)中查看过它,您可能很容易发现它。
  • @Hashem 我无法在您的答案中发表评论,也无法再看到它。但我想说非常感谢你指出我的错误和这个精彩的解释。

标签: css google-chrome linear-gradients


【解决方案1】:

首先请注意,-webkit-gradient 由 Apple 设计,并于 2008 年在基于 Webkit 的网络浏览器(例如 Safari 4)中实现,其语法与 W3C 标准完全不同:

-webkit-gradient(<type>, <point> [, <radius>]?, <point> [, <radius>]? [, <stop>]*)

例如:

background: -webkit-gradient(linear, left top, right top, color-stop(0%,#87e0fd), color-stop(40%,#53cbf1), color-stop(100%,#05abe0));

这就是为什么你不能让它在你的情况下工作。

一年后,Mozilla 引入了-moz-linear-gradient(自 Firefox 3.6 起),它的语法也与旧的 Webkit 版本不同,但随后在 -webkit-linear-gradient 下的 Webkit 中实现:

-moz-linear-gradient([ [ [top | bottom] || [left | right] ],]? <color-stop>[, <color-stop>]+)

然而linear-gradient的W3C标准版本却不同,linear-gradient()表达式的正式语法是:

linear-gradient() = linear-gradient(
  [ <angle> | to <side-or-corner> ]? ,
  <color-stop-list>
)
<side-or-corner> = [left | right] || [top | bottom]

从您发布的代码中可以看出,另一个错误是 W3C 版本中缺少 to &lt;side&gt;。因此,在您的情况下,它应该是:

Example Here.

background: -webkit-gradient(linear, left top, right top, color-stop(0%, transparent), color-stop(50%,#fff), color-stop(100%,transparent)); /* Chrome, Safari4+ */
background: -webkit-linear-gradient(left, transparent 0%,#fff 50%,transparent 100%); /* Chrome10+, Safari5.1+ */
background: -moz-linear-gradient(left, transparent 0%,#fff 50%,transparent 100%);    /* FF3.6+ */
background: linear-gradient(to left, transparent 0%,#fff 50%,transparent 100%);      /* W3C */

【讨论】:

  • 这个答案是任何 CSS 渐变工作的关键。线性渐变需要对每个浏览器进行不同的处理。考虑使用生成器,例如colorzilla.com/gradient-editor
【解决方案2】:

使用

background: -webkit-linear-gradient(left, transparent 0%,#fff 50%,transparent 100%);

与 Mozilla 的定义类似。

【讨论】:

    【解决方案3】:
    background: rgb(0,0,0);
    background: linear-gradient(NaNdeg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%);
    

    这是答案,检查它! (注* - NaN 与 'xx' 相同,表示您可以根据需要更改值。)

    或者另一种方法是您可以使用渐变生成器创建渐变。 链接到我自制的梯度生成器:- https://dynamicmortal.github.io/GradientGenerator/

    (只需复制生成的css)

    【讨论】:

    • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
    • NaN 只是告诉“xx”的一种方式,意味着您可以根据需要填写自己的答案。
    最近更新 更多