zoukankan      html  css  js  c++  java
  • CSS布局中的水平垂直居中

    CSS布局中的水平垂直居中

          各位好,先说两句题外话。今天是我开通博客园的博客第一天,虽然我申请博客园的账号已经有一年半了,但是由于各种原因迟迟没有开通自己的博客。今天非常有幸开通博客,在此也写一篇关于前端开发布局中经常用到的水平垂直居中的总结。第一次写博客,可能会存在有的地方表述不是那么清晰明了还请各位多多见谅。

         废话不多说了,下面进入主题:下面的例子父元素div 高600px   宽800px, 子元素div的高400px 宽300px;

    1.     知道父元素div的宽和高,子元素在父元素中水平垂直居中
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>示例1</title>
     6     <style type="text/css">
     7         .parent{
     8             width: 800px;
     9             height: 600px;
    10             background-color: #bbbbc2;
    11             overflow: hidden;
    12         }
    13         .child{
    14             width: 400px;
    15             height: 300px;
    16             margin: 150px 200px;
    17             text-align: center;
    18             font-size: 30px;
    19             color: red;
    20             background-color: #616161;
    21         }
    22     </style>
    23 </head>
    24 <body>
    25 <div class="parent">
    26     <div class="child">示例1</div>
    27 </div>
    28 </body>
    29 </html>

     

    简单解释一下,这种方法是设置子元素的外边距达到水平垂直居中的效果,效果图如下:

           2.  知道父元素div的宽和高,子元素在父元素中水平垂直居中(方法2)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>示例2</title>
        <style type="text/css">
            .parent{
                width: 800px;
                height: 600px;
                background-color: #bbbbc2;
                overflow: hidden;
            }
            .child{
                width: 400px;
                height: 300px;
                margin: 150px auto;
                text-align: center;
                font-size: 30px;
                color: red;
                background-color: #616161;
            }
        </style>
    </head>
    <body>
    <div class="parent">
        <div class="child">示例2</div>
    </div>
    </body>
    </html>

    示例2的效果和示例1的效果一样,就不截图占用篇幅了,大家可以自己试一下;

          3.  知道父元素div的宽和高,子元素在父元素中水平垂直居中(方法3)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>示例3</title>
     6     <style type="text/css">
     7         .parent{
     8             position: relative;
     9             width: 800px;
    10             height: 600px;
    11             background-color: #bbbbc2;
    12             overflow: hidden;
    13         }
    14         .child{
    15             position: absolute;
    16             width: 400px;
    17             height: 300px;
    18             left: 200px;
    19             top: 150px;
    20             text-align: center;
    21             font-size: 30px;
    22             color: red;
    23             background-color: #616161;
    24         }
    25     </style>
    26 </head>
    27 <body>
    28 <div class="parent">
    29     <div class="child">示例3</div>
    30 </div>
    31 </body>
    32 </html>

    简单解释一下,其中我将父元素采用相对定位,子元素采用绝对定位,子元素设置left 和 top 的距离即可达到水平垂直居中的效果

          4.  知道父元素div的宽和高,子元素在父元素中水平垂直居中(方法4)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>示例4</title>
     6     <style type="text/css">
     7         .parent{
     8             position: relative;
     9             width: 800px;
    10             height: 600px;
    11             background-color: #bbbbc2;
    12             overflow: hidden;
    13         }
    14         .child{
    15             position: absolute;
    16             width: 400px;
    17             height: 300px;
    18             left: 50%;
    19             top: 50%;
    20             margin-top: -150px;
    21             margin-left: -200px;
    22             text-align: center;
    23             font-size: 30px;
    24             color: red;
    25             background-color: #616161;
    26         }
    27     </style>
    28 </head>
    29 <body>
    30 <div class="parent">
    31     <div class="child">示例4</div>
    32 </div>
    33 </body>
    34 </html>

    简单说一下,left和top采用百分比的方式取值,基数是对应父元素的宽和高。

          5.  知道父元素div的宽和高,子元素在父元素中水平垂直居中(方法5)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>示例5</title>
     6     <style type="text/css">
     7         .parent{
     8             position: relative;
     9             width: 800px;
    10             height: 600px;
    11             background-color: #bbbbc2;
    12             overflow: hidden;
    13         }
    14         .child{
    15             position: absolute;
    16             width: 400px;
    17             height: 300px;
    18             left: 50%;
    19             top: 50%;
    20             transform: translate(-50%,-50%);
    21             text-align: center;
    22             font-size: 30px;
    23             color: red;
    24             background-color: #616161;
    25         }
    26     </style>
    27 </head>
    28 <body>
    29 <div class="parent">
    30     <div class="child">示例5</div>
    31 </div>
    32 </body>
    33 </html>

    说一下,这种方法还是比较好的,translate(-50%,-50%),这里使用到了2D转换,里面又用到了百分数,不过这个百分数是基于当前元素的宽和高的,这是我自己常用的一种方式

          6.  知道父元素div的宽和高,子元素在父元素中水平垂直居中(方法6)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>示例6</title>
     6     <style type="text/css">
     7         .parent{
     8             display: flex;
     9             justify-content: center;
    10             align-items: center;
    11             width: 800px;
    12             height: 600px;
    13             background-color: #bbbbc2;
    14         }
    15         .child{
    16             width: 400px;
    17             height: 300px;
    18             text-align: center;
    19             font-size: 30px;
    20             color: red;
    21             background-color: #616161;
    22         }
    23     </style>
    24 </head>
    25 <body>
    26 <div class="parent">
    27     <div class="child">示例6</div>
    28 </div>
    29 </body>
    30 </html>

    解释一下,这里面用到了flex布局,此处就先不详细讲解,后续再写专门的文章进行讲解。

          7.  知道父元素div的宽和高,子元素在父元素中水平垂直居中(方法7)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>示例7</title>
     6     <style type="text/css">
     7         .parent{
     8             display: flex;
     9             width: 800px;
    10             height: 600px;
    11             background-color: #bbbbc2;
    12         }
    13         .child{
    14             width: 400px;
    15             height: 300px;
    16             margin: auto;
    17             text-align: center;
    18             font-size: 30px;
    19             color: red;
    20             background-color: #616161;
    21         }
    22     </style>
    23 </head>
    24 <body>
    25 <div class="parent">
    26     <div class="child">示例7</div>
    27 </div>
    28 </body>
    29 </html>

    这里面也用到了flex布局,要听其中缘由,请听下回分解。

          结束语:由于本人第一次写博客,多有不足,还请各位大神多多指教,谢谢!

    flex布局参考文章:

    阮一峰的文章  http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

  • 相关阅读:
    node.js中常用的fs文件系统
    秒懂 this
    Filter 过滤器
    Ubuntu 安装zookeeper
    Vmware 设置NAT模式
    TreeMap
    ArrayList扩容
    Java 面试题收集
    SwitchyOmega 设置修改代理
    Jedis操作Redis
  • 原文地址:https://www.cnblogs.com/pizitai/p/6184737.html
Copyright © 2011-2022 走看看