2017-10-09 61 views
0

我有一個菜單,並希望每個孩子類別比其父母的20px更窄。下面的代碼有效,但很醜陋。任何人都可以提出一種動態的方法嗎?如何動態減少每個子列表寬度20px?

我有以下的HTML代碼:

<ul class="filetree"> 
    <li>Category 1</li> 
    <li>Category 2 
     <ul> 
      <li>SUBCAT 1 
       <ul> 
        <li>SUBCAT 2> 
         <ul> 
          <li>SUBCAT 3 
           <ul> 
            <li>SUBCAT 4</li> 
           </ul> 
          </li> 
         </ul> 
        </li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li>Category 3</li> 
    <li>Category 3</li> 
</ul> 

下面CSS代碼:

ul.filetree li a { 
    width: 440px; 
    white-space: nowrap; 
    overflow: hidden; 
    text-overflow: ellipsis; 
} 
ul.filetree li ul li a { 
    width: 420px; 
} 
ul.filetree li ul li ul li a { 
    width: 400px; 
} 
ul.filetree li ul li ul li ul li a { 
    width: 380px; 
} 
ul.filetree li ul li ul li ul li ul li a { 
    width: 360px; 
} 
ul.filetree li ul li ul li ul li ul li ul li a { 
    width: 340px; 
} 
ul.filetree li ul li ul li ul li ul li ul li ul li a { 
    width: 320px; 
} 
ul.filetree li ul li ul li ul li ul li ul li ul li ul li a { 
    width: 300px; 
} 
+1

'width:calc(100% - 20px)'? –

+0

您的預期產量是多少?這看起來應該如何? –

回答

0

您可以添加margin-left例如:

ul.filetree li a { 
 
    width: 440px; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
} 
 
ul.filetree li ul li a { 
 
    margin-left:20px; 
 
}
<ul class="filetree"> 
 
    <li>Category 1</li> 
 
    <li>Category 2 
 
     <ul> 
 
      <li>SUBCAT 1 
 
       <ul> 
 
        <li>SUBCAT 2> 
 
         <ul> 
 
          <li>SUBCAT 3 
 
           <ul> 
 
            <li>SUBCAT 4</li> 
 
           </ul> 
 
          </li> 
 
         </ul> 
 
        </li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
    <li>Category 3</li> 
 
    <li>Category 3</li> 
 
</ul>

+0

感謝您的回覆。它現在看起來像這樣,它運作良好: https://imgur.com/a/zW9vi 我討厭CSS爲每個孩子減少20px,並想知道是否有更好的方式來寫它。 這個想法是,長文件夾和文件名被正確截斷爲固定的空間。 –