CSS의 HTML colspan
다음과 유사한 레이아웃을 구성하려고합니다.
+---+---+---+
| | | |
+---+---+---+
| |
+-----------+
바닥이 위 줄의 공간을 채우고 있습니다.
이것이 실제 테이블 인 경우으로 쉽게이 작업을 수행 할 수 <td colspan="3">
있지만 테이블과 같은 레이아웃을 만들 때 <table>
태그를 사용할 수 없습니다 . CSS를 사용하여 가능합니까?
에 대한 간단하고 우아한 CSS 아날로그는 없습니다 colspan
.
이 문제에 대한 검색은 절대적인 위치 지정, 크기 조정, 유사한 다양한 브라우저 및 상황 별 경고와 함께 다양한 대안을 포함하는 다양한 솔루션을 반환합니다. 찾은 내용에 따라 최선의 결정을 읽고 결정하십시오.
내가 아는 한 CSS에는 colspan이 없지만 column-span
가까운 장래에는 다중 열 레이아웃이 있지만 CSS3의 초안이므로 여기 에서 확인할 수 있습니다 . 어쨌든 당신은 사용하여 해결 방법을 수행 할 수 있습니다 div
와 span
같은 테이블 같은 디스플레이.
이것은 HTML입니다.
<div class="table">
<div class="row">
<span class="cell red first"></span>
<span class="cell blue fill"></span>
<span class="cell green last"></span>
</div>
</div>
<div class="table">
<div class="row">
<span class="cell black"></span>
</div>
</div>
그리고 이것은 CSS 일 것입니다 :
/* this is to reproduce table-like structure
for the sake of table-less layout. */
.table { display:table; table-layout:fixed; width:100px; }
.row { display:table-row; height:10px; }
.cell { display:table-cell; }
/* this is where the colspan tricks works. */
span { width:100%; }
/* below is for visual recognition test purposes only. */
.red { background:red; }
.blue { background:blue; }
.green { background:green; }
.black { background:black; }
/* this is the benefit of using table display, it is able
to set the width of it's child object to fill the rest of
the parent width as in table */
.first { width: 20px; }
.last { width: 30px; }
.fill { width: 100%; }
이 트릭을 사용하는 유일한 이유는 table-layout
동작 의 이점을 얻는 것입니다 .div 및 스팬 너비를 특정 백분율로 설정해도 디자인 요구 사항이 충족되지 않으면 많이 사용합니다.
그러나 table-layout
행동의 혜택을 누릴 필요가 없다면 durilai의 대답 이 당신에게 충분할 것입니다.
또 다른 제안은 테이블 대신 flexbox를 사용하는 것입니다. 이것은 물론 "현대 브라우저"이지만 2016 년입니다.)
적어도 이것은 원래 게시물이 2010 년 이후 였기 때문에 오늘날에 대한 답을 찾고있는 사람들에게는 대안적인 해결책 일 수 있습니다.
다음은 훌륭한 가이드입니다. https://css-tricks.com/snippets/css/a-guide-to-flexbox/
.table {
border: 1px solid red;
padding: 2px;
max-width: 300px;
display: flex;
flex-flow: row wrap;
}
.table-cell {
border: 1px solid blue;
flex: 1 30%;
}
.colspan-3 {
border: 1px solid green;
flex: 1 100%;
}
<div class="table">
<div class="table-cell">
row 1 - cell 1
</div>
<div class="table-cell">
row 1 - cell 2
</div>
<div class="table-cell">
row 1 - cell 3
</div>
<div class="table-cell colspan-3">
row 2 - cell 1 (spans 3 columns)
</div>
</div>
<div style="width: 100%;">
<div style="float: left; width: 33%;">Row 1 - Cell 1</div>
<div style="float: left; width: 34%;">Row 1 - Cell 2</div>
<div style="float: left; width: 33%;">Row 1 - Cell 3</div>
</div>
<div style="clear: left; width: 100%;">
Row 2 - Cell 1
</div>
그것은 CSS의 범위의 일부가 아닙니다. colspan
페이지 내용의 구조를 설명하거나 HTML의 작업 인 표의 데이터에 의미를 부여합니다.
http://960.gs/ 와 같은 그리드 시스템을 사용해보십시오.
"12 열"레이아웃을 사용한다고 가정하면 코드는 다음과 같습니다.
<div class="container_12">
<div class="grid_4">1</div><div class="grid_4">2</div><div class="grid_4">3</div>
<div class="clear"></div>
<div class="grid_12">123</div>
</div>
display: table-cell; width: 1%;
테이블 셀 요소에 추가 하십시오.
.table-cell {
display: table-cell;
width: 1%;
padding: 4px;
border: 1px solid #efefef;
}
<div class="table">
<div class="table-cell">one</div>
<div class="table-cell">two</div>
<div class="table-cell">three</div>
<div class="table-cell">four</div>
</div>
<div class="table">
<div class="table-cell">one</div>
<div class="table-cell">two</div>
<div class="table-cell">three</div>
<div class="table-cell">four</div>
</div>
<div class="table">
<div class="table-cell">one</div>
</div>
최신 답변을 제공하려면 오늘이 작업을 수행하는 가장 좋은 방법은 다음과 같이 CSS 그리드 레이아웃을 사용하는 것입니다.
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: auto;
grid-template-areas:
"top-left top-middle top-right"
"bottom bottom bottom"
}
.item-a {
grid-area: top-left;
}
.item-b {
grid-area: top-middle;
}
.item-c {
grid-area: top-right;
}
.item-d {
grid-area: bottom;
}
div 및 span을 사용하면 datagrid-table 행이 더 많은 양일 때 더 많은 코드 크기를 차지합니다. 아래 코드는 모든 브라우저에서 확인됩니다.
HTML :
<div id="gridheading">
<h4>Sl.No</h4><h4 class="big">Name</h4><h4>Location</h4><h4>column</h4><h4>column</h4><h4>column</h4><h4>Amount(Rs)</h4><h4>View</h4><h4>Edit</h4><h4>Delete</h4>
</div>
<div class="data">
<h4>01</h4><h4 class="big">test</h4><h4>TVM</h4><h4>A</h4><h4>I</h4><h4>4575</h4><h4>4575</h4></div>
<div class="data">
<h4>01</h4><h4 class="big">test</h4><h4>TVM</h4><h4>A</h4><h4>I</h4><h4>4575</h4><h4>4575</h4></div>
CSS :
#gridheading {
background: #ccc;
border-bottom: 1px dotted #BBBBBB;
font-size: 12px;
line-height: 30px;
text-transform: capitalize;
}
.data {
border-bottom: 1px dotted #BBBBBB;
display: block;
font-weight: normal;
line-height: 20px;
text-align: left;
word-wrap: break-word;
}
h4 {
border-right: thin dotted #000000;
display: table-cell;
margin-right: 100px;
text-align: center;
width: 100px;
word-wrap: break-word;
}
.data .big {
margin-right: 150px;
width: 200px;
}
column-span: all; /* W3C */
-webkit-column-span: all; /* Safari & Chrome */
-moz-column-span: all; /* Firefox */
-ms-column-span: all; /* Internet Explorer */
-o-column-span: all; /* Opera */
http://www.quackit.com/css/css3/properties/css_column-span.cfm
colspan
속성 을 켜거나 꺼야하기 때문에 여기에 온 경우 (예 : 모바일 레이아웃) :
을 복제하고 <td>
원하는 것만 표시하십시오 colspan
.
table.colspan--on td.single {
display: none;
}
table.colspan--off td.both {
display: none;
}
<!-- simple table -->
<table class="colspan--on">
<thead>
<th>col 1</th>
<th>col 2</th>
</thead>
<tbody>
<tr>
<!-- normal row -->
<td>a</td>
<td>b</td>
</tr>
<tr>
<!-- the <td> spanning both columns -->
<td class="both" colspan="2">both</td>
<!-- the two single-column <td>s -->
<td class="single">A</td>
<td class="single">B</td>
</tr>
<tr>
<!-- normal row -->
<td>a</td>
<td>b</td>
</tr>
</tbody>
</table>
<!--
that's all
-->
<!--
stuff only needed for making this interactive example looking good:
-->
<br><br>
<button onclick="toggle()">Toggle colspan</button>
<script>/*toggle classes*/var tableClasses = document.querySelector('table').classList;
function toggle() {
tableClasses.toggle('colspan--on');
tableClasses.toggle('colspan--off');
}
</script>
<style>/* some not-needed styles to make this example more appealing */
td {text-align: center;}
table, td, th {border-collapse: collapse; border: 1px solid black;}</style>
몇 가지 속성을 사용하여 작동하지만 약간의 성공을 거두었습니다.
table-layout: fixed
border-collapse: separate
쉽게 나누기 / 분리되는 셀 폭, 즉 25 % 폭의 4 x 셀 :
.div-table-cell,
* {
box-sizing: border-box;
}
.div-table {
display: table;
border: solid 1px #ccc;
border-left: none;
border-bottom: none;
table-layout: fixed;
margin: 10px auto;
width: 50%;
border-collapse: separate;
background: #eee;
}
.div-table-row {
display: table-row;
}
.div-table-cell {
display: table-cell;
padding: 15px;
border-left: solid 1px #ccc;
border-bottom: solid 1px #ccc;
text-align: center;
background: #ddd;
}
.colspan-3 {
width: 300%;
display: table;
background: #eee;
}
.row-1 .div-table-cell:before {
content: "row 1: ";
}
.row-2 .div-table-cell:before {
content: "row 2: ";
}
.row-3 .div-table-cell:before {
content: "row 3: ";
font-weight: bold;
}
.div-table-row-at-the-top {
display: table-header-group;
}
<div class="div-table">
<div class="div-table-row row-1">
<div class="div-table-cell">Cell 1</div>
<div class="div-table-cell">Cell 2</div>
<div class="div-table-cell">Cell 3</div>
</div>
<div class="div-table-row row-2">
<div class="div-table-cell colspan-3">
Cor blimey he's only gone and done it.
</div>
</div>
<div class="div-table-row row-3">
<div class="div-table-cell">Cell 1</div>
<div class="div-table-cell">Cell 2</div>
<div class="div-table-cell">Cell 3</div>
</div>
</div>
https://jsfiddle.net/sfjw26rb/2/
또한 display : table-header-group 또는 table-footer-group을 적용하면 'row'요소를 'table'의 맨 위 / 아래로 쉽게 이동할 수 있습니다.
CSS 속성 "column-count", "column-gap"및 "column-span"은 유사 래퍼 내에 의사 테이블의 모든 열을 유지하는 방식으로이를 수행 할 수 있습니다 (HTML은 깔끔하고 깔끔하게 유지됨).
단 하나의 열 또는 모든 열만 정의 할 수 있으며 Firefox에서 열 범위가 아직 작동하지 않으므로 제대로 표시되도록하려면 몇 가지 추가 CSS가 필요합니다. https://www.w3schools.com/css/css3_multiple_columns.asp
.split-me {
-webkit-column-count: 3;
-webkit-column-gap: 0;
-moz-column-count: 3;
-moz-column-gap: 0;
column-count: 3;
column-gap: 0;
}
.cols {
/* column-span is 1 by default */
column-span: 1;
}
div.three-span {
column-span: all !important;
}
/* alternate style for column-span in Firefox */
@-moz-document url-prefix(){
.three-span {
position: absolute;
left: 8px;
right: 8px;
top: auto;
width: auto;
}
}
<p>The column width stays fully dynamic, just like flex-box, evenly scaling on resize.</p>
<div class='split-me'>
<div class='col-1 cols'>Text inside Column 1 div.</div>
<div class='col-2 cols'>Text inside Column 2 div.</div>
<div class='col-3 cols'>Text inside Column 3 div.</div>
<div class='three-span'>Text div spanning 3 columns.</div>
</div>
<style>
/* Non-Essential Visual Styles */
html * { font-size: 12pt; font-family: Arial; text-align: center; }
.split-me>* { padding: 5px; }
.cols { border: 2px dashed black; border-left: none; }
.col-1 { background-color: #ddffff; border-left: 2px dashed black; }
.col-2 { background-color: #ffddff; }
.col-3 { background-color: #ffffdd; }
.three-span {
border: 2px dashed black; border-top: none;
text-align: center; background-color: #ddffdd;
}
</style>
당신은 항상 position:absolute;
사물을 폭을 지정할 수 있습니다. 매우 유동적 인 방법은 아니지만 효과가 있습니다.
이 바이올린을 만들었습니다.
http://jsfiddle.net/wo40ev18/3/
HTML
<div id="table">
<div class="caption">
Center Caption
</div>
<div class="group">
<div class="row">
<div class="cell">Link 1t</div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell ">Link 2</div>
</div>
</div>
CSS
#table {
display:table;
}
.group {display: table-row-group; }
.row {
display:table-row;
height: 80px;
line-height: 80px;
}
.cell {
display:table-cell;
width:1%;
text-align: center;
border:1px solid grey;
height: 80px
line-height: 80px;
}
.caption {
border:1px solid red; caption-side: top; display: table-caption; text-align: center;
position: relative;
top: 80px;
height: 80px;
height: 80px;
line-height: 80px;
}
미디어 쿼리 클래스를 사용하여 중복 마크 업으로 전달할 수있는 것을 얻을 수 있습니다. 부트 스트랩에 대한 접근 방식은 다음과 같습니다.
<tr class="total">
<td colspan="1" class="visible-xs"></td>
<td colspan="5" class="hidden-xs"></td>
<td class="focus">Total</td>
<td class="focus" colspan="2"><%= number_to_currency @cart.total %></td>
</tr>
모바일 용 colspan 1, CSS를 사용하는 다른 사용자 용 colspan 5
참고 URL : https://stackoverflow.com/questions/2403990/html-colspan-in-css
'IT story' 카테고리의 다른 글
dict를 사용하여 팬더 열의 값을 다시 매핑하십시오. (0) | 2020.04.09 |
---|---|
Eclipse는 일치하는 변수를 강조 표시하지 않습니다 (0) | 2020.04.09 |
.NET 사전에 중복 키가 있습니까? (0) | 2020.04.09 |
tensorflow가 GPU 메모리의 전체를 할당하지 못하게하는 방법은 무엇입니까? (0) | 2020.04.09 |
bash는 함수의 정의를 보여줄 수 있습니까? (0) | 2020.04.09 |