Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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 如何在CSS中制作虚线箭头?_Html_Css - Fatal编程技术网

Html 如何在CSS中制作虚线箭头?

Html 如何在CSS中制作虚线箭头?,html,css,Html,Css,我目前正在尝试用CSS制作一个步进器。到目前为止,我做了所有其他事情,但现在我需要以某种方式绘制一条虚线,底部有一个指向右侧的箭头,例如顶线: 这是我的HTML布局: <div class="step-connection-line-wrapper"> <span class="step-connection-line-down"></span> <span class="step-connec

我目前正在尝试用CSS制作一个步进器。到目前为止,我做了所有其他事情,但现在我需要以某种方式绘制一条虚线,底部有一个指向右侧的箭头,例如顶线:

这是我的HTML布局:

<div class="step-connection-line-wrapper">
  <span class="step-connection-line-down"></span>
  <span class="step-connection-line-right"></span>
</div>

以前是否有人这样做过,并且知道一种聪明的方法来代替创建表示一个点的多个子元素?

您可以对自定义点使用CSS边框图像属性

#borderimg{
边框:10px实心透明;
边框图片:url(border.png)30圈;
}

如果您的需求与上面的图像一样复杂,您可以查看类似的库,如

您可以为自定义点使用CSS边框图像属性

#borderimg{
边框:10px实心透明;
边框图片:url(border.png)30圈;
}

如果您的需求与上图一样复杂,您可以查看类似于

的库。我知道使用纯CSS的唯一方法是用背景图像和渐变伪造虚线边框。这样,每条线和每个箭头都需要一个元素。可以使用Flexbox进行定位。这有点像黑客,我个人更喜欢SVG.js已经提供的解决方案,但这可能是一个可行的解决方案

编辑:忘了提及:点、箭头等的大小都可以通过更改箭头尖端中的边框大小以及线条中的渐变%和背景大小进行调整。更改浏览器窗口的宽度/高度时,箭头将调整大小。您可以在代码段的完整页面预览中进行测试

.arrow{
宽度:10vw;
高度:20vh;
显示器:flex;
对齐项目:居中;
}
.箭头顶部{
柔性流:行换行;
}
.arrow top>.arrow right{
利润底部:-1vw;
}
.arrow-bottom>.arrow-right{
利润顶部:-1vw;
}
.箭头底部{
柔性流程:行换行反向;
}
.向右箭头{
显示器:flex;
宽度:100%;
对齐项目:居中;
}
.箭头{
宽度:0;
身高:0;
边框顶部:1vw实心透明;
边框底部:1vw实心透明;
左边框:2vw纯绿色;
}
.水平{
宽度:90%;
高度:2倍;
背景图像:线性渐变(向右,黑色25%,rgba(255255,0)0%);
背景位置:底部;
背景尺寸:8px 8px;
背景重复:重复-x;
}
.垂直{
身高:98%;
宽度:2倍;
背景图像:线性梯度(黑色25%,rgba(255255,0)0%);
背景位置:右;
背景尺寸:8px 8px;
背景重复:重复-y;
}
.垫片{
高度:50px;
}

我意识到纯CSS作品的唯一方法就是用背景图像和渐变来伪造虚线边框。这样,每条线和每个箭头都需要一个元素。可以使用Flexbox进行定位。这有点像黑客,我个人更喜欢SVG.js已经提供的解决方案,但这可能是一个可行的解决方案

编辑:忘了提及:点、箭头等的大小都可以通过更改箭头尖端中的边框大小以及线条中的渐变%和背景大小进行调整。更改浏览器窗口的宽度/高度时,箭头将调整大小。您可以在代码段的完整页面预览中进行测试

.arrow{
宽度:10vw;
高度:20vh;
显示器:flex;
对齐项目:居中;
}
.箭头顶部{
柔性流:行换行;
}
.arrow top>.arrow right{
利润底部:-1vw;
}
.arrow-bottom>.arrow-right{
利润顶部:-1vw;
}
.箭头底部{
柔性流程:行换行反向;
}
.向右箭头{
显示器:flex;
宽度:100%;
对齐项目:居中;
}
.箭头{
宽度:0;
身高:0;
边框顶部:1vw实心透明;
边框底部:1vw实心透明;
左边框:2vw纯绿色;
}
.水平{
宽度:90%;
高度:2倍;
背景图像:线性渐变(向右,黑色25%,rgba(255255,0)0%);
背景位置:底部;
背景尺寸:8px 8px;
背景重复:重复-x;
}
.垂直{
身高:98%;
宽度:2倍;
背景图像:线性梯度(黑色25%,rgba(255255,0)0%);
背景位置:右;
背景尺寸:8px 8px;
背景重复:重复-y;
}
.垫片{
高度:50px;
}

单元素解决方案:

.dot{
--c:红色;/*颜色*/
--r:10px;/*圆形尺寸*/
--s:10px;/*空间圆*/
宽度:100px;
高度:100px;
显示:内联块;
利润率:20px;
位置:相对位置;
--g:径向梯度(圆最近侧,var(--c)85%,透明);
背景:
var(--g)计算(var(--s)/-2)0/计算(var(--r)+var(--s))var(--r)重复-x,
var(--g)0计算(var(--s)/-2)/var(--r)计算(var(--r)+var(--s))重复-y;
}
.点::之后{
内容:“;
位置:绝对位置;
顶部:计算值(var(--r)/2);
左:100%;
宽度:20px;
高度:20px;
转化:translateY(-50%);
背景:var(--c);
剪辑路径:多边形(0,100%50,0,100%);
}

单元素解决方案:

.dot{
--c:红色;/*颜色*/
--r:10px;/*圆形尺寸*/
--s:10px;/*空间圆*/
宽度:100px;
高度:100px;
显示:内联块;
利润率:20px;
位置:相对位置;
--g:径向梯度(圆最近侧,var(--c)85%,透明);
背景:
var(--g)计算(var(--s)/-2)0/计算(var(--r)+var(--s))var(--r)重复-x,
var(--g)0计算(var(--s)/-2)/var(--r)计算(var(--r)+var(--s))重复-y;
}
.点::之后{
内容:“;
位置:绝对位置;
顶部:计算值(var(--r)/2);
左:100%;
宽度:20px;
高度:20px;
转化:translateY(-50%);
背景:var(--c);
剪辑路径:多边形(0,100%50,0,100%);
}


使用SVG.js库使用SVG.js库
<div class="step-connection-line-wrapper">
  <span class="step-connection-line-right"></span>
  <span class="step-connection-line-down"></span>
</div>