请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
使用 clip-path CSS属性剪裁的元素,box-shadow 或 filter: drop-shadow() 创建的元素外阴影均被裁剪掉。原因是 clip-path 属性只显示裁剪路径、形状等内部的区域,其外区域被彻底舍弃,以此方式将矩形元素改造为所需的任意形状。
实际应用场景可能希望被 clip-path 裁剪的元素也能具备阴影功能,这需要另辟蹊径。最常见的方法是:保留元素的自然状态,裁剪其伪元素或子元素;主元素使用 filter 属性的 drop-shadow() 滤镜函数投射阴影而不是使用 box-shadow 属性实现,因为后者投射的阴影将会是主元素的矩形轮廓而非伪或子元素的裁剪形状。
以下例子简单展示上述命题,主元素投射两个阴影:近阴影用于立体化伪元素的形状,远阴影则模拟光照所产生的物体投射在地上的影子——
<style>
.pa {
width: 200px;
height: 100px;
/* 双阴影 :立体化 + 影子 */
filter: drop-shadow(2px 2px 4px black) drop-shadow(5vw 30vh 10px gray);
margin: 50px auto 0;
position: relative;
}
.pa::before {
position: absolute;
content: '';
width: 100%;
height: 100%;
background: linear-gradient(lightseagreen, green, lightseagreen);
/* 多边形裁剪 */
clip-path: polygon(0 50%,100% 0, 80% 50%, 100% 100%, 0 50%);
transform-origin: 0 50%; /* 变换原点设在尖角处 */
animation: swing 1.5s infinite alternate;
}
@keyframes swing {
from { transform: rotate(-5deg); }
to { transform: rotate(5deg); }
}
</style>
<div class="pa"></div>
|