最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

CSS:水平居中与垂直居中_html/css

来源:动视网 责编:小采 时间:2020-11-27 16:04:39
文档

CSS:水平居中与垂直居中_html/css

CSS:水平居中与垂直居中_html/css_WEB-ITnose:CSS居中算是一个比较基础的问题,在实际运用中,需要考虑到的一般是两种情况,一种是主要是表现为文字,图片等行内元素的居中,一种是指 div 等块级标签元素的居中。 水平居中 1、行内元素 行内元素(主要是表现为文字,图片等行内元素),通过在父级元素
推荐度:
导读CSS:水平居中与垂直居中_html/css_WEB-ITnose:CSS居中算是一个比较基础的问题,在实际运用中,需要考虑到的一般是两种情况,一种是主要是表现为文字,图片等行内元素的居中,一种是指 div 等块级标签元素的居中。 水平居中 1、行内元素 行内元素(主要是表现为文字,图片等行内元素),通过在父级元素


CSS居中算是一个比较基础的问题,在实际运用中,需要考虑到的一般是两种情况,一种是主要是表现为文字,图片等行内元素的居中,一种是指 div 等块级标签元素的居中。

水平居中

1、行内元素

行内元素(主要是表现为文字,图片等行内元素),通过在父级元素设置 text-align:center 使子级行内元素居中。

2、定宽块级元素

为定宽块级元素设置:

1 margin-left:auto;2 margin-right:auto;

3、不定宽块级元素

不定宽块级元素居中有三种方法:

  1. 加入 table 标签
  2. 设置 display:inline 方法
  3. 设置 position:relative 和 left:50%

方法一:

将元素用 table 标签包裹起来,包括 tbody、tr、td,但这种方法为了居中增加了无语义的标签。

---------------------------------------------------------举个栗子---------------------------------------------------------

HTML:

 1 2  3  4  5 12 13 14 
