多边形右边框上的框阴影?

时间:2016-10-28 18:09:12

标签: html css css3

我在向多边形的右边框添加框阴影时遇到问题,如下图所示:

enter image description here

我想在下面的图片中看到红线所在的阴影:

enter image description here

我这样做的形状很简单:

HTML:

<div class="shape">
   ....          
</div>

CSS:

.shape {
   background: url(img/1.jpg);
   border-top: 400px solid transparent;
   border-right: 40px solid #ffffff;
}

我没有使用 clip-path ,因为它与IE不兼容,你必须做一些额外的设置才能使它在 Firefox 和其他一些浏览器上运行我想保持简单,所以我采用了简单的方法。但我面临的问题是只使用 CSS 在右上角添加阴影。那有什么解决方案吗?或者我必须使用 clip-path 才能在右上角添加阴影?

2 个答案:

答案 0 :(得分:3)

如果你能承受到图像稍微旋转......(4度)

&#13;
&#13;
.rightDiagonal{
  display:inline-block;
  overflow:hidden;
  padding-right:35px;
}

.rightDiagonal img{
  -webkit-backface-visibility: hidden;
  transform: rotate(4deg);
  -webkit-transform: rotate(4deg);
  -ms-transform: rotate(4deg);
  
  margin:-15px;
  box-shadow: 16px 0 25px -20px rgba(0,0,0, 1);
}
&#13;
<div class="rightDiagonal">
<img src="http://placehold.it/100x180/0ba">  
</div>
&#13;
&#13;
&#13;

否则...

如果没有,那么你需要一个复杂的附加层(<div>),其中最外层的div是包装器,内部div具有阴影并且处于4deg度如果使用-4deg

恢复为0,则为内部图像

&#13;
&#13;
.rightDiagonal{
  display:inline-block;
  overflow:hidden;
  padding-right:15px;
}
.rightDiagonal div {
  display:inline-block;
  overflow:hidden;
  margin: -15px 0 -15px -15px;
  -webkit-backface-visibility: hidden;
  transform: rotate(4deg);
  -webkit-transform: rotate(4deg);
  -ms-transform: rotate(4deg);
  box-shadow: 16px 0 25px -20px rgba(0,0,0, 1);
}
.rightDiagonal img{
  margin-right: -15px;
  transform: rotate(-4deg);
  -webkit-transform: rotate(-4deg);
  -ms-transform: rotate(-4deg);
}
&#13;
<div class="rightDiagonal">
  <div><img src="http://placehold.it/100x180/0ba"></div>
</div>


<div class="rightDiagonal">
  <div><img src="http://placehold.it/170x200/a0b"></div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:-2)

试试这个CSS:

#shadow-div{
    margin-right:20px; /* Set to 0 if you don't want shadow at the right side */
    margin-left:0px; /* Set to 20px if you want shadow at the left side */
    margin-top:0px; /* Set to 20px if you want shadow at the top side */
    margin-bottom:0px; /* Set to 20px if you want shadow at the bottom side */
    box-shadow: 0px 0px 20px black; 
    background: url(img/1.jpg);
    border-top: 400px solid transparent;
    border-right: 40px solid #ffffff;
    }