Как сделать отступы в списке?
Есть список, внутри которого есть еще списки, а внутри него еще списки... ну и так далее. Содержимое каждого элемента списка взято в div. Нужно проставить отступы (margin-left) для div, но так, чтобы за каждую степень вложенности списка отступ увеличивался на N. Знаю, можно сделать через css, но в моем случае это не подойдет.
<ul> <li><div>a1</div> <ul> <li><div>b1</div> <ul> <li><div>c1</div></li> <li><div>c2</div></li> <li><div>c3</div></li> </ul> </li> <li><div>b2</div></li> <li><div>b3</div></li> </ul> </li> <li><div>a2</div> <li><div>a3</div> </ul> |
Могу предложить код на "чистом javascript". Может поможет:)
<style> UL { margin: 0px; } LI { list-style-type: none; } </style> <ul> <li><div>a1</div> <ul> <li><div>b1</div> <ul> <li><div>c1</div></li> <li><div>c2</div></li> <li><div>c3</div></li> </ul> </li> <li><div>b2</div></li> <li><div>b3</div></li> </ul> </li> <li><div>a2</div> <li><div>a3</div> </ul> <script> var allDivs = document.getElementsByTagName('div') for(var i = 0; i < allDivs.length; i++){ var element = allDivs[i], count = 0 while(element){ if(element.tagName == 'UL') count++ element = element.parentNode } allDivs[i].style.marginLeft = 30*count + 'px' } </script> |
А если мне нужно не все div, а только дивы внутри определенного контйнера?)
|
var allDivs = document.getElementById('wrapper').getElementsByTagName('div') |
Часовой пояс GMT +3, время: 23:50. |