【问题标题】:box shadow different in IE than in chromeIE 中的框阴影与 chrome 中的不同
【发布时间】:2015-01-13 19:44:29
【问题描述】:

每个人都知道盒子阴影在 IE 中的渲染与在 chrome 或 Firefox 中的渲染完全不同(这对我来说是难以置信的)。我的问题是你如何处理这种情况?因为在某些情况下设计可以完全改变......大多数时候IE上的盒子阴影比Chrome / Firefox上的要薄。他们是否有任何可以在 IE 上自动增加一点盒子阴影的 java-script 插件?

【问题讨论】:

  • 3个人不使用他们的声音讲述你的故事的唯一方法是让他们都录制你自己的声音讲述故事:) 例如jpg、gif等
  • Internet Explorer 支持box-shadow 已有一段时间了。到底有什么不同?

标签: javascript css google-chrome internet-explorer


【解决方案1】:

我认为你应该记住这一点:http://dowebsitesneedtolookexactlythesameineverybrowser.com/

澄清一下:您可能需要重新考虑在每个浏览器中阴影的宽度完全相同是否真的那么重要。它可能不会提供那种不同的感觉,而一些小技巧,比如声明一个不同于所需宽度的宽度,因为它似乎是您在特定硬件上特定操作系统上的特定浏览器中想要的,可能会对您的设置产生不良影响无法测试。

【讨论】:

  • 如果你不能通过告诉他们这将如何导致页面实际上看起来对客户来说是坏的来说服他们,那么你已经搞砸了。
  • 我强烈反对。我确实认为解释和教学很重要,但我也认为网页应该在每个浏览器上看起来都一样,在大小(使用响应式设计时)和可访问性主题的限制内。当然,如果有人出于某种原因想要覆盖我的 CSS,我无法控制它,但是没有理由为什么不同的浏览器会以不同的方式呈现网页,因为它们都支持一个使用的所有 CSS 样式和字体和媒体格式。
  • 来自 W3 CSS 标准:“7.1.2. 模糊阴影边缘 非零模糊半径表示生成的阴影应该被模糊,例如通过高斯过滤器。确切的算法没有定义; 然而,生成的阴影必须接近(每个像素在其预期值的 5% 范围内)通过将标准偏差等于模糊半径一半的高斯模糊应用于阴影而生成的图像”。这意味着所有阴影渲染看起来应该几乎相同。
  • 那我们不同意 :)
【解决方案2】:
.shadow {
  -webkit-box-shadow: 3px 3px 5px 6px #ccc;  /* Safari 3-4, iOS 4.0.2 - 4.2, Android 2.3+ */
  -moz-box-shadow:    3px 3px 5px 6px #ccc;  /* Firefox 3.5 - 3.6 */
  box-shadow:         3px 3px 5px 6px #ccc;  /* Opera 10.5, IE 9, Firefox 4+, Chrome 6+, iOS 5 */
}

那就是:

box-shadow: [horizontal offset] [vertical offset] [blur radius] [optional spread radius] [color];

阴影的水平偏移量(必填),正数表示阴影在盒子的右边,负数表示阴影在盒子的左边。

阴影的垂直偏移量(必需),负数表示 box-shadow 将在 box 上方,正数表示阴影将在 box 下方。

模糊半径(必需),如果设置为0,阴影会很锐利,数字越大,越模糊,阴影会延伸得越远。例如,水平偏移为 5px 且模糊半径为 5px 的阴影将是总阴影的 10px。

散布半径(可选),正值增加阴影的大小,负值减小大小。默认为 0(阴影与模糊大小相同)。

颜色(必需)- 采用任何颜色值,例如 hex、named、rgba 或 hsla。如果省略颜色值,则以前景色(文本颜色)绘制框阴影。但请注意,旧版 WebKit 浏览器(Chrome 20 和 Safari 6 之前)在省略颜色时会忽略该规则。

使用像 rgba(0, 0, 0, 0.4) 这样的半透明颜色是最常见的,并且效果很好,因为它不会完全/不透明地覆盖它的结束,但允许下面的内容通过有点,像一个真正的影子。


Internet Explorer(8 及以下)Box Shadow

你需要一个额外的元素,但它可以通过过滤器实现。

<div class="shadow1">
  <div class="content">
    Box-shadowed element
  </div>
</div>

.shadow1 {
  margin: 40px;
  background-color: rgb(68,68,68); /* Needed for IEs */

  -moz-box-shadow: 5px 5px 5px rgba(68,68,68,0.6);
  -webkit-box-shadow: 5px 5px 5px rgba(68,68,68,0.6);
  box-shadow: 5px 5px 5px rgba(68,68,68,0.6);

  filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=3,MakeShadow=true,ShadowOpacity=0.30);
  -ms-filter: "progid:DXImageTransform.Microsoft.Blur(PixelRadius=3,MakeShadow=true,ShadowOpacity=0.30)";
  zoom: 1;
}

.shadow1 .content {
  position: relative; /* This protects the inner element from being blurred */
  padding: 100px;
  background-color: #DDD;
}

来源:css-tricks

【讨论】:

  • 您是否只是复制并粘贴了克里斯的大部分文章?
  • @JonathanSampson 是的...这就是为什么我在答案底部提到了带有链接的来源...我希望这足够公平,如果那不是正确的方法,请纠正并更新我.. 谢谢!
【解决方案3】:

您可以尝试CSS3PIE 让盒子阴影在 IE 中工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2012-12-08
    • 2012-07-26
    相关资源
    最近更新 更多