三角形周围的 CSS 框阴影

发布于 2024-10-22 20:36:59 字数 493 浏览 6 评论 0原文

我需要使用简单的 html 和 css 创建一个带有阴影的三角形。在另一个 stackoverflow 问题的回答中,我能够创建带有斜接边框的三角形。基本上,我创建了一个具有非常宽边框的盒子的一侧,并创建了具有宽透明边框的附近一侧:

div.triangle {
    border-bottom : 60px solid transparent;
    border-left : 60px solid black;
}

效果很好,但是当我尝试应用盒子阴影时,阴影围绕着封闭的正方形...而不是三角形:

div.triangle {
    border-bottom : 60px solid transparent;
    border-left : 60px solid black;
    -webkit-box-shadow: 0 0 10px black;
}

如何仅使用带有阴影的 css/html 获得三角形?

I need to create a triangle with a drop shadow using simple html and css. Answered by another stackoverflow question, I was able to create the triangle with mitered borders. Basically I create 1 side of a box with a very wide border and the nearby side with a wide transparent border:

div.triangle {
    border-bottom : 60px solid transparent;
    border-left : 60px solid black;
}

works great, but when I try to apply a box-shadow the shadow goes around the enclosing square... not the triangle:

div.triangle {
    border-bottom : 60px solid transparent;
    border-left : 60px solid black;
    -webkit-box-shadow: 0 0 10px black;
}

How do I get a triangle using only css/html with a drop shadow?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

机场等船 2024-10-29 20:36:59

似乎不可能。绝对使用想象是更容易的解决方案。
我做了类似三角形的东西:) http://jsfiddle.net/5dw8M/109/ 。抱歉,无法在您的帖子下发表评论。也许它会成为某人的灵感;

Seems like impossible. Definitely using an imagine is much more easier solution.
I've made something like triangle :) http://jsfiddle.net/5dw8M/109/ . Sorry cannot leave a comment under your post. May be it'll serve like an inspiration for someone;

成熟的代价 2024-10-29 20:36:59

放置另一个具有相似属性的 div 并调整位置怎么样?
类似于 http://jsfiddle.net/eveevans/JWGTw/

What about put another div with similar property and play with positions?
something like http://jsfiddle.net/eveevans/JWGTw/

拒绝两难 2024-10-29 20:36:59

您可以使用“transform”属性将正方形旋转 45 度并隐藏其一半,但并非所有浏览器都支持它,因此您需要后备。

.triangle-with-shadow {
   width: 100px;
   height: 50px;
   position: relative;
   overflow: hidden;
   box-shadow: 0 16px 10px -15px rgba(0,0,0,0.5);
}
.triangle-with-shadow:after {
   content: "";
   position: absolute;
   width: 50px;
   height: 50px;
   background: #999;
   transform: rotate(45deg);
   -ms-transform:rotate(45deg); /* IE 9 */
   -moz-transform:rotate(45deg); /* Firefox */
   -webkit-transform:rotate(45deg); /* Safari and Chrome */
   -o-transform:rotate(45deg); /* Opera */
   top: 25px;
   left: 25px;
   box-shadow: -1px -1px 10px 0px rgba(0,0,0,0.5);
}​

jsfiddle 上的演示。

摘自 此 CSS 技巧页面 进行了修改。

You can use the "transform" property to rotate a square 45 degrees and hide half of it, but not all browsers support it, so you'll need a fallback.

.triangle-with-shadow {
   width: 100px;
   height: 50px;
   position: relative;
   overflow: hidden;
   box-shadow: 0 16px 10px -15px rgba(0,0,0,0.5);
}
.triangle-with-shadow:after {
   content: "";
   position: absolute;
   width: 50px;
   height: 50px;
   background: #999;
   transform: rotate(45deg);
   -ms-transform:rotate(45deg); /* IE 9 */
   -moz-transform:rotate(45deg); /* Firefox */
   -webkit-transform:rotate(45deg); /* Safari and Chrome */
   -o-transform:rotate(45deg); /* Opera */
   top: 25px;
   left: 25px;
   box-shadow: -1px -1px 10px 0px rgba(0,0,0,0.5);
}​

Demo on jsfiddle.

Lifted from this CSS Tricks page with modifications.

飘逸的'云 2024-10-29 20:36:59

也许最好的选择是使用过滤器

filter: drop-shadow(0 0 10px black);

Probably the best option is using filter:

filter: drop-shadow(0 0 10px black);
梦魇绽荼蘼 2024-10-29 20:36:59

带有 PNG 后备的 是否是一种选择?

演示:jsfiddle.net/Marcel/3dbzm/1

Would <canvas> with a PNG fallback be an option?

Demo: jsfiddle.net/Marcel/3dbzm/1

吹泡泡o 2024-10-29 20:36:59

创建该三角形的副本,对其进行脱色,使用 CSS 为其赋予负 z-index 值,最后使用 CSS 定位使其偏离中心。

div.triangle {
z-index:-1;
position:relative;
bottom:-16px;
right:-16px;
}

Create a duplicate of that triangle, decolorize it, give it a negative z-index value using css, and finally off center it with CSS positioning.

div.triangle {
z-index:-1;
position:relative;
bottom:-16px;
right:-16px;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文