code

CSS에서 HTML colspan

starcafe 2023. 9. 15. 21:13
반응형

CSS에서 HTML colspan

저는 다음과 유사한 레이아웃을 구성하려고 합니다.

+---+---+---+
|   |   |   |
+---+---+---+
|           |
+-----------+

아래쪽이 윗줄의 공간을 채우고 있습니다.

이것이 실제 테이블이라면, 저는 이것을 쉽게 해낼 수 있을 것입니다.<td colspan="3">, 테이블과 같은 레이아웃을 만들기 때문에 사용할 수 없습니다.<table>태그. CSS로 가능한가요?

하고 는 CSS 에는 간단하고 우아한colspan.

바로 이 문제에 대한 검색을 통해 절대 포지셔닝, 사이징 등 다양한 대안과 유사한 브라우저 및 상황별 주의 사항을 포함한 다양한 솔루션이 제공됩니다.읽고 찾은 내용을 바탕으로 최선의 정보에 입각한 결정을 내립니다.

에는 colspan이 cs에는 cs이 colspan cs 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와 span width를 일정 비율로 설정하는 것만으로 우리의 설계 요구사항을 충족하지 못하면 많이 사용합니다.

이 을 가 가 이 을 table-layout행동을 한다면, 두릴라이의 대답이 당신에게 충분히 어울릴 것입니다.

또 다른 제안은 테이블 대신 플렉스박스를 사용하는 것입니다.이것은 물론 "현대 브라우저"이지만, 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 그리드 레이아웃을 사용하는 것입니다.

.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;
}

그리고 HTML.

<div class="container">
  <div class="item-a">1</div>
  <div class="item-b">2</div>
  <div class="item-c">3</div>
  <div class="item-d">123</div>
</div>

CSS의 은 CSS 의 의 가 가 의 은 의 colspan는 페이지 내용의 구조를 설명하거나 HTML 작업인 테이블의 데이터에 약간의 의미를 부여합니다.

비록 몇 가지 속성에 의존해서 작동하지만, 저는 약간의 성공을 거두었습니다.

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/

또한 디스플레이: 테이블 머리글 그룹 또는 테이블 바닥글 그룹을 적용하면 '열' 요소를 '테이블'의 위쪽/아래쪽으로 이동할 수 있습니다.

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 속성 "column-count", "column-gap" 및 "column-span"은 의사 테이블의 모든 열을 동일한 래퍼 안에 유지하는 방식으로 이 작업을 수행할 수 있습니다(HTML은 양호하고 깔끔하게 유지됨).

주의해야 할 사항은 1개의 열 또는 모든 열만 정의할 수 있으며 아직 Firefox에서는 column-span이 작동하지 않으므로 CSS가 올바르게 표시되도록 하려면 몇 가지 추가 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>

div와 span을 사용하면 데이터 그리드 테이블 행의 볼륨이 커질 때 코드 크기가 더 커집니다.아래 코드는 모든 브라우저에서 확인됩니다.

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;
}

전원을 켜거나 꺼야 해서 여기로 오시면.colspan속성(모바일 레이아웃의 경우):

복제합니다.<td>s 그리고 원하는 것만 보여줍니다.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>

현재 WordPress 테이블 블록이 colspan 파라미터를 지원하지 않아 CSS로 교체할 것 같아서 왔습니다.열의 너비가 동일하다고 가정할 때, 이것이 제 해결책이었습니다.

table {
  width: 100%;
}

table td {
  width: 50%;
  background: #dbdbdb;
  text-align: center;
}

table tr:nth-child(2n+1) {
  position:relative;
  display:block;
  height:20px;
  background:green;
}

table tr:nth-child(2n+1) td {
  position:absolute;
  left:0;
  right:-100%;
  width: auto;
  top:0;
  bottom:0;
  background:red;
  text-align:center;
}
<table>
    <tr>
        <td>row</td>
    </tr>
    <tr>
        <td>cell</td>
        <td>cell</td>
    </tr>
    <tr>
        <td>row</td>
    </tr>
    <tr>
        <td>cell</td>
        <td>cell</td>
    </tr>
</table>

언제든지 할 수 있어요position:absolute;사물과 폭을 지정합니다.아주 유동적인 방법은 아니지만 효과는 있을 것입니다.

제가 만든 곡입니다.

enter image description here

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은 모바일용, colspan 5는 CSS가 작업을 수행하는 다른 것들입니다.

언급URL : https://stackoverflow.com/questions/2403990/html-colspan-in-css

반응형