行内元素和块级元素的区别

页面中元素一般分为两种:块级元素,行内元素(内联元素),即然分为两种元素,那么他们之间必然有区别:
1.块级元素总是独自占一行,前面和后面就好像有个换行符,内联元素总是和其它的内联兄弟占一行
2.块级元素可以设置宽和高度值,内联元素就不行了,他们的宽和高总是随着自身的内容自动扩大和缩小
3.块级元素的margin和padding都正常,内联元素左右maring和左右padding正常,上下不正常不识别,也就是说不能通过margin-top和padding-top来改变行高
关于第3点补充下:
行内元素margin和padding左右间距在各个浏览器中解析的都完整,上下间距那就是杯具,各个浏览器解析还不一样,设置个背景貌似人家又认了,但是他周围的元素当他设置的上下间距不存在,所以在以后的项目中,不给行内元素设置上下的margin和padding了
总结:想让自己独占一行就会块级元素(div,dl,dt,dd,ul,li...),想让元素和其它元素在一行就用行内元素(span,a,img),他们之间可以通过样式来转换disply:block;display:inline;
还有一个属性:
display:inline-block;
 将对象呈递为内联元素,与其它的元素同处一行,但是内部又呈现出块级元素,也就是可以设置宽和度,打破了块级元素和内联元素的区别,此属性,IE8,FF3,其它的标准浏览器都识别,IE6,IE7,FF2不识别此属性,但是在IE6,7下面使用又好像识别了,是因为他触发了IE的haslayout,(类似于zoom:1),所以从表现上来说他们支持这个属性.(可以拿块级元素来试验,块级元素使用了这个属性就没有相应的功能了),FF2{display:moz-inline-box}//有可能会导致文本对齐问题
 如果块状元素(div..)表现这种属性,与外部沟通是内联,内部又是块状的可以这样设置(display:inline;zooom:1)或 div{display:inline-block;//先触发layout}div{display:inline;}这两个顺序不能颠倒了,不然就失效了
再补充一下:
行内元素的行间距:
   行内元素行高问题
   行内元素行高问题
他们的行高相同,也就是说行内元素的行高会影响其它行内元素的行高
上次在一个项目中碰到了一个莫名的问题:哥,你对齐啊
小方框与文字对不齐,小方框会向下突点,这时候设置input{vertical-align:middle} 能够使他们对齐,这个问题OK了,又有一个问题出现了,浏览器表现不统一,FF和IE8的label标签表现正常,没有间距,IE6和IE7的label标签左右都有一定的间距,在一开始reset为0都不行,还是有间距,开始查原因,原来是浏览器表现不一致,FF和IE8标准浏览器解析的很正常,间距为0,IE7左右有6像素的间距,IE6有4像素的间距,以后为了排版在各个浏览器一致的情况{margin:0 6px;*margin:0;_margin:0 2px}
块级元素列表
定义地址
定义表格标题
定义列表中定义条目
定义文档中的分区或节
定义列表
定义列表中的项目
定义一个框架集
创建 HTML 表单
定义最大的标题
定义副标题
定义标题
定义标题
定义标题
定义最小的标题
创建一条水平线
元素为 fieldset 元素定义标题
标签定义列表项目

你可能感兴趣的:(网页制作)