我需要创建此图片:
它包含用线条附加的圆圈。我在红色框中画出来表明它们是div,因为当它在手机上显示时它应该是这样的:
我已经尝试过做what this post says但是它对我不起作用,因为李的不在同一个div中。
这是我的代码:
.steps {
max-width: 1170px;
margin: auto;
overflow: auto;
}
.step-1,
.step-2,
.step-3,
.step-4 {
width: 25%;
float: left;
}
<div class="steps">
<div class="step-1">
<div class="step-image">
<img src="step1.jpg">
</div>
<div class="step-title">Measure Your Space</div>
<div class="step-number">1
</div>
</div>
<div class="step-2">
<div class="step-image">
<img src="step2.jpg">
</div>
<div class="step-title">Your Kitchen is Designed</div>
<div class="step-number">2</div>
</div>
<div class="step-3">
<div class="step-image">
<img src="step3.jpg">
</div>
<div class="step-title">Your Materials are Shipped</div>
<div class="step-number">3</div>
</div>
<div class="step-4">
<div class="step-image">
<img src="step4.jpg">
</div>
<div class="step-title">Start contruction of your dream kitchen</div>
<div class="step-number">4</div>
</div>
</div>
如何使用连接它们的线创建圆圈?
答案 0 :(得分:7)
以下解决方案适用于带行的版本
要删除媒体查询下的行content: none;
。
section {
display: inline-block;
width: 25%;
text-align: center;
}
div {
margin: .5em;
border: 1px solid red;
padding: .5em;
position: relative;
}
a {
display: inline-block;
height: 2em;
width: 2em;
line-height: 2em;
text-align: center;
border: 1px solid;
border-radius: 50%;
background: silver;
}
a:before, a:after {
content: "";
position: absolute;
border-top: 1px solid;
margin-top: 1em;
z-index: -1;
}
a:before {
margin-left: -1px;
left: -.5em;
right: 50%;
}
a:after {
margin-right: -1px;
left: 50%;
right: -.5em;
}
section:first-child a:before,
section:last-child a:after {
content: none;
}
<main>
<section>
<div>
<p>Some content</p>
<a>1</a>
</div>
</section><section>
<div>
<p>Some content</p>
<a>2</a>
</div>
</section><section>
<div>
<p>Some content</p>
<a>3</a>
</div>
</section><section>
<div>
<p>Some content</p>
<a>4</a>
</div>
</section>
</main>
答案 1 :(得分:3)
这是一个带有最小标记的示例,对于标记和行,使用::after
和::before
伪元素(从2:nd位置开始)
div.connected {
counter-reset: num;
}
div.connected div {
float: left;
width: calc(25% - 22px);
position: relative;
text-align: center;
margin: 0 10px;
padding: 80px 0 10px 0;
border: 1px solid #eee;
background: url(http://placehold.it/60/f00) no-repeat top 10px center;
}
div.connected div::after {
display: block;
counter-increment: num;
content: counter(num);
width: 1.5em;
height: 1.5em;
text-align: center;
line-height: 1.5em;
border-radius: 50%;
border: 1px solid gray;
margin: 0 auto;
}
div.connected div ~ div::before {
content: '';
position: absolute;
width: calc(100% - 1.5em + 22px);
right: calc(50% + 0.75em);
height: 1px;
background-color: gray;
bottom: calc(.75em + 10px);
z-index: -1;
}
div.connected span {
display: inline-block;
padding-bottom: 10px;
}
@media screen and (max-width: 600px) {
div.connected div {
width: calc(50% - 22px);
}
div.connected div:nth-child(n+3) {
margin-top: 20px;
}
div.connected div:nth-child(3)::before {
display: none;
}
}
<div class="connected">
<div>
<span>Some text here</span>
</div>
<div>
<span>Some text here</span>
</div>
<div>
<span>Some text here</span>
</div>
<div>
<span>Some text here</span>
</div>
</div>
这是一个更新版本,可解决项目文字较长时的错位
div.connected {
display: flex;
flex-wrap: wrap;
counter-reset: num;
}
div.connected div {
float: left;
width: calc(25% - 22px);
position: relative;
text-align: center;
margin: 0 10px;
padding: 80px 0 10px 0;
border: 1px solid #eee;
background: url(http://placehold.it/60/f00) no-repeat top 10px center;
}
div.connected div::after {
display: block;
counter-increment: num;
content: counter(num);
position: absolute;
left: calc(50% - 0.75em - 1px);
bottom: 10px;
width: 1.5em;
height: 1.5em;
text-align: center;
line-height: 1.5em;
border-radius: 50%;
border: 1px solid gray;
}
div.connected div ~ div::before {
content: '';
position: absolute;
width: calc(100% - 1.5em + 22px);
right: calc(50% + 0.75em);
height: 1px;
background-color: gray;
bottom: calc(.75em + 10px);
z-index: -1;
}
div.connected span {
display: inline-block;
padding-bottom: 30px;
}
@media screen and (max-width: 600px) {
div.connected div {
width: calc(50% - 22px);
}
div.connected div:nth-child(n+3) {
margin-top: 20px;
}
div.connected div:nth-child(3)::before {
display: none;
}
}
<div class="connected">
<div>
<span>Some text here</span>
</div>
<div>
<span>Some text here</span>
</div>
<div>
<span>Some long long long text here</span>
</div>
<div>
<span>Some text here</span>
</div>
</div>
更新了,被问到如何在圆圈下方移动文字,所以这里有一种方法(参见CSS中的注释)
注意,由于绝对定位用于连接器/圆圈,并且由于较长的文本可以换行,因此可能需要使用现有的@media查询调整底部距离(50px
)。
div.connected {
display: flex;
flex-wrap: wrap;
counter-reset: num;
}
div.connected div {
float: left;
width: calc(25% - 22px);
position: relative;
text-align: center;
margin: 0 10px;
/* padding: 80px 0 10px 0; changed */
padding: 120px 0 10px 0;
border: 1px solid #eee;
background: url(http://placehold.it/60/f00) no-repeat top 10px center;
}
div.connected div::after {
display: block;
counter-increment: num;
content: counter(num);
position: absolute;
left: calc(50% - 0.75em - 1px);
/* bottom: 10px; changed */
bottom: 50px;
width: 1.5em;
height: 1.5em;
text-align: center;
line-height: 1.5em;
border-radius: 50%;
border: 1px solid gray;
}
div.connected div~div::before {
content: '';
position: absolute;
width: calc(100% - 1.5em + 22px);
right: calc(50% + 0.75em);
height: 1px;
background-color: gray;
/* bottom: calc(.75em + 10px); changed */
bottom: calc(.75em + 50px);
z-index: -1;
}
div.connected span {
display: inline-block;
}
@media screen and (max-width: 600px) {
div.connected div {
width: calc(50% - 22px);
}
div.connected div:nth-child(n+3) {
margin-top: 20px;
}
div.connected div:nth-child(3)::before {
display: none;
}
}
<div class="connected">
<div>
<span>Some text here</span>
</div>
<div>
<span>Some text here</span>
</div>
<div>
<span>Some long long long text here</span>
</div>
<div>
<span>Some text here</span>
</div>
</div>
答案 2 :(得分:1)
给定标记,一个简单的解决方案是将水平线(:after
的{{1}}伪元素)与.step-number
div对齐。以下是:
.step-#
.step-1,
.step-2,
.step-3,
.step-4 {
...
/* Set position of step divs to be relative. */
position: relative;
}
.step-number:after {
/* Absolutely position this to the bottom center of step-#.
15px is the radius of step-number.
A 100% width, and a 50% left expands the line's
length to the center of the next step-#. */
position: absolute;
left: 50%;
bottom: 15px;
margin-left: 15px;
...
}
.step-number {
/* A fixed width of 30px allows us to correctly position the line. */
border-radius: 20px;
width: 30px;
height: 30px;
...
}
&#13;
.step-number {
border-radius: 20px;
width: 30px;
height: 30px;
line-height: 30px;
border: 1px #AAA solid;
text-align: center;
display: inline-block;
background-color: #FFF;
}
/*
Absolutely position this to the bottom center of step-#.
15px is the radius of step-number.
A 100% width, and a 50% left expands the line's
length to the center of the next step-#.
*/
.step-number:after {
content: ' ';
position: absolute;
left: 50%;
margin-left: 15px;
bottom: 15px;
width: 100%;
height: 1px;
background-color: #AAA;
}
/* Hide the line after the last step */
.step-4 .step-number:after {
display: none;
}
.steps {
max-width: 1170px;
margin: auto;
overflow: auto;
}
.step-title {
min-height: 80px;
}
.step-1,
.step-2,
.step-3,
.step-4 {
width: 22%;
vertical-align: top;
display: inline-block;
text-align: center;
/* Set position of step divs to be relative. */
position: relative;
border: 1px #FAA solid;
}
@media screen and (max-width: 400px) {
.step-number:after {
content: none;
display: none;
}
}
&#13;
为了跟上小屏幕,您可以添加媒体查询以隐藏水平线,一旦<div class="steps">
<div class="step-1">
<div class="step-image">
<img src="https://placehold.it/100x100">
</div>
<div class="step-title">Measure Your Space</div>
<div class="step-number">1
</div>
</div>
<div class="step-2">
<div class="step-image">
<img src="https://placehold.it/100x100">
</div>
<div class="step-title">Your Kitchen is Designed</div>
<div class="step-number">2</div>
</div>
<div class="step-3">
<div class="step-image">
<img src="https://placehold.it/100x100">
</div>
<div class="step-title">Your Materials are Shipped</div>
<div class="step-number">3</div>
</div>
<div class="step-4">
<div class="step-image">
<img src="https://placehold.it/100x100">
</div>
<div class="step-title">Start contruction of your dream kitchen</div>
<div class="step-number">4</div>
</div>
</div>
跨越多行。
.step-#
答案 3 :(得分:0)
.steps {
max-width: 1170px;
margin: auto;
overflow: auto;
box-sizing:border-box;
}
.step-1,
.step-2,
.step-3,
.step-4 {
width: 90px;
height:200px;
float: left;
border:2px solid #ff0000;
box-sizing:border-box;
text-align:center;
position:relative;
margin:5px;
z-index:999;
}
img{
width:50%;
height:50px;
margin:auto;
margin-top:10px
}
.step-number{
border-radius: 50%;
border: 1px solid #000;
position: absolute;
bottom: 20px;
right: 43%;
padding: 4px;
z-index:999;
}
hr{
position: absolute;
width: 282px;
height: 1px;
right: 53px;
bottom: 23px;
z-index: 990;
}
<div class="steps">
<div class="step-1">
<div class="step-image">
<img src="https://i.stack.imgur.com/ElI1w.jpg">
</div>
<div class="step-title">Measure Your Space</div>
<div class="step-number">1
</div>
</div>
<div class="step-2">
<div class="step-image">
<img src="https://i.stack.imgur.com/ElI1w.jpg">
</div>
<div class="step-title">Your Kitchen is Designed</div>
<div class="step-number">2</div>
</div>
<div class="step-3">
<div class="step-image">
<img src="https://i.stack.imgur.com/ElI1w.jpg">
</div>
<div class="step-title">Your Materials are Shipped</div>
<div class="step-number">3</div>
</div>
<div class="step-4">
<div class="step-image">
<img src="https://i.stack.imgur.com/ElI1w.jpg">
</div>
<div class="step-title">Start contruction of your dream kitchen</div>
<div class="step-number">4</div>
<hr/>
</div>
</div>