首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在IE11中应用拖放阴影

无法在IE11中应用拖放阴影
EN

Stack Overflow用户
提问于 2020-03-06 17:37:08
回答 1查看 880关注 0票数 1

如何在11中显示与使用此规则在chrome中应用相同的阴影?

代码语言:javascript
复制
    filter: drop-shadow(6px 6px 7px rgba(0,0,0,0.5));

这是我的工作铬标记HTML

代码语言:javascript
复制
<div class="cta-image-container">
<div>
    <svg class="svg-cta-image">
        <image filter="url(#dropshadow)" width="640" height="580" class="cta-image cta-image-1-3" xlink:href="https://anekitalia.com/wp-content/uploads/media/justfun-viaggi-evento-viaggia-split.jpg"></image>
    </svg>
</div>
<div>
    <svg class="svg-cta-image">
        <image width="640" height="580" class="cta-image cta-image-2-3" xlink:href="https://anekitalia.com/wp-content/uploads/media/justfun-viaggi-evento-viaggia-split.jpg"></image>
    </svg>
</div>
<div>
    <svg class="svg-cta-image">
        <image width="640" height="580" class="cta-image cta-image-3-3" xlink:href="https://anekitalia.com/wp-content/uploads/media/justfun-viaggi-evento-viaggia-split.jpg"></image>
    </svg>
</div>
<svg>
    <defs>
        <clipPath id="split-1-3">
            <polygon points="222,580 0,580 0.12,0 176,0"></polygon>
        </clipPath>
    </defs>
</svg>
<svg>
    <defs>
        <clipPath id="split-2-3">
            <polygon points="400,0 196,0 242,580 446,580"></polygon>
        </clipPath>
    </defs>
</svg>
<svg>
    <defs>
        <clipPath id="split-3-3">
            <polygon points="640,0 420,0 466,580 640,580"></polygon>
        </clipPath>
    </defs>
</svg>

这是CSS

代码语言:javascript
复制
.cta-image-container svg{
    position: absolute;
}
.cta-image-container {
    width: 640px;
    height: 580px;
    margin: 0 25px 0 25px;
    filter: drop-shadow(6px 6px 7px rgba(0,0,0,0.5));
    position: relative;
}
.cta-image {
    max-width: 100%;
    max-height: 100%;
    position: absolute;
}
.svg-cta-image {
    width: 640px;
    height: 580px;
}
.cta-image-1-3 {
clip-path: url(#split-1-3);
}
.cta-image-2-3 {
clip-path: url(#split-2-3);
}
.cta-image-3-3 {
clip-path: url(#split-3-3);
}

在这里您可以找到一个镀铬工作的CODEPEN

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-06 22:34:02

正如rx2347所指出的,IE不支持CSS筛选效果。

因此,添加阴影的唯一方法是在svg中应用效果,使用位于图像后面的模糊的黑色多边形。

这是使用应用效果https://codepen.io/samwalker/pen/XWbzpZX更新代码的版本。

我没有PC/IE 11,所以我使用BrowserStack进行测试,结果如下:

备注:

1. --我不得不增加viewbox/svg的大小,这样阴影就不会被裁剪

<svg class="svg-cta-image" viewBox="0 0 660 600">

2.feGaussianBlur创建为svg过滤器def

代码语言:javascript
复制
<filter id="blurFilter">
    <feGaussianBlur stdDeviation="5" />
<filter />

“模糊大小”由stdDeviation攻击设置。

展示IE过滤器的一个很好的工具是手放在: SVG过滤效果,它是Azure网站的一部分&显示MS兼容过滤器

3.在SVG中创建了一个与剪辑路径相同的组元素,这是我们的“影子”。

代码语言:javascript
复制
 <g id="shadow" fill="black" filter="url(#blurFilter)" fill-opacity="0.5">
    <polygon points="222,580 10,580 10,10 176,10"></polygon>
    <polygon points="400,10 196,10 242,580 446,580"></polygon>
    <polygon points="640,10 420,10 466,580 640,580"></polygon>
 </g>

阴影的样式设置为fill颜色和fill-opacity

我不得不用10px来抵消多边形的起始点,以匹配图像的新位置。

4.将3 polygons合并成一个单独的裁剪路径,所以您只需要加载一次图像。如果你要使用3种不同的图像,你可以很容易地改变这个回。

5.从svg框的边缘偏移图像,并重置它的大小x="10" y="10" width="640" height="580",您可能需要在css中这样做。

您可能会想要做一些更改,但希望这将使您走上正确的道路。

以下是完整标记:

代码语言:javascript
复制
.cta-image-container {
  width: 660px;
  height: 600px;
  margin: 25px auto;
  position: relative;
}
代码语言:javascript
复制
<div class="cta-image-container">
  <div>
    <svg class="svg-cta-image" viewBox="0 0 660 600"><!-- increased veiwbox by 20px so shadow isn’t clipped -->
      <defs xmlns="http://www.w3.org/2000/svg">
        <clipPath id="split-in-3"><!-- combined clipping path -->
          <polygon points="222,580 0,580 0.12,0 176,0"></polygon>
          <polygon points="400,0 196,0 242,580 446,580"></polygon>
          <polygon points="640,0 420,0 466,580 640,580"></polygon>
        </clipPath>
        <filter id="blurFilter">
          <feGaussianBlur stdDeviation="5" /><!-- size of shadow -->
        <filter />
      </defs>
      <g id="shadow" fill="black" filter="url(#blurFilter)" fill-opacity="0.5"><!-- `fill` & `fill-opacity` set the shadow’s color -->
        <polygon points="222,580 10,580 10,10 176,10"></polygon><!--`0`s replaced by 10 to offset shadow from edge of svg -->
        <polygon points="400,10 196,10 242,580 446,580"></polygon>
        <polygon points="640,10 420,10 466,580 640,580"></polygon>
      </g>
            
      <image clip-path="url(#split-in-3)" x="10" y="10" width="640" height="580" class="cta-image cta-image-1-3" xlink:href="https://anekitalia.com/wp-content/uploads/media/justfun-viaggi-evento-viaggia-split.jpg"></image><!-- positioned at 10px `x` & `y` to offset from edge of svg --><!-- reset size to match original -->
            
    </svg>
  </div>
</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60569053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档