实现box居中的方式(圣杯、flex、双飞翼、定位)

1.圣杯

代码

、css

#hd{

    height:50px;

    background: #666;

    text-align: center;

}

#bd{

    /*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/

    padding:0 200px 0 180px;

    height:100px;

}

#middle{

    float:left;

    width:100%;/*左栏上去到第一行*/

    height:100px;

    background:blue;

}

#left{

    float:left;

    width:180px;

    height:100px;

    margin-left:-100%;

    background:#0c9;

    /*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/

    position:relative;

    left:-180px;

}

#right{

    float:left;

    width:200px;

    height:100px;

    margin-left:-200px;

    background:#0c9;

    /*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/

    position:relative;

    right:-200px;

}

#footer{

    height:50px;

    background: #666;

    text-align: center;

}

<div id="hd">header</div>

<div id="bd">

    <div id="middle">middle</div>

    <div id="left">left</div>

    <div id="right">right</div>

</div>

<div id="footer">footer</div>

双飞翼

#hd{

    height:50px;

    background: #666;

    text-align: center;

}

#middle{

    float:left;

    width:100%;/*左栏上去到第一行*/   

    height:100px;

    background:blue;

}

#left{

    float:left;

    width:180px;

    height:100px;

    margin-left:-100%;

    background:#0c9;

}

#right{

    float:left;

    width:200px;

    height:100px;

    margin-left:-200px;

    background:#0c9;

}

/*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/

#inside{

    margin:0 200px 0 180px;

    height:100px;

}

#footer{ 

  clear:both; /*记得清楚浮动*/ 

  height:50px;   

  background: #666;   

  text-align: center;

}

<div id="middle">

    <div id="inside">middle</div>

</div>

<div id="left">left</div>

<div id="right">right</div>

区别:

   了解margin和padding和position三者区别,并且对于页面具备的影响margin的100%(父元素的width)以父级为参考,如果没有父级则为body体元素,position不能使得元素换行,只能在同行显示,而margin和padding确可以使得元素换行

1.主要是圣杯的需要把三个标签都包含,而双飞翼确不需要

  2.圣杯需要定位,而双飞翼不需要

3.圣杯(主要是margin出现问题)在页面大小切换下会出现样式问题,而双飞翼确不会,只是会使得页面中间的contern越来越小(大)

flex布局居中

只要是使用

display:flex;

justify-content:center;

align-items:center;

定位居中

position:absolute;

left:50%;

top:50%;

translate(-50%,-50%)





最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 13,287评论 0 8
  • 不会用代码框,所以看着有些乱套,,,,html部分 <!DOCTYPE html> 迅雷看看 ...
    这就是个帅气的名字阅读 5,497评论 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,088评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 一、前言 在分析Netty的源码的时候,一直看到Future、Promise之类的类,Future之前还接触过一点...
    隔壁老王的隔壁啊阅读 10,185评论 1 0