我们采用了300px
宽div
,因为我们有一个100px
宽label
标记并且已经float:left
,之后我们立即使用了input
场景。我们放置了:
width:400px
div
width:400px
span
带有小文字和大文字的<input>
您可以在此处查看他们的呈现方式:http://realution.in/htmlcss/practise/repost.html
任何人都可以解释为什么它们的呈现方式如此不同吗?
{{1}}是块还是内联元素?
答案 0 :(得分:1)
它们的渲染方式如此不同,因为您设置了不同的css属性并在每个示例中使用不同的元素。同时将float
添加到标签但不添加到任何其他元素,并且不向css clear
属性提供任何其他元素会产生此渲染问题。
内联:An inline element only takes up as much width as necessary, and does not force line breaks.
阻止:A block element is an element that takes up the full width available, and has a line break before and after it.
label
元素是内联元素。添加float:left将其从文档流中删除并使其成为块元素。明确的display:block
不是必需的。
您在span
元素上使用的大多数属性都没用,除非您将其设置为display: block
,float: left
或display: inline-block
。现在忽略设定的高度,宽度和边距。如果您想调整范围的大小,则只能使用:line-height
和padding
label
和input
都是内联元素。 input
占用换行符,因为它永远不能适合任何东西。输入的大小比其父级大。 display: block
对标签没有太大作用。因为它有一个浮点数而没有其他元素。在一个好的浏览器中,除了标签实际位于左侧而不是浮动前一个display:block
的最后一个示例之外,您不应该看到带有或不带label
的标签之间的任何差异。 LI>
float: left
标签超出了正常的文档流程。 div元素在它上面,因为div在普通文档流程中。 width: 300px;
对内联元素没有任何作用。如果您希望它具有宽度,则应该float
,给它display: block
或display: inline-block
overflow:hidden
添加到父div或者使用clear:both
添加空div将同时修复该框以绕过其中的所有元素。line-height
属性确定的两个元素