2016-03-27 16 views
0

Ich muss eine Baumstruktur mit HTML und CSS erstellen.Baumstruktur in HTML

Structure should be like this.

Aktuelle CSS und HTML für diese:

ul{ 
 
    list-style: none; 
 
    } 
 
ul li{ 
 
    background: #F4F4F4; 
 
    } 
 
li.active{ 
 
    background: #B7E9FB!important; 
 
    }
<ul> 
 
<li class="drag-folder"> 
 
    <a href="javascript:void(0);"> 
 
    <span>TEST1.1</span> 
 
    </a> 
 
    <div class="nested-list"> 
 
    <ul style="display:block">     
 
     <li class="drag-folder"> 
 
     <a href="javascript:void(0);"> 
 
      <span>TEST1.2</span> 
 
     </a> 
 
     <div class="nested-list"> 
 
      <ul style="display:block">     
 
      <li class="drag-folder"> 
 
       <a href="javascript:void(0);"> 
 
       <span>TEST1.3</span> 
 
       </a> 
 
       <div class="nested-list"> 
 
       <ul style="display:block">     
 
        <li class="drag-folder"> 
 
        <a href="javascript:void(0);"> 
 
         <span>TEST1.4</span> 
 
        </a> 
 
        <div class="nested-list"> 
 
         <ul style="display:block">     
 
         <li class="drag-folder active"> 
 
          <a href="javascript:void(0);"> 
 
          <span>TEST1.5</span> 
 
          </a> 
 
          <div class="nested-list"> 
 
          <ul style="display:block">     
 
           <li class="drag-folder"> 
 
           <a href="javascript:void(0);"> 
 
            <span>TEST1.6</span> 
 
           </a> 
 
           </li> 
 
          </ul> 
 
          </div> 
 
         </li> 
 
         </ul> 
 
        </div> 
 
        </li> 
 
       </ul> 
 
       </div> 
 
      </li> 
 
      </ul> 
 
     </div> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</li> 
 
</ul>

Diese Struktur n Anzahl von Knoten aufweisen kann.

Problem: verschachtelte Elemente Breite ist weniger als Root-Element Breite wegen der linken Füllung (Padding auf Display-Hierarchie angewendet), so auf Hover-Hintergrundfarbe ändert sich nur für diese bestimmte Breite.

Ich möchte die Breite aller li Element zu 100% des Wurzelelements so auf aktiven Hintergrund Farbe wird für 100% Breite des Anzeigebereichs ändern, aber Hierarchie beibehalten müssen.

Ich hätte gerne CSS-Lösung dafür.

Vielen Dank im Voraus.

+0

Warum Sie nicht nur anwenden, um Ihre '.active' Klasse zu' a'-Tags? Und tun Sie etwas wie folgt: [jsfiddle] (https://jsfiddle.net/aptc5vtu/) – YounesM

Antwort

0

Sie können Ihre CSS wie folgt ändern:

ul{ 
    list-style: none; 
} 

ul li{ 
    background: #F4F4F4; 
} 

ul li a{ 
    display:block; 
} 

li.active a{ 
    background: #B7E9FB!important; 
} 
+0

Einige Kommentar, warum dieser bestimmte Code immer hilfreich ist. –

+0

Ich brauche aktiven Knoten, der volle Breite hat. –

+0

'li.active a {Anzeige: Block; Rand-Links: -100%; Padding-Links: 100%; Hintergrund: # B7E9FB;}', setze den ersten _ul_ Element-Stil: 'overflow: hidden' und setze den Root-Element (in Ihrem HTML ist _Body_) und _li_ ** Hintergrund ** die gleiche Farbe. –