简体   繁体   English

如何使用 CSS 在两个圆圈之间绘制一条水平线?

[英]How do I draw a horizontal line between two circles with CSS?

How do I draw a horizontal line in between 2 circles in CSS?如何在 CSS 中的 2 个圆圈之间绘制一条水平线?

It has to be in the middle of them just as shown in the screenshot.正如屏幕截图所示,它必须位于它们的中间。

Example here:这里的例子:

在此处输入图片说明

I have drawn the 2 circles, but don't know how to connect them.我画了两个圆圈,但不知道如何连接它们。

 #status-buttons a { color: black; display: inline-block; font-size: 17px; font-weight: normal; margin-right: 0; text-align: center; text-transform: uppercase; min-width: 150px; text-decoration: none; } #status-buttons a:hover { text-decoration: none; } #status-buttons a.active span { color: white; background: #ACCF5B; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; } #status-buttons span { color: white; background: #22bacb; display: block; height: 45px; margin: 0 auto 10px; padding-top: 20px; width: 60px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; }
 <div id="status-buttons" class="text-center"> <a href="#/form/regalo" class="active"><span>1</span> Step 1</a> <a href="#/form/tusdatos"><span>2</span> Step 2</a> </div>

See demo on JSFiddle在 JSFiddle 上查看演示

You can use a pseudo-element to insert an absolutely-positioned border:您可以使用伪元素插入绝对定位的边框:

 #status-buttons { position: relative; /* 1 */ display: inline-block; /* 2 */ } #status-buttons::after { /* 3 */ content: ""; position: absolute; width: 50%; z-index: -1; /* 4 */ top: 35%; left: 25%; border: 3px solid #ACCF5B; } #status-buttons a { color: black; display: inline-block; font-size: 17px; font-weight: normal; margin-right: 0; text-align: center; text-transform: uppercase; min-width: 150px; text-decoration: none; } #status-buttons a:hover { text-decoration: none; } #status-buttons a.active span { color: white; background: #ACCF5B; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; } #status-buttons span { color: white; background: #22bacb; display: block; height: 45px; margin: 0 auto 10px; padding-top: 20px; width: 60px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; }
 <div id="status-buttons" class="text-center"> <a href="#/form/regalo" class="active"><span>1</span> Step 1</a> <a href="#/form/tusdatos"><span>2</span> Step 2</a> </div>

Notes:注意事项:

  1. Establish nearest positioned ancestor for absolute positioning. 为绝对定位建立最近的定位祖先。
  2. Make container consume only the width necessary.使容器仅消耗必要的宽度。
  3. Insert pseudo element插入伪元素
  4. Ensure that any horizontal line overlap doesn't appear above circles确保任何水平线重叠都不会出现在圆圈上方

You can add a new element and position it between the two circles:您可以添加一个新元素并将其放置在两个圆圈之间:

 #status-buttons a { color: black; display: inline-block; font-size: 17px; font-weight: normal; margin-right: 0; text-align: center; text-transform: uppercase; min-width: 150px; text-decoration: none; } #status-buttons a:hover { text-decoration: none; } #status-buttons a.active span { color: white; background: #ACCF5B; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; } #status-buttons span { color: white; background: #22bacb; display: block; height: 45px; margin: 0 auto 10px; padding-top: 20px; width: 60px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; } #line { position: absolute; top: 42px; left: 112px; width: 96px; height: 5px; background: #ACCF5B; }
 <div id="status-buttons" class="text-center"> <a href="#/form/regalo" class="active"><span>1</span> Step 1</a> <div id="line"> </div> <a href="#/form/tusdatos"><span>2</span> Step 2</a> </div>

Here is one solution:这是一种解决方案:

https://jsfiddle.net/sfyuxrs9/ https://jsfiddle.net/sfyuxrs9/

It contains a div (which forms the line) which has position: absolute and a negative z-index value.它包含一个具有position: absolutediv (形成线) position: absolute和负z-index值。 The rest ist just adjusting all the values for width/height/top and left其余的只是调整宽度/高度/顶部和左侧的所有值

I guess you can do some thing like this check the following code snippet我想你可以做一些这样的事情检查下面的代码片段

 #status-buttons a { color: black; display: inline-block; font-size: 17px; font-weight: normal; margin-right: 0; text-align: center; text-transform: uppercase; min-width: 150px; text-decoration: none; } #status-buttons a:hover { text-decoration: none; } #status-buttons a.active span { color: white; background: #ACCF5B; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; } #status-buttons span { color: white; background: #22bacb; display: block; height: 45px; margin: 0 auto 10px; padding-top: 20px; width: 60px; border-radius: 50%; box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0; } div.linetop { border-top: 1px solid #111111; width:95px; position:absolute; top:40px; left:115px; }
 <div id="status-buttons" class="text-center"> <a href="#/form/regalo" class="active"><span>1</span> Step 1</a> <a href="#/form/tusdatos"><span>2</span> Step 2</a> </div> <div class="linetop"></div>

Hope this helps希望这有帮助

Here you go.给你。

<div id="status-buttons" class="text-center">
    <a href="#/form/regalo" class="active"><span>1</span> Step 1</a>
    <a href="#/form/tusdatos"><span>2</span> Step 2</a>
</div>
<div class="line">
</div>

The CSS CSS

 #status-buttons a {
    position: relative;
    color: black;
    display: inline-block;
    font-size: 17px;
    font-weight: normal;
    margin-right: 0;
    text-align: center;
    text-transform: uppercase;
    min-width: 150px;
    text-decoration: none;
        z-index: 1;
}

#status-buttons a:hover {
  text-decoration: none;
}

#status-buttons a.active span {
    color: white;
    background: #ACCF5B;
    box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0;
}

#status-buttons span {
    color: white;
    background: #22bacb;
    display: block;
    height: 45px;
    margin: 0 auto 10px;
    padding-top: 20px;
    width: 60px;
    border-radius: 50%;
    box-shadow: rgba(0, 0, 0, 0.792157) 3px 3px 3px 0;

}
.line {
    position: absolute;
    border-bottom: 5px solid black;
    width: 20%;
    left: 71px;
    top: 39px;
    z-index: 0;
}

https://jsfiddle.net/norcaljohnny/nwjz2010/ https://jsfiddle.net/norcaljohnny/nwjz2010/

Here's the cleanest solution with flex这是使用flex的最干净的解决方案

 .timeline { display: flex; align-items: center; justify-content: center; } .circle { width: 13px; height: 13px; background: black; border-radius: 50%; } .dashed { width: 100px; border: 1px dashed #C4C4C4; }
 <div class="timeline"> <div class="circle"></div> <div class="dashed"></div> <div class="circle"></div> <div class="dashed"></div> <div class="circle"></div> </div>

You can also use this method :)您也可以使用此方法:)

 .his-bar { display: flex; position: relative; padding-top: 50px; width: 100%; margin:auto; margin-top: 40px; } .his-bar:before { content: ''; border: 1px solid #727272; position: absolute; top: 60px; right: 0; width: 99%; } .his-bar .point { border: 2px solid #872071; width: 20px; height: 20px; border-radius: 50%; display: inline-block; background-color: #F8F8F8; z-index: 2; position: relative; } .his-bar .point-start:after { content: '2000'; position: absolute; top: 30px; left: -7px; } .his-bar .point-end { margin-left: auto; } .his-bar .point-end:after { content: '2021'; position: absolute; top: 30px; left: -7px; }
 <div class="his-bar"> <span class="point point-start"></span> <span class="point point-end"></span> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM