css - 底部边框仅在 Internet Explorer 7 中使用带渐变的背景图像

标签 css html internet-explorer-7 linear-gradients

我正在尝试设计一个底部具有线性渐变的 div 标签,以赋予其淡入淡出效果。

我已经能够使用下面的 CSS 在 Chrome、Internet Explorer 10、Firefox 等上这样做。

我使用了 Internet Explorer 7 的过滤器和 progId,但它为整个 div 提供了背景,而不仅仅是底部或顶部。

我认为这是因为,不幸的是,Internet Explorer 7 不读取 CSS background-size 属性。

有谁知道如何让线条定位在 div 标签的底部?

<!DOCTYPE html>
<html>
<head>
<style> 
div
{
padding:20px 40px; 
overflow: hidden;
background-image: linear-gradient(90deg, #000, #FFF, #000), linear-gradient(90deg, #000, #FFF, #000);
background-image: -webkit-linear-gradient(90deg, #000, #FFF, #000), -webkit-linear-gradient(90deg, #000, #FFF, #000);
background-image: -webkit-gradient(linear, 90deg, #000, #FFF, #000), -webkit-gradient(90deg, #000, #FFF, #000);
background-image: -moz-linear-gradient(90deg, #000, #FFF, #000), -moz-linear-gradient(90deg, #000, #FFF, #000);
background-image: -o-linear-gradient(90deg, #000, #FFF, #000), -o-linear-gradient(90deg, #000, #FFF, #000);
filter:  progid:DXImageTransform.Microsoft.gradient( startColorstr='#000000', endColorstr='#ffffff',GradientType=1 );
background-size: 100% 2px;
background-position: 0 100%;    
background-repeat: no-repeat;
width: 100%;
background-color: #111111;
color:#ffffff;
}

</style>
</head>
<body bgcolor="#111111;">

<div>Example of what it looks like in Chrome, FF etc.</div>

</body>
</html>

最佳答案

这与其说是 IE7 错误,不如说是 IE7 没有现代浏览器功能。考虑到它的年龄,这真的不足为奇。

您正在使用的 filter 样式是在 IE7 中执行渐变的常用方法,但它绝对是非标准的,并且不能期望以相同的方式工作。它们是最初不是为网络设计的外部组件,通过 activeX 被混入 IE。这不是很好。

关于如何处理这个问题,您有几个选择:

  1. 接受 IE7 并不真正支持渐变的事实,并给它一个纯色背景作为后备。

  2. 接受 IE7 可以使用 filter 渐变,但它们不是很好。

  3. 使用 javascript polyfill,例如 CSS3Piefilter 样式相比,它在绘制渐变方面做得更好。

我将重点介绍最后一个选项,因为我怀疑这是您要使用的选项。 CSS3Pie 侵入 IE 的 CSS 解析,以使其支持(接近)标准 CSS 渐变(和其他功能)。

它比 filter 风格更好的地方在于它使用 IE 的 VML 图形语言来呈现这些渐变。这比 filter 灵活得多,并且允许您使用复杂的渐变。有一些限制,但总的来说,结果比对渐变使用 filter 好得多。

它还具有使用标准 CSS 语法的优势,这使得编写和维护变得更加容易。

唯一的缺点是它是一个 javascript 库,如果您过度使用它,它确实有可能减慢您的网站速度。我没有遇到过这个问题,但关键是要将你对这个库(和一般的 polyfills)的使用保持在最低限度;在对您的网站产生真正影响的地方以及后备选项不够好的地方使用它们。

希望对您有所帮助。

关于css - 底部边框仅在 Internet Explorer 7 中使用带渐变的背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268638/

相关文章:

jquery - 调整窗口大小时保持 "position: fixed"div 的水平位置

javascript - 使用dragula javascript获取删除的div的id

jquery - 令人头疼的IE6和7 bug

html - 100% 宽度 textarea 在 IE7 中忽略父元素的宽度

html - Wordpress Customizr - 更改正文中的字体大小

jquery - 你如何添加一个像mybb这样的可折叠表格

html - 将 CSS 应用于特定类的最后一个元素

html - flex-direction 和 flex 不适用于所有浏览器

html - 带有 Template::Toolkit 的当前模板文件名

javascript - jQuery UI 按钮在 IE 7 上不起作用