• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    HTML对于元素水平垂直居中的探讨
    POST TIME:2021-10-16 22:28

    我们在设计页面的时候,经常要把DIV居中显示,而且是相对页面窗口水平和垂直方向居中显示,如让登录窗口居中显示。

    到现在为止,探讨了很多种方法。

    HTML:

    XML/HTML Code复制内容到剪贴板
    1. <body>  
    2.     <div class="maxbox">  
    3.         <div class="minbox align-center"></div>  
    4.     </div>  
    5. </body>  
    6.   

    效果图(下面几种方法效果图一样):

    第一种: CSS绝对定位

    主要利用绝对定位,再用margin调整到中间位置。

    父元素:

    CSS Code复制内容到剪贴板
    1. .maxbox{   
    2.     positionrelative;   
    3.     width500px;   
    4.     height500px;   
    5.     margin5px;   
    6.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    7. }   
    8.   

    子元素:

    CSS Code复制内容到剪贴板
    1. .minbox{   
    2.     width200px;   
    3.     height200px;   
    4.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    5. }  

    水平垂直居中对齐:

    CSS Code复制内容到剪贴板
    1. .align-center{   
    2.     positionabsolute;   
    3.     left: 50%;   
    4.     top: 50%;   
    5.     margin-left: -100px;   /*width/-2*/  
    6.     margin-top: -100px;    /*height/-2*/  
    7. }   

    第二种: CSS绝对定位 + Javascript/JQuery

    主要利用绝对定位,再用Javascript/JQuery调整到中间位置。相比第一种方法,此方法提高了class的灵活性。

    父元素:

    CSS Code复制内容到剪贴板
    1. .maxbox{   
    2.     positionrelative;   
    3.     width500px;   
    4.     height500px;   
    5.     margin5px;   
    6.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    7. }   
    8.   

    子元素:

    CSS Code复制内容到剪贴板
    1. .minbox{   
    2.     width200px;   
    3.     height200px;   
    4.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    5. }  

    水平垂直居中对齐:

    CSS Code复制内容到剪贴板
    1. .align-center{   
    2.     positionabsolute;   
    3.     left: 50%;   
    4.     top: 50%;   
    5. }   
    6.   

    JQuery:

    JavaScript Code复制内容到剪贴板
    1. $(function(){   
    2.     $(".align-center").css(   
    3.         {   
    4.             "margin-left": ($(".align-center").width()/-2),   
    5.             "margin-top": ($(".align-center").height()/-2)   
    6.         }   
    7.     );   
    8. });   
    9.   

    第三种: CSS3绝对定位 + 位移

    使用绝对定位与CSS3的 transform: translate同样也可以达到效果。

    父元素:

    CSS Code复制内容到剪贴板
    1. .maxbox{   
    2.     positionrelative;   
    3.     width500px;   
    4.     height500px;   
    5.     margin5px;   
    6.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    7. }   
    8.   

    子元素:

    CSS Code复制内容到剪贴板
    1. .minbox{   
    2.     width200px;   
    3.     height200px;   
    4.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    5. }   
    6.   

    水平垂直居中对齐:

    CSS Code复制内容到剪贴板
    1. .align-center{   
    2.     positionabsolute;   
    3.     top: 50%;   
    4.     left: 50%;   
    5.     -webkit-transform: translate(-50%, -50%);   
    6.        -moz-transform: translate(-50%, -50%);   
    7.             transform: translate(-50%, -50%);        /*向左向上位移*/  
    8. }   
    9.   

    第四种: Flexbox: [伸缩布局盒模型]

    要让元素水平垂直,对于Flexbox模型来说太容易了。

    这里得改变一下HTML:

    XML/HTML Code复制内容到剪贴板
    1. <div class="maxbox align-center">  
    2.     <div class="minbox"></div>  
    3. </div>  
    4.   

    父元素:

    CSS Code复制内容到剪贴板
    1. .maxbox{   
    2.     positionrelative;   
    3.     width500px;   
    4.     height500px;   
    5.     margin5px;   
    6.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    7. }   
    8.   

    子元素:

    C# Code复制内容到剪贴板
    1. .minbox{   
    2.     width: 200px;   
    3.     height: 200px;   
    4.     box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);   
    5. }  

    水平垂直居中对齐:

    CSS Code复制内容到剪贴板
    1. .align-center{   
    2.     display: flex;   
    3.     display: -webkit-flex;       /*兼容问题*/  
    4.     justify-contentcenter;   
    5.     align-items: center;    
    6. }   

    几种方法的比较:

    第一种CSS绝对定位margin调整,兼容性很好但是欠缺灵活性。如果有很多box里需要水平垂直居中,因其width,height不同而需要写不同的 .align-center 。
    第二种使用脚本语言,兼容性很好且弥补了第一种的缺点。不因width,height的改变而影响水平垂直居中的效果。
    第三种使用CSS3的一些新的属性,兼容IE10, Chrome, Firefox, 和 Opera。兼容性不太很好,不因width,height的改变而影响水平垂直居中的效果。
    使用Flexbox模型,兼容Firefox、Opera 和 Chrome,IE全军覆没。也是不因width,height的改变而影响水平垂直居中的效果。

    以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信