【问题标题】:Draw lines between circles css在圆圈之间画线 css
【发布时间】:2020-04-10 02:32:45
【问题描述】:

我正在尝试在圆圈之间画线,我有这个代码https://codepen.io/cfmorales/pen/qBEqGpr,在某种程度上它可以工作,但是当你调整页面大小时,线的高度与圆圈不匹配,我该如何制作的任何想法它反应灵敏吗?所有的魔法都在 :before

td:nth-child(2) {
            vertical-align: baseline;
          }

          td:nth-child(1) {
            display: flex;
            justify-content: center;
            margin-right: 28px;
            width: 42px;
            height: 42px;
            border: 1px solid #999999;
            border-radius: 100%;
            text-align: center;
            margin-bottom: 31%;
            position: relative;
          }
          tr > td:first-child:before { 
            content: '';
            position: absolute;
            background: #BFBFBF;
            height: 26px;
            width: 1px;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
        
          }
          tr:last-child > td:first-child:before {
            display: none;
     
          }

          span {
            vertical-align: middle;
            color: #999999;
            font-family: "Playfair Display";
            font-size: 24px;
            line-height: 32px;
            text-align: center;
          }
<table class="table_1">
  <tbody>
    <tr>
      <td><span>1</span></td>
      <td><span>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span>2</span></td>
      <td><span>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal mLorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span>3</span></td>
      <td><span>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span>4</span></td>
      <td><span>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span>5</span></td>
      <td><span>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
  </tbody>
</table>
<p></p>

【问题讨论】:

  • 这些代码实际上不起作用。您能否详细介绍您要完成的工作?损坏的代码不是所需行为的一个很好的例子,因为它是......好吧......损坏了。
  • 我看到的第一件事是您在 CSS 中使用了 // 注释。你可以在像 Sass 这样的预处理器中使用这些 cmets,但原生 CSS 只有一种注释样式:/* comment */// 会引起问题。那条线打破了整个事情,当他们打开你的例子时,没有人能看到任何东西。进入并更改该评论样式并重新保存。
  • 您只是想让线条停留在圆圈之间,接触圆圈边缘,还是穿过所有圆圈的中心?
  • 抱歉,伙计们编辑了,@StephenMIrving 我只想将圆圈与线条连接起来,它必须是响应式的
  • 必须是一张桌子吗?我看到的是一个带有左边框的 div 和一个 ::before 元素,里面有一个数字。

标签: html css sass flexbox


【解决方案1】:

你可以更好地使用 SVG,检查下面的链接

    <svg>
  <line
x1="50"
y1="100"
x2="500"
y2="100"
style="stroke:rgb(0, 0, 0);stroke-width:2.5"
/><svg>

【讨论】:

  • 我应该把那个放在哪里? td之后?
  • 这些被称为 SVG,这是前一种方法的替代方法...使用它您可以轻松地绘制线条圆圈...一切
【解决方案2】:

更新

td:nth-child(2) {
            vertical-align: baseline;
          }

          td:nth-child(1) {
            display: flex;
            justify-content: center;
            margin-right: 28px;
            width: 42px;
            height: 42px;
            border: 1px solid #999999;
            border-radius: 100%;
            text-align: center;
            margin-bottom: 31%;
            position: relative;
            background: #fff;
          }
          tr > td:first-child:before { 
  
        
          }
          tr:last-child > td:first-child:before {
            display: none;
     
          }

          span {
            vertical-align: middle;
            color: #999999;
            font-family: "Playfair Display";
            font-size: 24px;
            line-height: 32px;
            text-align: center;
          }
.cc{
  position: relative;
  display: block;
  width: 100%;
  text-align: left;
}
.cc:after{
content: '';
position: absolute;
background:
#BFBFBF;
height: 100%;
width: 1px;
top: 3px;
left: -55px;
transform: translateX(-50%);
display: block;
z-index: -1;
  overflow:hidden;
}
.num{
   position: relative;
  z-index: 100;
  background:#fff;
}
<table class="table_1">
  <tbody>
    <tr>
      <td><span class="num">1</span></td>
      <td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span class="num">2</span></td>
      <td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal mLorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span class="num">3</span></td>
      <td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span class="num">4</span></td>
      <td><span class="cc">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
    <tr>
      <td><span class="num">5</span></td>
      <td><span class="">Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</span></td>
    </tr>
  </tbody>
