如何在CSS中的三角形上应用投影?

Ara*_*oca 11 html css css3

我在CSS中有这个三角形:

.triangle {
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 200px 200px 0 0;
  border-color: #007bff transparent transparent transparent;
}
Run Code Online (Sandbox Code Playgroud)
<div class="triangle"></div>
Run Code Online (Sandbox Code Playgroud)

如何在斜边线上应用1px阴影?

Ans*_*elm 17

由于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));
}
Run Code Online (Sandbox Code Playgroud)
<div class="triangle"></div>
Run Code Online (Sandbox Code Playgroud)


Ric*_*cky 6

polygon在 an 中创建一个svg,然后应用drop-shadow过滤器。

.triangle {
  width: 200px;
  color: #007bff;
  filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, .5));
}
Run Code Online (Sandbox Code Playgroud)
<svg class="triangle" viewBox="0 0 100 100">
  <polygon points="0,0 100,0 0,100" fill="currentColor" />
</svg>
Run Code Online (Sandbox Code Playgroud)

尝试使用语义化、有意义的 HTML 元素,而不是纯粹依赖 CSS 来绘制形状。


Pau*_*e_D 5

您可以通过使用有角度的渐变来实现这一点,而无需使用边框

div {
  width: 200px;
  height: 200px;
  margin: 2em auto;
  background: linear-gradient(to bottom right, #007bff 50%, rgba(0,0,0,.5) 50%, transparent 52%);
}
Run Code Online (Sandbox Code Playgroud)
<div></div>
Run Code Online (Sandbox Code Playgroud)