Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何向(8点星形)css形状添加边框?_Html_Css_Css Shapes - Fatal编程技术网

Html 如何向(8点星形)css形状添加边框?

Html 如何向(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);

如何在这个8点星外添加红色边框?或者有没有一个大家都知道的简单的svg解决方案

是: 需要:

HTML

<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;
}