【问题标题】:How do I draw a horizontal line between two circles with CSS?如何用 CSS 在两个圆圈之间画一条水平线?
【发布时间】:2021-03-02 22:22:00
【问题描述】:

如何在 CSS 中的两个圆圈之间画一条水平线?

它必须在它们的中间,如屏幕截图所示。

此处示例:

我已经画了两个圆圈,但不知道如何连接它们。

#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>

demo on JSFiddle

【问题讨论】:

    标签: html css css-shapes


    【解决方案1】:

    您可以使用伪元素插入绝对定位的边框:

    #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>

    注意事项:

    1. Establish nearest positioned ancestor for absolute positioning.
    2. 让容器只占用必要的宽度。
    3. 插入伪元素
    4. 确保任何水平线重叠都不会出现在圆圈上方

    【讨论】:

    • 谢谢!惊人的。我把它改成了链接元素,所以它可以处理多个步骤jsfiddle.net/nerlijma/s5x2kmmz/10,以防它帮助任何人!
    • @nerlijma 如果您不希望该行从最终链接延伸,您可以将规则更改为#status-buttons a:not(:last-child)::after
    • @DaveMongoose 好建议!
    【解决方案2】:

    您可以添加一个新元素并将其放置在两个圆圈之间:

    #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>

    【讨论】:

      【解决方案3】:

      这是一种解决方案:

      https://jsfiddle.net/sfyuxrs9/

      它包含一个div(形成线),它具有position: absolute和一个负的z-index值。剩下的只是调整宽度/高度/顶部和左侧的所有值

      【讨论】:

        【解决方案4】:

        我猜你可以做这样的事情 检查以下代码sn -p

        #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>

        希望对你有帮助

        【讨论】:

          【解决方案5】:

          给你。

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

          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/

          【讨论】:

            【解决方案6】:

            这是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>

            【讨论】:

            • 非常干净的解决方案!!
            【解决方案7】:

            你也可以用这个方法:)

            .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>

            【讨论】:

              猜你喜欢
              • 2020-04-10
              • 2022-10-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-10-08
              • 2013-10-07
              • 1970-01-01
              • 2012-11-12
              相关资源
              最近更新 更多