【问题标题】:Table-styled elements do not show IE gradients correctly表格样式的元素无法正确显示 IE 渐变
【发布时间】:2013-10-21 15:57:13
【问题描述】:

我在 IE8/9 中遇到了一个关于其渐变过滤器的特性。考虑以下样式:

background:#F2F2F2;
background:-webkit-linear-gradient(top,#F2F2F2,#CECECE);
background:   -moz-linear-gradient(top,#F2F2F2,#CECECE);
background:     -o-linear-gradient(top,#F2F2F2,#CECECE);
background:  linear-gradient(to bottom,#F2F2F2,#CECECE);
-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(startColorStr='#F2F2F2',endColorStr='#CECECE',GradientType=0)";

渐变在带有display:block; 的元素上正确显示。但是,当应用于display:table; 时,IE9 将在渐变顶部显示#F2F2F2。为了暂时解决这个问题,我删除了背景色,但当然现在我没有纯色后备。

我的问题是:为什么要这样做?(无 js)解决方法是什么?

【问题讨论】:

    标签: css internet-explorer linear-gradients


    【解决方案1】:

    filter 渐变有许多主要限制和错误。您似乎发现了其中之一。

    如果您的浏览器支持的基础级别是 IE9,那么您可能需要考虑使用 SVG 数据 URL 来进行渐变。对于 IE9 中的渐变,这是一个相当常见的解决方法。尽管它会使您的代码变得混乱且难以处理,但它至少可以很好地工作。

    您可以从此处生成 SVG 渐变数据网址:http://ie.microsoft.com/testdrive/Graphics/SVGGradientBackgroundMaker/Default.html

    如果您需要支持 IE8 或更早版本,这将不起作用,坦率地说,我认为您不会找到任何其他非 js 解决方案可以满足您的需求。 (除了回到老派并使用PNG图像作为背景渐变)

    我所知道的适用于所有 IE 版本的唯一好的解决方案是使用CSS3Pie library。是的,这是一个 JS 库,因此它不符合您的非 js 标准,但它非常不具侵入性(其他浏览器会完全忽略它,甚至不会下载它)。它还具有允许您使用基于标准的代码进行渐变的优势,即使在非常旧的 IE 版本中也是如此。您仍然可以为确实禁用 JS 的用户提供纯色后备,因此您的网站应该在某种程度上适用于所有人。

    【讨论】:

    • 我也这么认为。这似乎是一个随机的故障。但是 IE8 的哪个部分没有受到随机故障的困扰? IE8 仍然困扰着我们,因为我们的大多数用户继续从尚未升级到 9 的学校或工作场所登录(来吧人们!!!)。我不知道 CSS3PIE 不能在非 IE 浏览器上下载。我敢肯定,如果老板对此感到不满,我最终会走那条路。目前,默认为平面背景不会激怒太多的羽毛。 --非常感谢!
    猜你喜欢
    • 2017-07-25
    • 2016-04-12
    • 2019-07-19
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多