jquery - HTML-CSS;为层次结构中的每个下一个嵌套 ul li 添加 5px 到 margin-left

标签 jquery html css treeview

我有嵌套的ul-->li树,我想要设置嵌套的ul padding: 0; margin :0 0 0 0;然后将 margin-left:5px 给它的父级 ul 边距。例如,在第 1 层,ul 是 margin-left:0px,那么第 2 层的嵌套 ul 将是(parent ul margin + 5px),这将是 0+5 = 5px;对于第 3 层的嵌套 ul 将是 (5px + 5xp) = 10px;

我更喜欢通过 css 实现,如果不是,那么 jquery

https://jsfiddle.net/vr84pd6u/7/

html

<div>
<ul class="tree">
    <li><a>System Administration</a></li>
    <li><a>System Core</a>
        <ul>
           <li><a>f2</a></li>
           <li><a>f3</a>
              <ul>
                 <li><a>f4</a></li>
                 <li><a>f5</a></li>
                 <li><a>f6</a></li>
              </ul>
           </li>
           <li><a>f7</a>
               <ul>
                  <li><a>f8</a>            
                  <ul>
                     <li><a>f10</a>            
                     <ul>
                         <li><a>f11</a></li>
                     </ul>
                  </li>
                </ul>
            </li>
                 <li><a>f9</a></li>
             </ul>
         </li>
       </ul>
    </li>
    <li><a>MyFunctionA</a>
       <ul>
         <li><a>f12</a>
            <ul>
               <li><a>f13</a></li>
               <li><a>f14</a></li>
            </ul>
         </li>
          <li><a>f16</a></li>
        </ul>
      </li>
    <li><a>Course Management</a></li>
</ul>

</div>

CSS

 .tree ul li ul {
        border-left: 1px solid #D9DADB;
        background-color: limegreen;
        padding: 0;
        margin: 0 0 0 0;
    }

最佳答案

添加以下规则应该会产生您想要的效果:

/*Level 1*/
.tree > li > ul {
    margin: 0;
    padding: 0;
}
/*All other levels*/
.tree > li > ul ul {
    margin: 0 0 0 5px;
    padding: 0;
}

.tree > li > ul 将规则应用到 ululli直接后代,而 li 本身就是直接后代到 .tree.tree > li > ul ul 获取第一层 ul 的所有后代 ul

.tree 中作为另一个 ul 子级的每个 ul 将获得 5px 左边距,因为每个ul 是另一个 ul 的子级,此边距实际上将被堆叠。

.tree ul li ul {
    border-left: 1px solid #D9DADB;
    background-color: limegreen;
}
/*Level 1*/
.tree > li > ul {
    margin: 0;
    padding: 0;
}
/*All other levels*/
.tree > li > ul ul {
    margin: 0 0 0 5px;
    padding: 0;
}
<div>
    <ul class="tree">
        <li><a>System Administration</a></li>
        <li><a>System Core</a>
            <ul>
               <li><a>f2</a></li>
               <li><a>f3</a>
                  <ul>
                     <li><a>f4</a></li>
                     <li><a>f5</a></li>
                     <li><a>f6</a></li>
                  </ul>
               </li>
               <li><a>f7</a>
                   <ul>
                      <li><a>f8</a>            
                      <ul>
                         <li><a>f10</a>            
                         <ul>
                             <li><a>f11</a></li>
                         </ul>
                      </li>
                    </ul>
                </li>
                     <li><a>f9</a></li>
                 </ul>
             </li>
           </ul>
        </li>
        <li><a>MyFunctionA</a>
           <ul>
             <li><a>f12</a>
                <ul>
                   <li><a>f13</a></li>
                   <li><a>f14</a></li>
                </ul>
             </li>
              <li><a>f16</a></li>
            </ul>
          </li>
        <li><a>Course Management</a></li>
    </ul>
</div>

关于jquery - HTML-CSS;为层次结构中的每个下一个嵌套 ul li 添加 5px 到 margin-left,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231733/

相关文章:

javascript - 如何将函数绑定(bind)到窗口宽度?

javascript - 限制安卓设备的字段输入

javascript - 在同一链接的两个功能之间切换

javascript - 为什么在这个 JSfiddle 中多出 10 个像素?

javascript - 使用javascript单击后退按钮时重定向到另一个网址

javascript - 带有自定义类的语义 UI 弹出箭头位置

jquery - Kendo UI 如何使用 jQuery 获取网格属性?

html - 在我的 getStepContent 方法中显示一个文本框

html - 为什么我的 Webfonts 在 Windows 机器和 iPhone 上不显示?

html - <span> 在使用 ShareThis 时不保持内联