CSS透明长阴影

时间:2015-04-03 19:22:42

标签: jquery html css css3 dropshadow

所以我的任务是在纹理背景上创建长阴影。在线的其他教程都是如何使用坚实的背景,在纹理或背景图像上看起来非常糟糕。

我非常接近它,尝试了一些不同的技术,但我找到了两种可能性,每种都有问题,所以如果有人可以帮我调试,我将不胜感激。这些不是跨浏览器,我只是想弄清楚它是否可行,所以请忽略缺少前缀等。

类型1:纯CSS 使用CSS中的Skew选项,我可以在左侧和底部添加两个带渐变的块。然后倾斜每个45度,我接近所需的效果,但在阴影之间没有完全相遇的地方之间有一条线,我无法在没有重叠的情况下离开: http://jsfiddle.net/mfeola/4bfrkagu/

.block:before, .block:after{
    content:"";position:absolute; display:block;
}

.block:before{top:0; left:100%; height:100%; width:0; padding-right:100%;
    transform-origin: 0% 0%;
    transform: skew(0deg, 45deg);
    background: linear-gradient(to right,  rgba(0,0,0,0.5) 0%,rgba(0,0,0,0) 50%,rgba(0,0,0,0) 100%);
}
.block:after{top:100%; left:0; width:100%; height:0; padding-top:100%;
    transform-origin: 0% 0%;
    transform: skew(45deg, 0deg);
    background: linear-gradient(to bottom,  rgba(0,0,0,0.5) 0%,rgba(0,0,0,0) 50%,rgba(0,0,0,0) 100%);
}

类型2:Javascript 通过旋转数学计算,我能够旋转渐变框来制作完美的阴影。问题是如果盒子的大小发生变化,阴影的角度会发生变化,这对我想要做的事情不起作用。我希望它能普遍起作用。当我弄清楚数学时,我在这篇文章中加入了一个文本区域: http://jsfiddle.net/mfeola/tpdhLqs1/

1 个答案:

答案 0 :(得分:0)

您可以尝试添加边框渐变来填补空白。

是通过此链接尝试的:https://css-tricks.com/examples/GradientBorder/

无法正确获取确切的颜色,但我认为您应该能够使用一些边框渐变格式执行此操作,如下所示:

.top-to-bottom {
    border-right: 0 !important;
    border-left: 0 !important;
    border-top: 0 !important;
    border: 1px solid;
    -webkit-border-image: 
      -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,1))) 1 100%;
    -webkit-border-image: 
      -webkit-linear-gradient(rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%;
    -moz-border-image:
      -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%;    
    -o-border-image:
      -o-linear-gradient(rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%;
    border-image:
      linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%;
}

在这里搞砸了一下:http://jsfiddle.net/4bfrkagu/13/但是无法正确着色 - 我想我可以把它留给你。