【发布时间】:2017-02-20 10:22:13
【问题描述】:
我需要为这个“形状”添加边框。这有点困难,因为形状是由 after 和 before 伪元素组成的。我找不到正确的方法。
我需要达到的目标:
我目前的代码:
https://jsfiddle.net/jimmyadaro/xfcjfz3d/
#octagon {
width: 300px;
height: 200px;
background: red;
position: relative;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
display: block;
}
#octagon:before,
#octagon:after {
content: "";
position: absolute;
left: 0;
right: 0;
}
#octagon:before {
top: 0;
border-bottom: 30px solid red;
border-left: 30px solid #fff;
border-right: 30px solid #fff;
}
#octagon:after {
bottom: 0;
border-top: 30px solid red;
border-left: 30px solid #fff;
border-right: 30px solid #fff;
}
<div id="octagon"></div>
我尝试了阴影和轮廓,但没有成功。
感谢阅读。
注意:如果重要的话,我将使用纯色背景色。
【问题讨论】:
-
此链接可能对您有所帮助stackoverflow.com/questions/34641588/…
-
谢谢@geeky,我已经看到了,但看起来它不可扩展。我的意思是,它不能是 600x200 像素。至少在我尝试过的方式上。
-
相关 - stackoverflow.com/questions/34644437/… 但 SVG 在这里是最佳选择。
-
嗨,@paulie-d 很高兴在这里见到你! (我在 CSS-Tricks 附近见过你,你帮了我几次)。我有点害怕跨浏览器的支持。我没有尝试使用 SVG。问题是,这个形状是其他元素(文本、图像...)的容器,所以我不知道我是否可以信任 SVG。
-
如果该解决方案不涉及 SVG,那么您将得到的答案将非常老套。喜欢this。你真的应该考虑使用 SVG,就像 @Paulie_D 已经建议的那样。
标签: html css styles border shape