绝对定位的盒子居中算法

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了绝对定位的盒子居中算法相关的知识,希望对你有一定的参考价值。

常见场景有单个盒子在浏览器窗口居中,子绝父相盒子嵌套居中。

代码描述:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>定位</title>
    <style>
        .box {
            position: relative;
            width: 200px;
            height: 200px;
            background-color: pink;
            margin: 0 auto;

        }

        .box_1 {
            position: absolute;
            left: 50%;
            margin-left: -25px;
            top: 50%;
            margin-top: -25px;
            width: 50px;
            height: 50px;
            background-color: rgb(69, 22, 240);
            /* margin: 0 auto; */

        }
    </style>
</head>

<body>
    <div class="box">
        <div class="box_1">
            
        </div>
    </div>
</body>

</html>

场景描述:


此算法的优点是

  • 随着网页页面的大小,不变的是位置一直居中
  • 对于一些行内元素加上 position就直接可以设置高度和宽度
  • 块级元素添加绝对位置或者固定定位,盒子大小以内容多少为依据
  • 浮动的元素,绝对定位(固定定位)的元素都不会触发外边距合并(塌陷)的问题
  • 浮动的盒子会压住标准流下的盒子,但是不会把标准流里面的内容给压住,但是绝对定位(固定定位)会压住下面标准流的的所有内容(因为浮动最初的目的就是产生文字环绕效果

综合案例

淘宝焦点图制作案例


代码描述:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>定位</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            position: relative;
            width: 520px;
            height: 280px;
            background-color: pink;
            margin: 100px auto;

        }

        .box img {
            width: 520px;
            height: 280px;
        }

        .left,
        .right {
            position: absolute;
            top: 50%;
            margin-top: -15px;
            width: 20px;
            height: 30px;
            background-color: rgba(0, 0, 0, .3);
            text-align: center;
            line-height: 30px;
            color: #fff;
            text-decoration: none;
        }

        .left {
            left: 0;
            border-radius: 0px 15px 15px 0;
        }

        .right {
            right: 0;
            border-radius: 15px 0px 0px 15px;
        }

        .bottom {
            position: absolute;
            left: 50%;
            bottom: 10px;
            margin-left: -35px;
            width: 70px;
            height: 13px;
            background-color: rgba(255, 255, 255, .3);
            border-radius: 7px;
        }

        li {
            list-style: none;
        }

        .bottom li {
            float: left;
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background-color: #fff;
            margin: 3px;
        }

        .bottom .first {
            background-color: #ff5000;
        }
    </style>
</head>

<body>
    <div class="box">
        <img src="images/TB.jpg" alt="">
        <a href="#" class="left">
            &lt;</a>
        <a href="#" class="right">
            &gt;</a>
        <ul class="bottom">
            <li class="first"></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
</body>

</html>

注意:层叠,优先级,属性集合定义,定位算法

以上是关于绝对定位的盒子居中算法的主要内容,如果未能解决你的问题,请参考以下文章

将一个不定宽高的盒子设置水平垂直居中的六种方法

0060 translatemargin 实现绝对定位的盒子 水平居中垂直居中

div盒子水平垂直居中的方法推荐

盒子绝对定位 position:foxed ; 居中

怎样使网页设计中的css盒子内容居中?

盒子居中