用 CSS 向右移动 table <tfoot>
Move table <tfoot> to the right with CSS
我有这个 table,我无法编辑它的 <tfoot>
HTML 标签,它是用无法更改的 PHP 函数呈现的。所以我无法更改 <tfoot>
.
中的 <tr>
如何只用 CSS 将红色区域 (x1, x2) 向右移动?
https://jsfiddle.net/qL03728p/
table {
width: 100%;
border-collapse: separate;
}
table td {
border-top: 1px solid red;
}
thead {
background: green;
}
tbody {
background: yellow;
}
tfoot {
background: red;
}
<table cellspacing="0">
<thead>
<tr>
<th>thead 1</th>
<th>thead 2</th>
<th>thead 3</th>
<th>thead 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>tbody 1</td>
<td>tbody 2</td>
<th>tbody 3</th>
<th>tbody 4</th>
</tr>
</tbody>
<tfoot>
<tr>
<td>x1</td>
<td>x2</td>
</tr>
</tfoot>
</table>
在不使用 Javascript 的情况下,它是可行的,但不是以干净的方式。 (或者我不知道)
我认为你不能只用 CSS 修改 HTML 结构,但你可以这样做:
tfoot {
position:relative;
background: red;
left:20%;
}
您可以使用“left”属性的值来获得您需要的值。
table {
width: 100%;
border-collapse: separate;
overflow:hidden;
}
table td {
border-top: 1px solid red;
}
thead {background: green;}
tbody {background: yellow;}
tfoot {
position:relative;
background: red;
left:25%;
}
<table cellspacing="0">
<thead>
<tr>
<th>thead 1</th>
<th>thead 2</th>
<th>thead 3</th>
<th>thead 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>tbody 1</td>
<td>tbody 2</td>
<th>tbody 3</th>
<th>tbody 4</th>
</tr>
</tbody>
<tfoot>
<tr>
<td>x1</td>
<td>x2</td>
</tr>
</tfoot>
</table>
如果您有可能使用 Javascript,您可以在结构中添加一个“”标签,就在“x1”标签之前。给它一个 class 名称,以便您可以使用 css 自定义它。那会把另外两个适当地推到左边。
正如另一个答案提到的,如果不使用 JavaScript,这似乎很难实现,特别是 tfoot
.
中缺少 td
元素
但是,还有一个替代解决方案,使用在 tfoot
上使用 translateX
的转换:
tfoot {
background: red;
transform: translateX(50%);
}
这会将整个元素向右移动 50%。
正如@isherwood 在评论中指出的那样,这具有在 table 上创建水平溢出的无益副作用。这可以通过在 table CSS:
上设置 overflow: hidden
来简单纠正
table {
...
overflow: hidden;
}
这是一个工作片段:
table {
width: 100%;
border-collapse: separate;
overflow: hidden;
}
table td {
border-top: 1px solid red;
}
thead {background: green;}
tbody {background: yellow;}
tfoot {
background: red;
transform: translateX(50%);
}
<table cellspacing="0">
<thead>
<tr>
<th>thead 1</th>
<th>thead 2</th>
<th>thead 3</th>
<th>thead 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>tbody 1</td>
<td>tbody 2</td>
<th>tbody 3</th>
<th>tbody 4</th>
</tr>
</tbody>
<tfoot>
<tr>
<td>x1</td>
<td>x2</td>
</tr>
</tfoot>
</table>
我有这个 table,我无法编辑它的 <tfoot>
HTML 标签,它是用无法更改的 PHP 函数呈现的。所以我无法更改 <tfoot>
.
<tr>
如何只用 CSS 将红色区域 (x1, x2) 向右移动?
https://jsfiddle.net/qL03728p/
table {
width: 100%;
border-collapse: separate;
}
table td {
border-top: 1px solid red;
}
thead {
background: green;
}
tbody {
background: yellow;
}
tfoot {
background: red;
}
<table cellspacing="0">
<thead>
<tr>
<th>thead 1</th>
<th>thead 2</th>
<th>thead 3</th>
<th>thead 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>tbody 1</td>
<td>tbody 2</td>
<th>tbody 3</th>
<th>tbody 4</th>
</tr>
</tbody>
<tfoot>
<tr>
<td>x1</td>
<td>x2</td>
</tr>
</tfoot>
</table>
在不使用 Javascript 的情况下,它是可行的,但不是以干净的方式。 (或者我不知道)
我认为你不能只用 CSS 修改 HTML 结构,但你可以这样做:
tfoot {
position:relative;
background: red;
left:20%;
}
您可以使用“left”属性的值来获得您需要的值。
table {
width: 100%;
border-collapse: separate;
overflow:hidden;
}
table td {
border-top: 1px solid red;
}
thead {background: green;}
tbody {background: yellow;}
tfoot {
position:relative;
background: red;
left:25%;
}
<table cellspacing="0">
<thead>
<tr>
<th>thead 1</th>
<th>thead 2</th>
<th>thead 3</th>
<th>thead 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>tbody 1</td>
<td>tbody 2</td>
<th>tbody 3</th>
<th>tbody 4</th>
</tr>
</tbody>
<tfoot>
<tr>
<td>x1</td>
<td>x2</td>
</tr>
</tfoot>
</table>
如果您有可能使用 Javascript,您可以在结构中添加一个“”标签,就在“x1”标签之前。给它一个 class 名称,以便您可以使用 css 自定义它。那会把另外两个适当地推到左边。
正如另一个答案提到的,如果不使用 JavaScript,这似乎很难实现,特别是 tfoot
.
td
元素
但是,还有一个替代解决方案,使用在 tfoot
上使用 translateX
的转换:
tfoot {
background: red;
transform: translateX(50%);
}
这会将整个元素向右移动 50%。
正如@isherwood 在评论中指出的那样,这具有在 table 上创建水平溢出的无益副作用。这可以通过在 table CSS:
上设置overflow: hidden
来简单纠正
table {
...
overflow: hidden;
}
这是一个工作片段:
table {
width: 100%;
border-collapse: separate;
overflow: hidden;
}
table td {
border-top: 1px solid red;
}
thead {background: green;}
tbody {background: yellow;}
tfoot {
background: red;
transform: translateX(50%);
}
<table cellspacing="0">
<thead>
<tr>
<th>thead 1</th>
<th>thead 2</th>
<th>thead 3</th>
<th>thead 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>tbody 1</td>
<td>tbody 2</td>
<th>tbody 3</th>
<th>tbody 4</th>
</tr>
</tbody>
<tfoot>
<tr>
<td>x1</td>
<td>x2</td>
</tr>
</tfoot>
</table>