나는 즉, 목록의 중첩 된 목록으로, 자연을 배치하고 싶습니다 뭔가 같은 :
<ul>
<li>
<span class="first">usr</span>
<span class="second">root</span>
<span class="third">drwxr-xr-x</span>
<ul>
<li>
<span class="first">bin</span>
<span class="second">root</span>
<span class="third">drwxr-xr-x</span>
<ul>
<li>
<span class="first">which → /bin/which</span>
<span class="second">root</span>
<span class="third">lrwxrwxrwx</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
이 width
문제를 해결 한 요소와 같은 느슨하게 테이블 형식의 데이터를 배치하는 것은 일반적이지만 그리고 display: inline-block
, 행운의 시작이 서로 다른 중첩 레벨로 인해 잘못 정렬되면 분명히 작동하지 않습니다.
내 현재 시도는 http://jsfiddle.net/2Lqmx9kt/입니다. 알 수 있듯이 모든 열이 정렬되지 않았습니다.
난 단지 2 개 솔루션을 가지고 올 수있는, 모두 상당히 못생긴 :
- 하는 것은 궁극적으로 중첩 된 DOM 구조를 잃고, 테이블이 모두를 교체합니다.
- 어떤 똑똑한 CSS 트릭으로, 자바 스크립트없이,
ul > li > span.first {
// full width
}
ul > li > ul > li > span.first {
// remove one level of width
}
ul > li > ul > li > ul > li > span {
// remove two levels of width
}
DOM의 큰 변화없이 배치 할 수있는 좋은 방법이 있나요
같은 추악한 트릭에 의존?
기본적으로 모든 중첩 수준에 대해 너비를 지정하는 것과 동일합니다. 즉, 일부 측면에서는 더 나빠집니다. 즉, 가로로 넘치는 셀 내용이 제대로 래핑되지 않습니다. 당신은 아마 맞을 것입니다, 현실 세계에서 나는 HTML 테이블이나 Kendo UI 같은 것에 의지 할 것입니다. 이 질문은 요즘 일반적인 CSS로 레이아웃하는 것이 가능한지를 이해하는 이론적 인 성격의 문제입니다. – GreyCat
정확합니다. 이 솔루션은 첫 번째 스팬에서 오버플로를 수정하기 위해 마진 오른쪽 또는 패딩 오른쪽과 비슷한 해킹이 필요합니다. 그런 다음 다시 'li'로 묶는 것은 어쨌든 문제가 될 수 밖에 없습니다. –