我们首先讲起可以/不可以修改宽高的元素。
1.哪些元素默认可以修改宽高?
- 1.块级元素(display:block)都可以设置 div p h1 ul ol li dl dt dd
- 2.存在width、height属性的html元素(img、table、input)
1.图片(display:inline-block)非块级但可以修改宽高:
<img src="..." width="300px" height="400px"/>
2.表格(display:table)非块级但可以修改宽高:
<table width="200px;" height="300px">
<tr>
<td></td>
<td></td>
</tr>
</table>
3.表单控件(input)非块级但可以修改宽高:
<input type="text" name="" width="200px">
2.常规不能修改宽高的元素有哪些?
- 大部分的行内元素:sapn、a、i、s、u、b、sup、sub、
3.如何修改哪些不能设置宽高的元素(大多行内元素)?
1.浮动 属性:float:left/right 元素一旦浮动起来之后,那么将变成块级元素,尤其对行内元素和行内块元素影响较大。(注意:可以设置宽高了,但是并不像块级元素一样,会占据一行,块级元素,即使设置了宽,它还是会在文档流中占据一行,即使效果只显示对应的宽度,下一个块级元素还是只会在下一行显示)
2.修改显示方法 属性:dispaly
1.none
没有显示方式,即不显示,隐藏脱离文档流
常用场合:隐藏页面的元素。
2.block
让元素显示的和块级一样
常用场合:将行内元素 改变成 块级元素,以便于去修改元素的尺寸。
3.inline
让元素显示的和行内元素一样
注意:不要将块级元素改变成行内元素。
4.inline-block
让元素显示的和行内块元素一样
行内块:一行内允许显示多个行内块元素,而且允许修改宽和高。
5.table
让元素表现的和table一样
尺寸自适应,独占一行
- 3.绝对定位 属性position:absolute 通过top/bottom/left/right实现位置移动和初始化,绝对定位的元素会变成块级元素,允许修改尺寸。
span{
position: absolute;
background-color: yellow;
border: 3px solid green;
height: 100px;
width: 100px;
padding: 20px;
margin:100px;
}
参考文章:http://blog.csdn.net/baidu_25343343/article/details/52762152
block、inline和inline-block的概念和区别:
- diaplay:block
- block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
- block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。
- block元素可以设置margin和padding属性。
- display:inline
- inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
- inline元素设置width,height属性无效。
- inline元素的margin和padding属性,一般情况下,padding各个方面都会有效果,但是对于margin只有水平方向也就是margin-left和margin-right有效果,margin-top和margin-bottom就没有效果,比如span元素,但是对于input这种inline元素,margin和padding各个方向都有效果。
- display:inline-block
- 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。