You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现ul li子层级动态左缩进10px?现有代码仅支持一级缩进

解决动态层级缩进问题

我来帮你搞定这个嵌套列表的缩进问题!你现在遇到的情况是只有第一层子元素有缩进,更深的层级没法自动增加,这是因为当前CSS只给直接子级设置了缩进,没有处理多层嵌套的情况。

问题回顾

你在代码里用了多层<ul>和<li>元素,test1作为TEster的子元素已经实现了左侧10px的缩进,但更深层级的Tester2没法再增加10px的缩进,需要实现动态的层级缩进效果。

当前代码示例

CSS代码

.documents_061e9f12 .container_061e9f12 { max-width: 700px; margin: 0 auto; box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .2), 0 25px 50px 0 rgba(0, 0, 0, .1) } .documents_061e9f12 .titleContainer_061e9f12 { display: -ms-flexbox; display: flex; -ms-flex-pack: justify; justify-content: space-between } .documents_061e9f12 .titleContainer_061e9f12 .title_061e9f12 { font-size: 24px; font-weight: 750 } .documents_061e9f12 .titleContainer_061e9f12 .buttonContainer_061e9f12 { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column } .documents_061e9f12 .titleContainer_061e9f12 .buttonContainer_061e9f12 .upperButtons_061e9f12 { display: -ms-flexbox; display: flex; -ms-flex-direction: row; flex-direction: row; -ms-flex-pack: end; justify-content: flex-end; margin-bottom: 15px } .documents_061e9f12 .titleContainer_061e9f12 .buttonContainer_061e9f12 .upperButtons_061e9f12 .smallIcon_061e9f12 { color: #000; margin-left: 10px } .documents_061e9f12 .titleContainer_061e9f12 .buttonContainer_061e9f12 .lowerButtons_061e9f12 { display: -ms-flexbox; display: flex } .documents_061e9f12 .titleContainer_061e9f12 .buttonContainer_061e9f12 .lowerButtons_061e9f12 .uploadBtn_061e9f12 { padding: 6px 20px; background-color: #578772; color: #fff } .documents_061e9f12 .titleContainer_061e9f12 .buttonContainer_061e9f12 .lowerButtons_061e9f12 .uploadIcon_061e9f12 { background-color: #376b56; color: #fff; width: 30px; display: -ms-flexbox; display: flex; -ms-flex-pack: center; justify-content: center; -ms-flex-align: center; align-items: center } .documents_061e9f12 ul.datacontainer_061e9f12 { list-style: none; padding-left: 5px } .documents_061e9f12 ul.datacontainer_061e9f12 li:first-of-type { border-top: 1px solid #dadada } .documents_061e9f12 ul.datacontainer_061e9f12 li { border-bottom: 1px solid #dadada; padding: 1px 0; cursor: pointer } .documents_061e9f12 ul.datacontainer_061e9f12 li .icon_061e9f12 { min-width: 10px; float: left; padding: 0 10px; font-size: 17px } .documents_061e9f12 ul.datacontainer_061e9f12 li.file_061e9f12 { padding: 5px 0; cursor: auto } .documents_061e9f12 ul.datacontainer_061e9f12 li .arrow_061e9f12 { float: right; margin-right: 10px } .documents_061e9f12 ul.datacontainer_061e9f12 li div.documentContainer_061e9f12 { padding: 5px 0; font-weight: 700 } .documents_061e9f12 ul.datacontainer_061e9f12 li div.documentContainer_061e9f12.open_061e9f12 { background-color: #edf3f1 } .documents_061e9f12 ul.datacontainer_061e9f12 li a { text-decoration: none; font-weight: 400 } .documents_061e9f12 ul.datacontainer_061e9f12 li ul { list-style: none; padding-left: 0 } .documents_061e9f12 ul.datacontainer_061e9f12 li ul li:last-of-type { border-bottom: none } .documents_061e9f12 ul.datacontainer_061e9f12 li ul .file_061e9f12, .documents_061e9f12 ul.datacontainer_061e9f12 li ul div.documentContainer_061e9f12 { padding-left: 10px }

HTML代码(补充完整你提供的片段)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="documents_061e9f12">
  <div class="titleContainer_061e9f12">
    <div class="title_061e9f12">Documents</div>
    <div class="buttonContainer_061e9f12">
      <div class="upperButtons_061e9f12">
        <div class="smallIcon_061e9f12"><i class="ms-Icon ms-Icon--Waffle" style="font-size:18px"></i></div>
        <div class="smallIcon_061e9f12"><i class="ms-Icon ms-Icon--GlobalNavButton" style="font-size:18px"></i></div>
      </div>
      <div class="lowerButtons_061e9f12">
        <div class="uploadBtn_061e9f12">Upload dokument</div>
        <div class="uploadIcon_061e9f12"><i class="ms-Icon ms-Icon--Upload" style="font-size:14px"></i></div>
      </div>
    </div>
  </div>
  <ul class="datacontainer_061e9f12">
    <li>
      <div class="documentContainer_061e9f12 open_061e9f12" 
           data-folder="https://addea.sharepoint.com/extranet/_api/Web/GetFolderByServerRelativePath(decodedurl='/extranet/Shared%20Documents/TEster')/Folders" 
           data-file="https://addea.sharepoint.com/extranet/_api/Web/GetFolderByServerRelativePath(decodedurl='/extranet/Shared%20Documents/TEster')/Files">
        <div class="icon_061e9f12"><span class="ms-Icon ms-Icon--OpenFolderHorizontal"></span></div>
        TEster
        <div class="arrow_061e9f12"></div>
      </div>
      <ul>
        <li>
          <div class="documentContainer_061e9f12" 
               data-folder="https://addea.sharepoint.com/extranet/_api/Web/GetFolderByServerRelativePath(decodedurl='/extranet/Shared%20Documents/TEster/test1')/Folders" 
               data-file="https://addea.sharepoint.com/extranet/_api/Web/GetFolderByServerRelativePath(decodedurl='/extranet/Shared%20Documents/TEster/test1')/Files">
            <div class="icon_061e9f12"><span class="ms-Icon ms-Icon--OpenFolderHorizontal"></span></div>
            test1
            <div class="arrow_061e9f12"></div>
          </div>
          <ul>
            <li>
              <div class="documentContainer_061e9f12">
                <div class="icon_061e9f12"><span class="ms-Icon ms-Icon--OpenFolderHorizontal"></span></div>
                Tester2
              </div>
            </li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</div>

解决方案

要实现动态层级缩进,核心是让每一层嵌套的元素自动叠加缩进值,这里给你两种简单有效的方法:

方法1:给嵌套ul设置递增的内边距(推荐)

这种方法直接作用于列表容器,所有子元素都会跟着缩进,代码最简洁:

/* 替换原来的嵌套ul样式 */
.documents_061e9f12 ul.datacontainer_061e9f12 li ul {
  list-style: none;
  padding-left: 10px; /* 第一层子列表缩进10px */
}
/* 递归让每一层子ul都增加10px缩进 */
.documents_061e9f12 ul.datacontainer_061e9f12 ul {
  padding-left: 10px;
}

不管你的列表有多少层嵌套,每一层都会自动比父级多10px的缩进,完全实现动态效果。

方法2:给每层级的内容元素叠加缩进

如果你需要更精准地控制内容元素的缩进,而不是整个列表容器,可以用这个方法:

/* 第一层子内容缩进10px */
.documents_061e9f12 ul.datacontainer_061e9f12 li ul .file_061e9f12, 
.documents_061e9f12 ul.datacontainer_061e9f12 li ul div.documentContainer_061e9f12 {
  padding-left: 10px;
}
/* 第二层子内容缩进20px */
.documents_061e9f12 ul.datacontainer_061e9f12 li ul li ul .file_061e9f12, 
.documents_061e9f12 ul.datacontainer_061e9f12 li ul li ul div.documentContainer_061e9f12 {
  padding-left: 20px;
}
/* 第三层及以上可以继续扩展,或者用通用选择器简化 */
.documents_061e9f12 ul.datacontainer_061e9f12 ul ul .file_061e9f12, 
.documents_061e9f12 ul.datacontainer_061e9f12 ul ul div.documentContainer_061e9f12 {
  padding-left: 20px;
}
.documents_061e9f12 ul.datacontainer_061e9f12 ul ul ul .file_061e9f12, 
.documents_061e9f12 ul.datacontainer_061e9f12 ul ul ul div.documentContainer_061e9f12 {
  padding-left: 30px;
}

进阶优化:用CSS变量统一控制缩进

如果以后想调整缩进大小,直接改变量值就行,非常方便:

/* 定义基础缩进变量 */
.documents_061e9f12 {
  --indent-size: 10px;
}
/* 递归应用缩进 */
.documents_061e9f12 ul.datacontainer_061e9f12 ul {
  padding-left: var(--indent-size);
}

这样修改后,你的Tester2就会比test1多10px的缩进,更深的层级也会自动跟着缩进,完美实现动态层级效果!

内容的提问来源于stack exchange,提问作者user7255640

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:22:38