盒子布局知识

一、水平方向上,有7个值可以改变盒子的大小及位置

margin-left 
border-left 
padding-left 
width
padding-right 
border-right
margin-right

margin-left +border-left +padding-left +width+ padding-right +border-right+ margin-right=父元素内容区的宽度

浏览器规定水平方向这七个值相加必须要等于其父元素内容区的宽度,如果这7个值相加不等于父元素内容区的宽度,浏览器就会改变某些值,让其成立,这个过程称作“过度约束”

浏览器调整:

1.如果水平方向7个值中没有auto,默认调整的是margin-right

0+0+0+100+0+0+500 = 60

2、7个值当中,有3个值可以被设置为auto,分别是margin-left,width,margin-right

(1)、1个auto

谁是auto就调整谁

margin-left为auto,

auto+0+0+100+0+0+0= 600 auto=500

width为auto

0+0+0+auto+0+0+0= 600 auto=600

margin-right为auto

0+0+0+100+0+0+auto= 600 auto=500

(2)、2个auto

margin-left,width为auto 调整width

auto+0+0+auto+0+0+0px= 600

width,margin-right为auto 调整width

margin-left,margin-right为auto 同时调整,各一半

简写为:margin:0 auto; 可以让元素居中

(3)、3个auto

margin-left,width,margin-right为auto 调整width

总结:

1、调整的顺序: width>margin-right/margin-left

2、margin:0 auto; 可以让元素居中,前提是width是固定的

二、垂直方向上

默认情况下,父元素的高度是被内容撑开的,如果设置了,设置多少就是多少 可以利用overflow属性设置溢出内容

可选值:

visible : 多余的内容正常显示 默认值

hidden: 裁剪多余

auto : 根据内容需要自动生成滚动条

scroll : 生成双向滚动条

如何去除滚动条

      .box1 {
        width: 200px;
        height: 200px;
        background-color: #bfa;
      }

三、垂直外边距重叠问题

-兄弟元素

1、 下外边距和上外边距重叠了,如果都是正值的,用绝对值大的

2、 如果都是负值,也用绝对值大的

一般情况下,兄弟元素的外边距重叠,有助于我们开发,不用做特殊处理

-父子元素

如果父子元素的垂直外边距相邻了,则子元素的外边距会传递给父元素,从而影响页面的布局这种情况必须要处理

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title></title>
    <style type="text/css">
      .box1 {
        width: 100px;
        height: 100px;
        background-color: red;
        margin-bottom: 50px;
      }
      .box2 {
        width: 100px;
        height: 100px;
        background-color: green;
        margin-top: 30px;
      }
      .outer {
        width: 200px;
        height: 200px;
        background-color: yellow;
        /* margin-top: 100px; */
        /* 方案一:不用margin,用padding实现 */
        /* padding-top: 100px; */
        /* 方案二:outer加个边框,隔开父子的上外边距 */
        /* border: 1px solid transparent; */
        /* 方案三:给元素添加BFC(块级格式化)隐含属性 */
        overflow:hidden;

      }

      .inner {
        width: 100px;
        height: 100px;
        background-color: yellowgreen;
        margin-top: 100px;

      }
    </style>
  </head>
  <body>
    <!-- 兄弟元素 -->
    <!-- <div class="box1"></div>
    <div class="box2"></div> -->
    <!-- 父子元素 -->
    <div class="outer">
      <div class="inner"></div>
    </div>
  </body>
</html>

四、内联元素盒子

1、内容区 它的宽高都是被内容撑开的,不能自定义设置

2、内边距 可以设置,但垂直方向不会挤别的元素

3、 边框 可以设置,但垂直方向不会挤别人

4、外边距 水平方向可以设置,垂直方向设置,没有变化

五、盒子大小和边框

盒子大小怎么设置?都有属性值?

默认情况下:盒子可见宽的大小由内容区,内边距,边框共同决定

box-sizing 用来设置盒子尺寸的计算方式 width/height 指的是谁

可选值:

content-box 内容区 默认值

border-box 宽度和高度用来设置整个盒子可见框的大小,包括边框,padding,内容区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值