Html 如何向(8点星形)css形状添加边框?
如何在这个8点星外添加红色边框?或者有没有一个大家都知道的简单的svg解决方案 是: 需要: HTMLHtml 如何向(8点星形)css形状添加边框?,html,css,css-shapes,Html,Css,Css Shapes,如何在这个8点星外添加红色边框?或者有没有一个大家都知道的简单的svg解决方案 是: 需要: HTML <div id="star8"></div> 您可以使用并最终使用另一个伪参数: #star8:after { content: ""; position: absolute; top: 0; left: 0; height: 80px; width: 80px; transform: rotate(135deg);
<div id="star8"></div>
您可以使用并最终使用另一个伪参数:
#star8:after {
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
transform: rotate(135deg);
box-shadow: 0 0 0 3px red;::* a border works too */
mix-blend-mode:overlay;
}
#star8{
边缘:2米;
边框:3倍纯红;
背景:蓝色;
宽度:80px;
高度:80px;
位置:相对位置;
变换:旋转(20度);
}
#star8:之前{
内容:“;
位置:绝对位置;
排名:0;
左:0;
高度:80px;
宽度:80px;
背景:蓝色;
变换:旋转(135度);
}
#star8:之后{
内容:“;
位置:绝对位置;
排名:0;
左:0;
高度:80px;
宽度:80px;
变换:旋转(135度);
方框阴影:0 3px红色;
混合模式:叠加;
}
div看起来像现在这样的原因是实际上没有一颗8角星,而是有两个正方形相互叠加
第一步是将大纲添加到:before伪类。第二种方法是在没有轮廓的伪类之后添加一个:将其旋转到与原始div相同的位置,以覆盖由:绘制的轮廓,然后与原始div重叠
演示:
和CSS:
#star8 {
border: 3px solid red;
background: olive;
width: 80px;
height: 80px;
position: relative;
-webkit-transform: rotate(20deg);
-moz-transform: rotate(20deg);
-ms-transform: rotate(20deg);
-o-transform: rotate(20eg);
}
#star8:before {
border: 3px solid red;
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
background: olive;
-webkit-transform: rotate(135deg);
-moz-transform: rotate(135deg);
-ms-transform: rotate(135deg);
-o-transform: rotate(135deg);
}
#star8:after{
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
background: olive;
}
只需在其上覆盖另一个矩形:之后,覆盖红色边框。 您还应该使
#star8:before
的大小仅为77x77以使其适合。SVG解决方案
这可以通过单个svg路径创建。
添加轮廓可以通过向路径添加笔划属性来完成
如果您使用的是svg
,您只需应用笔划:
和笔划宽度:
。感谢您的评论!我只是不熟悉如何获得类似这样的svg代码:混合模式:覆盖;我认为这并不是对所有人的支持browser@kumar,nop,就像使用边界半径一样,显示:表格单元格;还有很多其他人在他们的时代和今天;)。。。但是transform也不适用于较旧的浏览器,所以错过混合模式没什么大不了的。是的,我不会使用最旧的浏览器,但在ie11/10或edge中,由于混合模式,它看起来像这样。我对你的答案投了赞成票,因为这是一种简单而好的技术。@kumar(现在)的方法可能是使用这些新的css属性,并将SVG作为另一个伟大的答案(这里的教程)服务于未编写的浏览器。我认为这是最好的解决方案。
#star8 {
border: 3px solid red;
background: olive;
width: 80px;
height: 80px;
position: relative;
-webkit-transform: rotate(20deg);
-moz-transform: rotate(20deg);
-ms-transform: rotate(20deg);
-o-transform: rotate(20eg);
}
#star8:before {
border: 3px solid red;
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
background: olive;
-webkit-transform: rotate(135deg);
-moz-transform: rotate(135deg);
-ms-transform: rotate(135deg);
-o-transform: rotate(135deg);
}
#star8:after{
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
background: olive;
}
#star8:after {
content: "";
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 80px;
background: blue;
}