2-12编程练习为什么要向左偏移div块一半的距离。

2-12编程练习为什么要向左偏移div块一半的距离。

以下是代码。

<!DOCTYPE html>

<html>

<head>

  <meta charset="UTF-8">

  <title>Document</title>

  <style>

    *{

      margin: 0;

      padding:0;

    }

    .test{

     width: 800px;

     height: 100px;

     background: red;

     position:fixed;

     left:50%;

     margin-left:-400px;

    

     /*此处写代码*/

   

   }

   .out{

    width: 100%;

    height: 2000px;

    background-color: #abcdef;

    position:relative;

  }

</style>

</head>

<body>

  <div class="out">

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

  </div>

</body>

</html>

  1. 为什么要让div块向左移div块的一半距离才可以,即使添加了个-400的值为什么就居中了呢?因为父元素设定的是百分百契合页面,并不知道具体的值是多少啊,特特特别不理解为什么要向左偏移div块的一半距离就可以居中了,右边的外边距还是0,右边又怎么会空出来一些部分呢?

  2. 如果我们给这个红色的div块设定的宽度是1000px,那么设置左边为50%后。是不是也需要再向左移动-500值就可以了。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好,如下,因为先设置了left50%,就是如下的情况,红色div块向右移动了父级的50%,现在div红色块左边框部分所在的位置就是父级的50%处(一半),所以红色块设置margin-left:负的自身的一半,会让红色块本身向左移动自身的一半,这个时候,红色块的一半处以父级的一半处不就正好在同一个位置么,可以测试下,先设置left:50%,看下效果哦。

http://img1.sycdn.imooc.com//climg/5ac3138e0001c55819010134.jpg

红色的块如果设置的是1000px的话,它的负一半,就应该是-500px哦。

祝学习愉快~

  • 夜色温柔QAQ 提问者 #1
    通俗易懂。非常感谢!
    2018-04-04 01:04:12
  • top right bottom left设为0,然后在把margin:0px auto; 这样不是也可以实现吗?有没有什么不好的地方?
    2018-04-15 16:06:27
  • 可以的哦,由于代码的灵活性,实现效果的方式,并不是唯一的。
    2018-04-16 09:24:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师