</table>
<p></p>

【讨论】:

【解决方案3】:

因此,我对您的代码进行了一些更改,并在我自己的 Codepen 中对其进行了一些处理。这是一个棘手的问题,您使用表格格式化标记以使线条仅到达圆圈的边缘。我所做的是给圆圈一个浅色并将线一直向下发送通过所有圆圈,但更改了 z-index 使其隐藏在圆圈颜色的后面。由于我将高度从100% 更改为90vh,因此我还在表格本身周围添加了一个包装器div,以防止该行继续向下到屏幕底部。剩下要解决的唯一问题是让行停在最后一个圆圈,而不是继续到最后一个圆圈的最后一点文本的底部。无论如何,在我看来,它现在看起来比你原来的例子好多了。我仍在努力,但您可以在这里查看我到目前为止所做的工作:https://codepen.io/stephenirving/pen/Jjobqrb

如果您需要我解释我的任何更改,我很乐意。

当前的 CSS 代码在这里:

td:first-child {
    align-items: center;
    background: #add8e6;
    border-radius: 50%;
    border: 1px solid #999;
    display: flex;
    height: 42px;
    justify-content: center;
    margin-right: 28px;
    position: relative;
    text-align: center;
    width: 42px;
}

tr:not(:last-child) > td:first-child:before {
    background: #bfbfbf;
    content: "";
    height: 90vh;
    left: 50%;
    position: absolute;
    top: 100%;
    transform: translateX(-50%);
    width: 1px;
    z-index: -1;
}

td:last-child {
  text-align: justify;
    vertical-align: top;
}

tr:not(:last-child) > td:last-child {
  padding-bottom: 1em;
}

span {
    color: #999;
    font: 1.5rem/1.333 "Playfair Display", sans-serif;
    text-align: center;
    vertical-align: middle;
}

.wrapper--table-list {
  margin-top: 1.5em;
  overflow: hidden;
  width: 95%;
}

【讨论】:

    【解决方案4】:

    我用 div 替换了你的表格。

    我在这里做了一些 CSS 魔术。

    • 这条线只是一个左边框。

    • 圆圈是一个 ::before 伪元素。

    • 每个 ::before 元素中都有一个计数器。

    • 我还使用了 CSS 变量,以便更轻松地更新多个元素。

    • 我猜你不希望最后一个元素有一行,所以我使用 :not(:last-child) 来阻止这种情况发生。

    :root {
      --circle-size: 42px;
      --spacing: 28px;
      --text-color: #999;
    }
    
    .container {
      counter-reset: section;
      padding-top: var(--spacing);
      padding-left: var(--spacing);
    }
    
    .container > div {
      position: relative;
      padding: calc(2 * var(--spacing));
      padding-top: 0px;
      
      color: var(--text-color);
      font-family: "Playfair Display";
      font-size: 24px;
      line-height: 32px;
    }
    
    .container > div:not(:last-child) {
      border-left: 1px solid;
    }
    
    .container > div::before {
      counter-increment: section;
      content: counter(section);
      position: absolute;
      left: 0px;
      top: -4px;
    
      transform: translateX(-50%);
      
      width: var(--circle-size);
      height: var(--circle-size);
      
      display: flex;
      justify-content: center;
      align-items: center;
    
      border: 1px solid var(--text-color);
      border-radius: 50%;
      background-color: white;
    }
    <div class="container">
      <div>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</div>
      <div>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal mLorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</div>
      <div>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</div>
      <div>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</div>
      <div>Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido usó una galería de textos y los mezcló de tal m</div>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      相关资源
      最近更新 更多