网页布局水平垂直技术

对于水平垂直居中的总结:

实现提供如下布局代码:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>DOCUMENT</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .parBar{
            position:relative;
            width:32em;
            height:32em;
            margin:4em auto;
            border:1px solid red;
        }
        .parBar .subBar{
            width:13em;
            height:13em;
            border:1px solid black;
        }
        
    </style>
</head>
<body>
    <div class="parBar">
        <div class="subBar"></div>
    </div>
</body>
</html>

第一种居中方式:

CSS绝对定位,对子元素增加如下代码:

.align-center{
    position:absolute;
    top:0;
    left:0;
    bottom:0;
    right:0;
    margin:auto;
}


第二种居中方式:

依旧是CSS绝对定位,代码如下:

<span style="font-family:Courier New;">.align-center{
    position:absolute;
    top:50%;
    left:50%;
    margin-top:-6.5em;
    margin-left:-6.5em;
}</span>

第三种居中方式:

利用JQ或者JS代码,在将子元素对于这个父类元素的高宽进行居中设置,这是非常简单的数学计算,本处就不再过多提及。

 

第四种居中方式:

CSS绝对定位和相对位移,其中用到translate属性,如果大家做过3D效果的网页的话,这个东西便是再熟悉不过了。(不需要固定高度)

代码如下:

<span style="font-family:Courier New;">.align-center{
    position:absolute;
    top:50%;
    left:50%;
    transform:translate(-50%, -50%);
    -webkit-transform:translate(-50%, -50%);
    -moz-transform:translate(-50%, -50%);
    -o-transform:translate(-50%, -50%);
    /*横坐标,纵坐标*/
}</span>

到此,大家可能就注意到了,这几个都包含一个元素设定那就是position:absolute/fixed,问题来了,如果没有这个属性怎么办呢?

第一种方式运用display:table-cell;

网页代码再次进行修改如下:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>DOCUMENT</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .parBar{
            position:relative;
            width:32em;
            height:32em;
            margin:4em auto;
            border:1px solid red;
        }
        .parBar .subBar{
             width:13em;
             height:13em;
             border:1px solid black;
         }

        .parBar .sub2Bar{
            width:6em;
            height:6em;
            border:1px solid black;
            margin:auto;
        }
        
    </style>
</head>
<body>
    <div class="parBar ">
        <div class="subBar">
            <div class="sub2Bar"></div>
        </div>
    </div>
</body>
</html>

垂直居中必须注意如下几条:

.align-center{
            display: table-cell;
            vertical-align:middle;
 }

如上align-center样式必须加在父类上,同时他们的子元素想要水平居中的话比如使用margin:auto;属性。

效果如下:




第二种方法:

运用display:-webkit-box

代码如下:

.align-center{
    display: -webkit-box;
    -webkit-pox-pack:center;
    -webkit-box-align:center;
}

此样式的使用和上面那种样式是一样的。

 

 

第三种方法:

:after,:before的使用

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>DOCUMENT</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .parBar{
            position:relative;
            width:32em;
            height:32em;
            margin:4em auto;
            border:1px solid red;
        }
        .parBar .subBar{
             width:13em;
             height:13em;
             border:1px solid black;
             text-align:center;
         }

        .parBar .sub2Bar{
            width:6em;
            height:6em;
            border:1px solid black;
            display: inline-block;
            vertical-align: middle;
        }
        .align-center:before{
            height:100%;
            content:'';
            display: inline-block;
            vertical-align: middle;
        }
        .align-center:after{
            height:100%;
            content:'';
            display: inline-block;
            vertical-align: middle;
        }
    </style>
</head>
<body>
    <div class="parBar">
        <div class="subBar align-center">
            <div class="sub2Bar "></div>
        </div>
    </div>
</body>
</html>


其中.align-center也是针对于父类而言的同时父类必须同时设定:after:before否则子类元素只是竖直方向居中水平方向是没有居中的,子类元素要居中必须是行内元素display:inline-block;否则子类元素是无法居中的。








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值