我发现了一种将输入和标签元素作为手风琴查看器的方法。
要使我的元素垂直居中,我使用标签就好像它是一个div,即给它display:table
并在其中创建一个div。
所以我有:
<div>
<input id='myid'>
<label for ='myid' style='display table'>
<div style='display:table-cell'>
<img ....... >
thetextforthelabel
</div>
</label>
</div>
好的,这很好用。
我的问题是:我做了什么&#39; forbiden&#39; ? 我可以将label标签用作容器吗?
我知道它可能不是正统的......但它对我有用......
答案 0 :(得分:1)
您的代码无效。
问题是div
元素只能用于
预计会flow content。
但是,content model元素的label
是
Phrasing content,但没有后代labelable elements 除非它是元素的labeled control,没有后代
label
元素。
无论如何,它可能会起作用,因为(与p
元素不同)label
元素的结束标记不能省略:
这两个标签都没有遗漏
但是,我不确定具有单个单元格的表格元素的优势。请考虑使用以下内容:
<div>
<input id='myid'>
<label for='myid' style='display:block'>
<img ....... >
thetextforthelabel
</label>
</div>
答案 1 :(得分:1)
是的,HTML的正式规则是禁止的。是的,它的工作原理,HTML的解析规则意味着它必须工作。因此,这与说明p
元素不得包含div
元素的规则不同; 规则由解析过程强制执行(遇到p
时隐式关闭<div>
元素。)
另一方面,如果内容只是图片和文字,则您不需要div
元素,但可以使用span
。在渲染中,您选择哪一个(与通常的CSS警告无关),因为它们在渲染方面的唯一区别是使用默认的display
值,并且您无论如何都要分配display
值。 / p>
<div>
<input id='myid'>
<label for ='myid' style='display table'>
<span style='display:table-cell'>
<img src="http://lorempixel.com/100/50" alt="(an image)">
thetextforthelabel
</span>
</label>
</div>
&#13;