6 7
  • 我是要
  • 8
  • 居中的
  • 9
  • ul标签
  • 10 11
    15

    CSS:

    1 table{2 margin:0 auto;3 }4 ul{list-style:none;margin:0;padding:0;}5 li{float:left;margin-right:8px;}

    现代浏览器表现正常:

    IE7有时候会出现问题:

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    方法二:

    设置为 inline 行内元素后沿用行内元素居中的方法,这种方法改变了元素的 display 样式。

    ---------------------------------------------------------举个栗子---------------------------------------------------------

    HTML:

    1 2 3 
  • 我是要
  • 4
  • 居中的
  • 5
  • ul标签
  • 6 7

    CSS:

    1 div{2 text-align:center;3 }4 ul{list-style:none;margin:0;padding:0;display:inline;}5 li{margin-right:8px;display:inline;}

    各浏览器表现正常居中,IE7也没有出现什么问题。

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    方法三:

    通过给父元素设置 float/display:inline-block(IE7对块级元素设置 inline-block 支持性不好,需要 hack,即 *display:inline;*zoom:1;),然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left:-50% 来实现水平居中。

    ---------------------------------------------------------举个栗子---------------------------------------------------------

    HTML:

    1 2 3 
  • 我是要
  • 4
  • 居中的
  • 5
  • ul标签
  • 6 7

    CSS:

     1 div{ 2 display: inline-block; 3 /*兼容IE6,IE7*/ 4 *display: inline; 5 *zoom:1; 6 position:relative; 7 left:50% 8 } 9 ul{10 /*兼容IE6*/11 _display: inline;12 _zoom:1;13 list-style:none;14 margin:0;15 padding:0; 16 position:relative;17 left:-50%;18 }19 li{20 float:left;21 margin-right:8px;22 }

    chrome,Firefox,opera,IE6+都可以表现正常。

    注:

    1、_display:inline 其实是触发IE6中块级元素表现出 inline-block 的效果,_zoom:1 触发IE6中 hasLayout 效果,这里其他浏览器不需要触发 inline-block 效果,原因不是很清楚;

    2、其中display:inline-block 也可以替换为 float ,float的主要作用就是产生 inline-block 的效果,这样代码会更加简洁一些,不用考虑太多的兼容问题:

    CSS:

     1 div{ 2 float: left; 3 position:relative; 4 left:50% 5 } 6 ul{ 7 /*兼容IE6*/ 8 _float:left; 9 list-style:none;10 margin:0;11 padding:0; 12 position:relative;13 left:-50%;14 }15 li{16 float:left;17 margin-right:8px;18 }

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    垂直居中

    垂直居中主要是行内元素的居中比较麻烦,特别是多行文本的居中。

    1、父元素高度确定的 行内元素(单行文本),

    通过设置父元素的 height 和 line-height 高度一致来实现的。

    2、高度固定的 块级元素垂直居中

    高度固定的 块级元素垂直居中有三种方法:

    1. 垂直居中元素设置 absolute,利用 absolute 元素居中的方法来居中;
    2. 垂直居中元素设置 absolute,通过 top 和 margin-top 属性来调整;
    3. 创建浮动元素;

    方法一:

    其实这个方法是 absolute 元素居中的方法,父元素设置 position:relative,垂直居中元素设置 position:absolute,当要垂直居中时,设置 top:0;bottom:0,然后为上下 margin 设置 auto,水平居中也是同理。IE6,IE7不支持此种居中方法。

    这种方法适用于原本就设置了 position 为 absolute 的元素。

    ---------------------------------------------------------举个栗子---------------------------------------------------------

    HTML:

    1 2 3 

    我是想要垂直居中的块级元素。

    4 5

    CSS:

     1 .wrap{ 2 width:200px; 3 height: 200px; 4 background:#ccc; 5 position: relative; 6 } 7 .container{ 8 width: 100px; 9 height:100px;10 background: #00ff00;11 position:absolute; 12 right: 0;13 left:0;14 top:0; 15 bottom:0; 16 margin:auto; 17 }

    chrome,Firefox,opera,IE8+表现如下,水平垂直居中:

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    方法二:

    父元素设置 position:relative,需要垂直居中的元素设置:

    1 position:absolute;2 top:50%;3 height:2Hpx;4 margin-top:Hpx;

    这里 top改为 bottom,margin-top 改为 margin-bottom 效果一样,这种方法适用于原本设置了 position 为 absolute 的元素。

    ---------------------------------------------------------举个栗子---------------------------------------------------------

    HTML:

    1 2 3 

    我是想要垂直居中的块级元素。

    4 5

    CSS:

     1 .wrap{ 2 width:100px; 3 height: 200px; 4 background:#ccc; 5 position: relative; 6 } 7 .container{ 8 position:absolute; 9 top:50%; 10 height:100px; 11 margin-top:-50px; /* 高度的一半 */ 12 background: #00ff00;13 }

    chrome,Firefox,opera,IE6+都能够居中:

    IE6 由于 3px bug表现稍微不同,不过由于这里主要讨论垂直居中,所以就不对其作过多留意。

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    方法三:

    在需要垂直居中的元素前创建浮动元素,浮动元素设置 margin-bottom 为垂直居中元素高度的一半,高度为父元素高度的一半,为了兼容IE6、IE7,还需要象征性地设置一下 width。垂直居中元素 清除浮动。但是这个方法创建了无语义的标签,还要做一些兼容性的处理。

    ---------------------------------------------------------举个栗子---------------------------------------------------------

    HTML:

    1 2 3 4 

    我是想要垂直居中的块级元素。

    5 6

    CSS:

     1 .wrap{ 2 width: 100px; 3 height: 200px; 4 background: #ccc; 5 } 6 .floatdiv { 7 *width: 1px;/*兼容IE6、IE7*/ 8 float:left; 9 height:50%; 10 margin-bottom:-50px;11 }12 .container {13 clear:both; 14 height:100px; 15 position:relative;16 background: #00ff00;17 }

    chrome,Firefox,opera,IE6+都能够居中:

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    3、父元素高度确定的 行内元素( 多行文本、图片)、块状元素

    父元素高度确定的 行内元素( 多行文本、图片)、块状元素垂直居中有两种方法 :

    1. 加入table标签;
    2. 设置 display 为 table-cell,激活 vertical-align 属性。

    方法一:

    使用插入 table (包括tbody、tr、td)标签,同时设置 vertical-align:middle。

    ---------------------------------------------------------举个栗子---------------------------------------------------------

    HTML:

     1  2  3  4  9 10 11 
    5 6

    我是想要垂直居中的一段文字。

    7 8

    CSS:

    1 .wrap{2 width:100px;3 height:200px;4 background:#ccc5 }

    chrome,Firefox,opera,IE6+表现如下:

    注:

    1、因为 td 标签默认情况下就默认设置了 vertical-align 为 middle,所以我们不需要显式地设置了;

    2、将 div 换为 img 效果一致。

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    方法二:

    在 chrome、Firefox 、opera、IE8 及以上的浏览器下可以设置块级元素的 display 为 table-cell,激活 vertical-align 属性,但注意 IE6、7 并不支持这个样式。

    ---------------------------------------------------------举个栗子---------------------------------------------------------

    HTML:

    1 2 

    我是想要垂直居中的一段文字。

    3

    CSS:

    1 div{2 width:100px;3 height:200px;4 background:#ccc;5 display:table-cell;6 vertical-align:middle;7 }

    chrome、Firefox 、opera、IE8 及以上的浏览器表现正常,IE6 和 IE7 则无法居中。

    ---------------------------------------------------------吃完栗子---------------------------------------------------------

    垂直居中的方法比较多,至于用哪种方法还是要具体看情况,而且我相信还有更多的方法,欢迎大家补充。

    水平有限,错误欢迎指正。原创博文,转载请注明出处。

    文档

    CSS:水平居中与垂直居中_html/css

    CSS:水平居中与垂直居中_html/css_WEB-ITnose:CSS居中算是一个比较基础的问题,在实际运用中,需要考虑到的一般是两种情况,一种是主要是表现为文字,图片等行内元素的居中,一种是指 div 等块级标签元素的居中。 水平居中 1、行内元素 行内元素(主要是表现为文字,图片等行内元素),通过在父级元素
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top