如何使用CSS在列表项之间创建垂直线?

时间:2016-11-07 11:00:03

标签: html css html5 css3

我指的是这些行:http://prntscr.com/d44uuk 我希望它们具有动态高度 - 因此,如果我决定更改<li>元素之间的垂直距离 - 它们将自动调整大小。

这是我的小提琴: https://jsfiddle.net/v6ccgkwo/

ul {
  list-style: none;
}

ul li {
  margin-bottom: 40px;
}

ul li span {
  border-radius: 50%;
  border: 1px dashed black;
  padding: 5px 10px;
  margin-right: 10px;
}
<ul>
  <li><span>1</span>Легко устанавливается на сайт</li>
  <li><span>2</span>Следит за поведением посетителей</li>
  <li><span>3</span>Замечает, когда они тянут курсор к крестику, намереваясь уйти</li>
  <li><span>4</span>И показывает всплывающее окно с заманчивым предложением</li>  
</ul>

4 个答案:

答案 0 :(得分:10)

这将适用于动态内容,并且不使用额外的DOM。试一试

ul {
  list-style: none;
}

ul li {
  padding-bottom: 40px;
  position:relative
}

ul li span {
  border-radius: 50%;
  border: 1px dashed black;
  padding: 5px 10px;
  margin-right: 10px;
  background:#fff
}
ul li span:before{
  content:'';
  position:absolute;
  border-left:1px solid ;
  left:14px;
  bottom:0;
  z-index:-1;
  height:100%
}

ul li:last-child span:before{
 content:none;
}
ul li:last-child{
  padding-bottom:0
}
<ul>
<li><span>1</span>Легко устанавливается на сайт</li>
<li><span>2</span>Следит за поведением посетителей</li>
<li><span>3</span>Замечает, когда они тянут курсор к крестику, намереваясь уйти</li>
<li><span>4</span>И показывает всплывающее окно с заманчивым предложением</li>
  </ul>

答案 1 :(得分:1)

带有自动递增计数器的改进版本,可生成编号

&#13;
&#13;
ul {
  max-width: 400px;
  margin: 0 auto;
  list-style-type: none;
  counter-reset: steps;
  margin: 0;
  font-family: sans-serif;
}
ul li {
  padding: 0 0 20px 50px;
  position: relative;
  margin: 0;
}
ul li:after {
  position: absolute;
  top: 0;
  left: 0;
  content: counter(steps);
  counter-increment: steps;
  border: 2px solid #000;
  border-radius: 50%;
  display: inline-block;
  height: 24px;
  width: 24px;
  text-align: center;
  line-height: 24px;
  background: #fff;
}
ul li:before {
  position: absolute;
  left: 13px;
  top: 0;
  content: "";
  height: 100%;
  width: 0;
  border-left: 2px dashed #000;
}
ul li:last-of-type:before {
  border: none;
}
&#13;
<ul>
  <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
  <li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
  <li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</li>
  <li>Et harum quidem rerum facilis est et expedita distinctio.</li>
</ul>
&#13;
&#13;
&#13;  

答案 2 :(得分:0)

CSS仅修复。

ul {
    list-style: none;
    float: left;
    width: 100%;
    padding: 0;
}

ul li {
    padding-bottom: 40px;
    float: left;
    width: 100%;
    position: relative;
}

ul li span {
    border-radius: 50%;
    border: 1px dashed black;
    width: 30px;
    height: 30px;
    line-height: 30px;
    margin-right: 10px;
    background-color: #fff;
    display: inline-block;
    position: relative;
    text-align: center;
}

ul li:before {
    content: '';
    position: absolute;
    top: 0;
    width: 1px;
    height: 100%;
    left: 15px;
    background: #000;
    z-index: -1;
}

ul li:last-child:before {
    display: none;
}

答案 3 :(得分:0)

我认为你可以这样写:

HTML:

<ul>
 <li>
  <span>1</span>
  <span class="text">Легко устанавливается на сайт</span>
  <div class="verticalLine"></div>
 </li>
 <li>
  <span>2</span>
  <span class="text">Следит за поведением посетителей Следит за поведением посетителей</span>
  <div class="verticalLine"></div>
 </li>
 <li>
  <span>3</span>
  <span class="text">Замечает, когда они тянут курсор к крестику, намереваясь уйти</span>
  <div class="verticalLine"></div>
 </li>
 <li>
  <span>4</span>
  <span class="text">И показывает всплывающее окно с заманчивым предложением</span>
 </li>
</ul>

的CSS:

ul {
  list-style: none;
}

ul li {
  padding-bottom: 11px;
  margin-bottom:29px;
  position:relative;
}

ul li span:first-child {
  border-radius: 50%;
  border: 1px dashed black;
  padding: 5px 10px;
  margin-right: 10px;
}
ul li span.text {
  padding-left: 20px;
}
.verticalLine{
  position:absolute;
  height:100%;
  width:1px;
  border-left:1px solid black;
  left:15px;
  top:23px;
}

还在jsFiddle

工作