我在CSS中有这个三角形:
.triangle {
width: 0;
height: 0;
border-style: solid;
border-width: 200px 200px 0 0;
border-color: #007bff transparent transparent transparent;
}
<div class="triangle"></div>
如何在斜边线上应用1像素的阴影?
由于box-shadow
不起作用,您必须在三角形上应用一个投影滤镜:
.triangle {
width: 0;
height: 0;
border-style: solid;
border-width: 200px 200px 0 0;
border-color: #007bff transparent transparent transparent;
-webkit-filter: drop-shadow(1px 1px 1px rgba(0,0,0,.5));
filter: drop-shadow(1px 1px 1px rgba(0,0,0,.5));
}
<div class="triangle"></div>
在svg
中创建一个polygon
,然后应用drop-shadow
滤镜。
.triangle {
width: 200px;
color: #007bff;
filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, .5));
}
<svg class="triangle" viewBox="0 0 100 100">
<polygon points="0,0 100,0 0,100" fill="currentColor" />
</svg>
尝试使用语义化、有意义的HTML元素来实现形状,而不是仅依赖CSS。
div {
width: 200px;
height: 200px;
margin: 2em auto;
background: linear-gradient(to bottom right, #007bff 50%, rgba(0,0,0,.5) 50%, transparent 52%);
}
<div></div>
使用这段代码对我有效:
.triangle-use-dropshadow{
content: ' ';
width: 0;
height: 0;
border: 14px solid;
border-color: #fdfdfd transparent transparent transparent;
filter: drop-shadow(-2px -4px 2px rgba(0,0,0,0.5));
}
<div class="triangle-use-dropshadow"></div>