<label>如何完全填充其父<td>?

Sha*_*awn 35 css

这是相关代码(不起作用):

<html>
<head>
<title>testing td checkboxes</title>
<style type="text/css">
td { border: 1px solid #000; }
label { border: 1px solid #f00; width: 100%; height: 100% }
</style>
</head>
<body>
<table>
  <tr>
    <td>Some column title</td>
    <td>Another column title</td>
  </tr>
  <tr>
    <td>Value 1<br>(a bit more info)</td>
    <td><label><input type="checkbox" /> &nbsp;</label></td>
  </tr>
  <tr>
    <td>Value 2</td>
    <td><input type="checkbox" /></td>
  </tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

原因是我希望在表格单元格中的任何位置单击以选中/取消选中该复选框.

编辑:顺便说一句,出于可访问性原因,请不要使用JavaScript解决方案.我尝试使用display:block; 但这只适用于宽度,而不适用于高度

Val*_*sel 27

我只在IE 6,7,8和FF 3.6.3中测试了这个.

<html>
<head>
<title>testing td checkboxes</title>
<style type="text/css">
tr {
    height: 1px;
}
td {
    border: 1px solid #000;
    height: 100%;
}
label { 
    display: block; 
    border: 1px solid #f00;
    min-height: 100%; /* for the latest browsers which support min-height */
    height: auto !important; /* for newer IE versions */
    height: 100%; /* the only height-related attribute that IE6 does not ignore  */
}
</style>
</head>
<body>
<table>
    <tr>
        <td>Some column title</td>
        <td>Another column title</td>
    </tr>
    <tr>
        <td>Value 1<br>(a bit more info)</td>
        <td><label><input type="checkbox" /> &nbsp;</label></td>
    </tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这里的主要技巧是定义行的高度,这样我们可以在它们的子节点(单元格)上使用100%的高度,然后在单元格的子节点(标签)上使用100%的高度.这样,无论单元格中有多少内容,它都会强制扩展其父行,并且其兄弟单元格将随之而来.由于标签的高度为其父级的100%,其高度已定义,因此它也将垂直扩展.

第二个也是最后一个技巧(但同样重要)是使用CSS hack作为min-height属性,如注释中所述.

希望这可以帮助 !


bob*_*nce 19

默认情况下,标签是内联元素,因此设置宽度和高度不起作用.

label { display: block; }
Run Code Online (Sandbox Code Playgroud)

会这样做.

(然而,把标签的做法各地的复选框它应该与相关的,而不是明确地使用for,在IE浏览器无法正常工作.)

  • 那么,TD的高度取决于它的内容。CSS 有没有办法说:“一旦我们确定了 TD 元素的尺寸,就让标签元素成为 TD 宽度和高度的 100%”? (2认同)