【问题标题】:CSS Border Image Gradient Not Working in Safari 10CSS边框图像渐变在Safari 10中不起作用
【发布时间】:2017-04-15 12:14:27
【问题描述】:

我遇到了 Safari 10 和 CSS 边框图像渐变的问题。它适用于所有其他浏览器,甚至在 Safari 9 中。它甚至出现在 Safari 10 的在线模拟器中。请看下面的图片:

(我猜是IE 11,不是IE 10。感谢指正!)

我以为它只是我的 CSS,所以我真的简化了它并做了一个小提琴。你可以在https://jsfiddle.net/tgbuxkee/看到它

它也在下面生成。

div {
  width: 200px;
  height: 200px;
  border: 6px solid transparent;
    -moz-border-image: -moz-linear-gradient(top, #f0e2d0 0%, #c08b62 100%);
    -webkit-border-image: -webkit-linear-gradient(top, #f0e2d0 0%, #c08b62 100%);
    border-image: linear-gradient(to bottom, #f0e2d0 0%, #c08b62 100%); 
    -webkit-border-image-slice: 2;
    border-image-slice: 2;
  
}
<div>

</div>

有人知道为什么会发生这种情况吗?我知道 Safari 中有一个带有一些图像边框的bug,但我认为这里不是这种情况(也许是这样)。

指导很有帮助。

谢谢。

【问题讨论】:

  • 我过去见过这个,但我不能 100% 确定它仍然有效(所以还没有发布答案)。而不是border: 6px solid transparent;只需尝试设置border-width: 6px; border-style: solid;(没有border-color)就可以了。它也适用于其他浏览器,因为图像会覆盖颜色。

标签: css safari border-image css-gradients


【解决方案1】:

以下可能是有用的补充信息。已接受的答案对于 Safari 11 仍然是正确的(截至发帖时),但作为记录,我还发现使用 border-image:url,Safari(v11) 将接受速记边框, transparent, if 你列出了 -webkit- 供应商前缀 last,像这样:

div {
  border:1px solid transparent;
  border-image:url([some-border-image]) 1 0 1 repeat;
  -webkit-border-image:url([some-border-image]) 1 0 1 repeat;
}

由于最后列出供应商前缀是不标准的,我更喜欢接受的答案,因为大多数网络标准都友好。

【讨论】:

    【解决方案2】:

    我过去曾遇到过这个问题,记得在网上某处阅读过,避免使用 border-color: transparent 设置可以解决问题。我不记得我在哪里读到的。

    Mac 上的 Safari 10 似乎优先使用透明边框颜色而不是边框​​图像,因此不显示任何内容。仅设置 border-widthborder-style 就可以解决它。此解决方案也适用于其他受支持的浏览器。

    在 Chrome v56 (dev)、Safari 10 (Mac)、Safari 5 (Windows)、Safari (iOS)、IE11、Edge、Firefox 47.0.1、Opera 41 上测试。

    注意:您在问题中引用了 IE10,但据我所知 border-image doesn't work in it,因此给定的解决方案也没有。

    div {
      width: 200px;
      height: 200px;
      border-width: 6px;
      border-style: solid;
      -moz-border-image: -moz-linear-gradient(top, #f0e2d0 0%, #c08b62 100%);
      -webkit-border-image: -webkit-linear-gradient(top, #f0e2d0 0%, #c08b62 100%);
      border-image: linear-gradient(to bottom, #f0e2d0 0%, #c08b62 100%);
      -webkit-border-image-slice: 2;
      border-image-slice: 2;
    }
    <div>
    
    </div>

    【讨论】:

    • 这就是解决方案!多么奇怪的“功能”。非常感谢!并感谢 IE 10 的编辑。我想我使用的是 IE 11。
    猜你喜欢
    • 2018-02-12
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    相关资源
    最近更新 更多