在使用StyledComponents进行React时,下面的每个<div>代表一个不同样式的组件。
尝试实现这样的目标:

但理想情况下,我希望在progress-indicator中添加“虚线”样式,以便它位于指示器的垂直下方,并跨越wrapping-container的整个高度。我尝试过使用::before和::after,但没有成功。
.wrapping-container {
display: flex;
align-items: center;
margin-bottom: 20px;
}
.progress-indicator {
height: 22px;
width: 22px;
margin-right: 16px;
border-radius: 50%;
border: 1px solid rgb(255, 255, 255);
background: rgb(39, 40, 42);
color: rgb(255, 255, 255);
font-size: 13px;
text-align: center;
}
.input {
border: 1px solid #ced4da;
border-radius: 2px;
overflow-y: hidden;
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
}<div class="wrapping-container">
<div class="progress-indicator">2</div>
<div class="input">Input</div>
</div>
<div class="wrapping-container">
<div class="progress-indicator">3</div>
<div class="input">Input</div>
</div>
发布于 2021-09-16 12:44:06
我这样做的方式如下:
.wrapping-container {
position: relative;
display: flex;
}
.progress-indicator {
position: relative;
display: inline-block;
margin-bottom: 40px;
color: #fff;
}
.progress-indicator::after {
content: "";
width: 30px;
height: 30px;
background: #000;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
z-index: -1;
}
.progress-indicator::before {
content: "";
height: 40px;
border: 1px dashed #000;
position: absolute;
left: 50%;
top: -50px;
transform: translateX(-50%);
z-index: -1;
}
.input {
margin-left: 30px;
}<div class="wrapping-container">
<div class="progress-indicator">2</div>
<div class="input">Input</div>
</div>
<div class="wrapping-container">
<div class="progress-indicator">3</div>
<div class="input">Input</div>
</div>
发布于 2021-09-16 12:32:24
一个简单的(如果粗糙的)方法来实现这一点:
.dasher {
border: 1px dashed #ced4da;
max-width: 0px;
min-height: 10px;
margin-left: 10px;
margin-top: -20px;
}演示
.wrapping-container {
display: flex;
align-items: center;
margin-bottom: 20px;
}
.progress-indicator {
height: 22px;
width: 22px;
margin-right: 16px;
border-radius: 50%;
border: 1px solid rgb(255, 255, 255);
background: rgb(39, 40, 42);
color: rgb(255, 255, 255);
font-size: 13px;
text-align: center;
}
.input {
border: 1px solid #ced4da;
border-radius: 2px;
overflow-y: hidden;
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
}
.dasher {
border: 1px dashed #ced4da;
max-width: 0px;
min-height: 10px;
margin-left: 10px;
margin-top: -20px;
}<div class="wrapping-container">
<div class="progress-indicator">2</div>
<div class="input">Input</div>
</div>
<div class="dasher"></div>
<div class="wrapping-container">
<div class="progress-indicator">3</div>
<div class="input">Input</div>
</div>
应该会给你这个:

发布于 2021-09-16 12:44:03
我添加了一个容器和一个虚线块,它们将直接通过所有的height wrapping-container
.container{
position:relative;
}
.border-dash{
position: absolute;
top: 15px;
left: 11px;
border-left: 1px dashed black;
height:calc(100% - 25px);
width: 1px;
display: block;
z-index: -1;
}演示
.wrapping-container {
display: flex;
align-items: center;
margin-bottom: 20px;
}
.progress-indicator {
height: 22px;
width: 22px;
margin-right: 16px;
border-radius: 50%;
border: 1px solid rgb(255, 255, 255);
background: rgb(39, 40, 42);
color: rgb(255, 255, 255);
font-size: 13px;
text-align: center;
}
.input {
border: 1px solid #ced4da;
border-radius: 2px;
overflow-y: hidden;
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
}
.container{
position:relative;
}
.border-dash{
position: absolute;
top: 15px;
left: 11px;
border-left: 1px dashed black;
height:calc(100% - 25px);
width: 1px;
display: block;
z-index: -1;
}<div class="container">
<span class="border-dash"></span>
<div class="wrapping-container">
<div class="progress-indicator">2</div>
<div class="input">Input</div>
</div>
<div class="wrapping-container">
<div class="progress-indicator">3</div>
<div class="input">Input</div>
</div>
<div class="wrapping-container">
<div class="progress-indicator">4</div>
<div class="input">Input</div>
</div>
</div>
https://stackoverflow.com/questions/69208245
复制相似问题