盒子模型+给子元素添加外边距父元素也会动的解决办法

盒子模型的组成部分

  盒子模型的组成部分:
      内容区域:是css里面自己设置的宽度和高度
      内边距(padding):是内容和边框之间的距离
      边框(border):元素的一个边缘位置
      外边距(margin):元素与元素之间的距离

内边距

       padding:内容和边距之间的距离
取值个数内边距情况
V1实现四个方向的内边距
V1 V2V1上下内边距,V2左右内边距
V1 V2 V3V1代表上内边距,V2代表左右边距 V3代表下内边距
V1 V2 V3 V4V2代表上内边距,V2代表右内边距,V3代表下内边距,V4代表左内边距:顺时针记忆方向

能否设置一个方向的内边距:
可以,padding-top、padding-bottom、padding-left、padding-right

外边距

margin:元素与元素之间的距离

取值个数外边距情况
V1实现四个方向的外边距
V1 V2V1上下外边距,V2左右外边距
V1 V2 V3V1代表上外边距,V2代表左右边距 V3代表下外边距
V1 V2 V3 V4V2代表上外边距,V2代表右外边距,V3代表下外边距,V4代表左外边距:顺时针记忆方向

能否设置某一个方向的外边距?
问:使用方法:margin-方向词

在实例中遇到的问题
问题1:给子元素添加外边距,父元素随着子元素一起动

原代码:

<!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>Document</title>
    <style>
        .div1{
            width: 400px;
            height: 400px;
            background-color: red;
        }
        .div2{
            width: 200px;
            height: 200px;
            background-color: green;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="div1">
        <div class="div2"></div>
    </div>
</body>
</html>
产生一个问题:默认的子元素的外元素作用到父元素上面,父元素与上外边距产生距离,但是子元素不会与父元素产生上外边距
1)考虑点:本质原因,从概念角度出发:外边距是边框与边框之间的距离。
    给父元素添加一个上边框,颜色为透明
    border-top:1px   solid   transparent
<!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>Document</title>
    <style>
        .div1{
            width: 400px;
            height: 400px;
            background-color: red;
            border-top: 1px solid transparent;
        }
        .div2{
            width: 200px;
            height: 200px;
            background-color: green;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="div1">
        <div class="div2"></div>
    </div>
</body>
</html>

2)给父元素或者死子元素添加浮动=====触发BFC
float:left

<!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>Document</title>
    <style>
        .div1{
            width: 400px;
            height: 400px;
            background-color: red;
           float: left;
        }
        .div2{
            width: 200px;
            height: 200px;
            background-color: green;
            margin-top: 20px;
            box-sizing: border-box;
            /*float:left;*/
        }
    </style>
</head>
<body>
    <div class="div1">
        <div class="div2"></div>
    </div>
</body>
</html>

3)给父元素添加定位(绝对定位或者固定地位)
position:absolute;或者“position:fixed”
添加定位的元素,脱离了文档流,形成了独立的区域,触发BFC不会越界,也不会让外界干扰。

<!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>Document</title>
    <style>
        .div1{
            width: 400px;
            height: 400px;
            background-color: red;
            position: absolute;
        }
        .div2{
            width: 200px;
            height: 200px;
            background-color: green;
            margin-top: 20px;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <div class="div1">
        <div class="div2"></div>
    </div>
</body>
</html>

4)给父元素添加溢出隐藏
overflow:hidden;
触发了BFC独立区域,会让浮动的元素继续参与高度的计算。
5)转换角度思维考虑,给父元素添加添加内边距
padding-top:30px;
父元素会变大,降低父元素的高度。

盒子模型的实际高度计算

 只要添加内边距、边框,都会让盒子变大
 只要添加盒子模型中的任何一个内容都会让盒子变大
 实际的宽度=width+左右的padding+左右的border+左右的margin
 实际的高度=height+上下的padding+上下的border+上下的margin
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值