使用CSS

时间:2018-07-11 17:47:55

标签: html css list

我有一个要通过边界线连接的元素列表。此行应仅限于每个父级,但应触摸该父级的所有子级(对于列表中的每个父级)。从屏幕快照中可以看到,我的问题是我的行从上到下遍历整个页面,并且似乎不符合父级的高度,也没有在每个子级列表停止时中断。

理想情况下,此图片中将有两条单独的行,一条在test1和test2之间,另一条从test2到整个列表的末尾(父行之间有一些缓冲空间,因此它们不会接触)。

有什么想法吗?我已经尝试了几个小时来添加不同的样式,以尝试限制行高,但是没有任何效果。谢谢!

#test ul li ul li::before {
  content: "";
  display: block;
  position: absolute;
  z-index: 1;
  left: 50px;
  top: 0;
  bottom: 0;
  max-height: 100%;
  border-left: 1px solid #7A7A7A;
}
<div id="test">
  <ul>
    <li>
      test1
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
    <li>
      test2
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
  </ul>
</div>

3 个答案:

答案 0 :(得分:1)

使用选择器尝试时,我并没有真正得到您的帮助:

我认为您应该将选择器更改为:#test ul li ul

这将针对下一个html结构

<element id="test">
  …
    <ul>
      …
        <li>
          …
            <ul>
              …

希望这会有所帮助:>

#test ul li ul {
  border-left: 1px solid red;
}
<div id="test">
  <ul>
    <li>
      test1
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
    <li>
      test2
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
  </ul>
</div>

答案 1 :(得分:1)

不确定所需的输出,请检查下面的代码,这是否是您要尝试的操作

现在,行是贯穿页面的,因为您的伪元素位于绝对位置,并且没有相对元素,因此默认情况下是相对于正文的,这就是它从上到下运行的原因

    #test ul li ul li {
  position: relative;
}

#test ul li ul li::before {
  content: "";
  display: block;
  position: absolute;
  z-index: 1;
  left: -25px;
  top: 0;
  bottom: 0;
  max-height: 100%;
  border-left: 1px solid #7A7A7A;
}
<div id="test">
  <ul>
    <li>
      test1
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
    <li>
      test2
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
  </ul>
</div>

答案 2 :(得分:0)

您还可以定位父级列表项并获得相同的功能。

#test > ul >li {
  position:relative;
}
#test > ul >li:before {
  content: "";
  position:absolute;;
  border-left:3px solid black;
  height: 85%;
  top:10px;
  left: -15px;
}
<div id="test">
  <ul>
    <li>
      test1
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
    <li>
      test2
      <ul>
        <li>
          1
        </li>
        <li>
          2
        </li>
        <li>
          3
        </li>
        <li>
          4
        </li>
      </ul>
    </li>
  </ul>
</div>