html - safari 和 firefox vs chrome - css 渐变

标签 html css gradient

我遇到过一个特殊的情况,chrome vs safari + firefox 在渐变的渲染方式上有很大的不同。

观察:http://jsfiddle.net/k9z6pt7z/

background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(56,56,56,1) 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(100%,rgba(56,56,56,1))); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(56,56,56,1) 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(56,56,56,1) 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(56,56,56,1) 100%); /* IE10+ */
    background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(56,56,56,1) 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#383838',GradientType=0 ); /* IE6-9 */

我认为 chrome one 是正确的版本,如何让 safari + ff 以相同的方式运行?

左边是 safari,右边是 chrome。

enter image description here

最佳答案

简短的回答是您不需要。

长话短说,对于它们应该如何从起始梯度值到最终值,没有强制规定的具体方法。硬件加速会将其传递给任何图形卡的渲染引擎,但供应商处理它的方式因渲染引擎而异,因为没有硬件渐变填充将留给各个浏览器引擎。

如果你真的需要它们尽可能靠近(注意我没有说相同)那么你将不得不求助于使用超大图像作为背景并调整其位置以适应可用区域.所有这些都意味着不同屏幕尺寸下的结果略有不同。

当然有些浏览器根本不会呈现渐变。

如果您真的想要,您可以尝试更改起始值、值和百分比,但这需要大量工作,而且效果取决于您的用户监视器有多好,所以并不是很有用。

所以实际上它对用户(而不是你)真的很重要。如果它们确实碰巧在浏览器之间切换(为什么会这样)并且在特定浏览器上使用时始终保持一致,它将看起来非常相似(甚至接近)。字体在浏览器之间呈现不同 标记的呈现在不同操作系统/平台上的相同浏览器之间会有差异。

重要的是不要在每个平台/操作系统/浏览器上保持像素相同,因为那是不可能的。而是让您的用户清楚、一致地访问他们需要的信息。

关于html - safari 和 firefox vs chrome - css 渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28368227/

相关文章:

html - 字体显示不好

html - css display none 属性不适用于 Internet Explorer 上的 contenteditable div

php - 使用 ACF Gallery 图像在图像链接上叠加文字

image - 对角非线性梯度的算法

html - 用于 Disqus 评论的 RSelenium 抓取

php - 将HTML表单的输入数据插入JSON对象,然后将其存储在MYSQL中

javascript - 从 HTMLVideoElement 中提取帧

jQuery + CSS 滚动到容器部分

css - IE10、IE11 中的跨浏览器 css 渐变

html - CSS - 背景渐变和背景图像发送到底部