为什么left设百分比,margin-left设自己宽度的负一半就可以居中,为什么不能都设分数或者都设负一半像素呢

来源:3-11 编程练习

慕勒1228195

2021-06-01 21:46:13

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Document</title>

  <style>

    *{

      margin0;

      padding:0;

    }

    .test{

     width800px;

     height100px;

     backgroundred;

     positionfixed;

     left50%;

     margin-left-400px;


     

   

   }

   .out{

    width100%;

    height2000px;

    background-color#abcdef;

  }

</style>

</head>

<body>

  <div class="out">

    <div class="test"></div>

  </div>

</body>

</html>


写回答

1回答

好帮手慕久久

2021-06-02

同学你好,解答如下:

1、left属性的值可以设置成百分比,也可以设置成具体的数值,比如20px,但不能设置成分数(语法不允许)。

2、“left:50%;、margin-left:负自身宽度的一半;”只是让元素实现居中的一种方式,不是唯一的方式。可以通过设置其他样式,让元素居中。比如通过计算,直接设置margin-left的值:

http://img.mukewang.com/climg/60b6e64f09959de308710820.jpg

当然也可以考虑通过给left、margin-left设置百分比的形式来实现,此时left、margin-left的具体数值,要通过计算得到,计算过程可能比较麻烦。

综合考虑,“left:50%;、margin-left:负自身宽度的一半;这种方式是比较简单的,一般元素的宽度都不会太大,“负自身宽度的一半”的计算会比较简单,所以我们推荐使用这种方式。

3、以如下代码为例,给同学讲解一下left:50%;、margin-left:负自身宽度的一半;”的原理:

http://img.mukewang.com/climg/60b6e7f709327f4206840750.jpg

left的值如果设置成百分数,是相对于自己的“定位参照物”来计算的;上图中,.test是相对于.out来定位的,所以left 的50%是相对于.out来计算的,left:50%;的效果就是让.test水平移动到父元素的中线,注意此时是.test的左侧边缘与父元素中线对齐:

http://img.mukewang.com/climg/60b6e897092c138a19070618.jpg

从效果图上能看出,此时.test并没有在.out中居中,因为还差.test宽度的一半,需要把.test往左移动自己宽度的一半:

http://img.mukewang.com/climg/60b6e97609e53e9d18590520.jpg


同学的代码中,.test设置的fixed定位,.test的“定位参照物”是浏览器窗口,居中过程与上面上面一样。

​祝学习愉快!

0

0 学习 · 15276 问题

查看课程