块级元素和内联元素的特性及居中问题小结

原创 hedimo_810 随笔 CSS 261阅读 2017-05-05 17:13:46 举报

写代码时经常遇到对元素进行居中设置时,有时候设置text-align:center;起作用,有时候设置margin:0 auto;起作用。但到底什么时候该用什么属性来设置才是正常的却不太清晰,有点靠蒙的感觉。今天上网搜搜这方面的资料,顺便在此做个记录小结,以便自己后期查阅。

以下部分内容转载于网络,原文地址:http://blog.csdn.net/chen_zw/article/details/8713205

块级元素(block)特性:
总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示;
宽度(width)、高度(height)、内边距(padding)和外边距(margin)都可控制;

内联元素(inline)特性:
和相邻的内联元素在同一行;
宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom(margin-top/margin-bottom)都不可改变,就是里面文字或图片的大小;

块级元素主要有:
address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre , table , ul , li

内联元素主要有:
a , abbr , acronym , b , bdo , big , br , cite , code , dfn , em , font , i , img , input , kbd , label , q , s , samp , select , small , span , strike , strong , sub , sup , textarea , tt , u , var

可变元素(根据上下文关系确定该元素是块元素还是内联元素):
applet ,button ,del ,iframe , ins ,map ,object , script

CSS中块级、内联元素的应用:
利用CSS我们可以摆脱上面表格里HTML标签归类的限制,自由地在不同标签/元素上应用我们需要的属性。
主要用的CSS样式有以下三个:
display:block -- 显示为块级元素
display:inline -- 显示为内联元素
dipslay:inline-block -- 显示为内联块元素,表现为同行显示并可修改宽高内外边距等属性

    我们常将<ul>元素加上display:inline-block样式,原本垂直的列表就可以水平显示了。

    题外话:最近整理有关块级元素和内联元素区别的有关知识,网上找了不少相关的文章,发现大家的理解似乎都有误,我自己亲自测试了下,发现了不少的问题:

   内联元素的margin-left / margin-right及padding-left / padding-rigtht是可以控制的,所以可以通过这4个属性来控制内联元素的宽度。
   内联元素的内部也可以放块级元素标签,而且内部的块级元素标签会撑大外部的内联标签,所以可以通过放块元素来控制内联元素的高度(网上介绍的是内联元素只能放文本及其他内联元素)

         例如: <a> 
                          <div style="width:100px;height:100px;">测试</div>
                      </a>

 附录:col, colgroup, frameset, html, style, table, tbody, tfoot, thead, title, tr, td 等几个元素标签是只读的,也就是不能使用innerHTML等进行动态赋值.

自己小结:经自己测试,
1、内联元素可以设定padding值(包括上下左右的padding值都可以设置),能设置左右margin值(margin-left和margin-right),但不能设置上下margin值(margin-top和margin-bottom)
2、内联元素不能被它所包含的其他元素撑开宽高(它里面如果包含有内联元素或者块级元素,都撑不开它的宽高)
3、要想设定内联元素的宽高只能将它转换为块级元素(display:block;)或者内联块元素(display:inline-block;)

关于居中问题:转载地址:http://www.cnblogs.com/zhwl/p/3529473.html

基本概念:
1.text-align: 属性规定元素中的文本的水平对齐方式;
       该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式;
       一般情况下设置文本对齐方式的时使用此属性。支持值 justify。
  Example: div { text-align: left; } //文本居左对齐
  注释:所有浏览器都支持 text-align 属性;任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。

2.margin 是设置对象四边的外延边距,被称为外补丁或外边距。
  Example: div { margin: 20px 10px 30px 40px; } // 表示对象外边距,顶20px、右10px、下30px、左40px

区别如下:
1.text-align:center 设置文本或img标签等一些内联对象(或与之类似的元素)的居中。
2.margin:0 auto 设置块元素(或与之类似的元素)的居中。
这两个属性IE与FF的理解也有所不同。我们设置一个段落P,在段落内存在一个图片img标签。  

注意:
1.当设置body{text-align:center;}。 在IE中,段落P,图片img同时实现了居中对齐,也就是说text-align:center;同时作用于元素p与元素img。 在FF中,段落P,没有能实现居中对齐,而图片img实现了居中对齐,也就是说text-align:center;作用于img标签,而段落p标签没有起到居中的作用。
2.当设置段落 p {margin:0 auto;}。 在IE与FF中,段落P均实现了居中对齐。图片img由于不是作用对象,所以不会居中对齐。

有三种情况需要说明: 1.margin:0 auto;的选择器是作用对象,如div,p,而不是body。如果设置:body { margin:0 auto; }将不会达到任何效果,除非你定义body的宽度,那将会让body内的元素产生位置变化。如我们设置body宽度为500px。对p段落不作任何设置, 我们最大化窗口将会看到段落并非处于窗口的最左上角。 2.设置段落 p {text-align:center;} 将要实现的并不是段落本身的对齐方式,而是段落内元素居中对齐。 3. 设置图片标签img {margin:0 auto;} ,就犯了一个小错误,img类于内联对象,不可以设置图片img标签的margin属性,如果一定要设置,那么先将它的属性转变为块元素,如下面的代 码:img {display:block; margin:0 auto;}

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复