首页 > 其他分享 >vue学习过程中 遇到的问题 CSS塌陷 ----- 高度塌陷和外边距塌陷

vue学习过程中 遇到的问题 CSS塌陷 ----- 高度塌陷和外边距塌陷

时间:2023-06-20 12:55:48浏览次数:39  
标签:vue width color 100px height 塌陷 ----- background margin

1、高度塌陷

  原因:父元素没有设置高度,子元素设置浮动属性(float:left)之后,父元素的高度为0.***

<!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>
        .father{
            width: 200px;
            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
</html>

 高度塌陷问题处理:*****

  1)父级增加高度属性

  2)清除浮动

  3).father增加一个带高度不浮动的子元素

  4)触发BFC

  

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>
        .father{
            width: 200px;
            height: 120px;
            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
</html>

 

2)清除浮动

<!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>
        .father{
            width: 200px;
            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- 用clear 清除浮动,写在浮动元素之后 -->
        <div style="clear: both;"></div>
    </div>
</body>
</html>

 

 

3)给.father增加一个带高度子级

<!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>
        .father{
            width: 200px;
            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }
        .son2{
            width: 150px;
            height: 50px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- 用clear 清除浮动,写在浮动元素之后 -->
        <div class="son2"></div>
    </div>
</body>
</html>

 

 

 

2、外边距塌陷

(父子塌陷 和 兄弟塌陷) 只在垂直方向上,水平方向不会塌陷
父子塌陷原因:

  根据规范,父级盒子没有上边框(border),上边内边距,它的上边距就会和第一个子级元素的上边距重叠(两者取大值)

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 400px;
            height: 400px;
            /* padding-top:20px; */
            margin-top: 30px;

            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            margin-top: 50px;

            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            /* margin-top: 50px; */
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- <div class="son2"></div> -->
    </div>
</body>
</html>

 

 

父子边距塌陷处理:(常见5种方法)

  1)父元素加边框(border),加内边距(padding)。(不推荐因为增加了多余的内容)

  

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 200px;
            height: 200px;
            /* padding-top:1px; */
            border-top: 1px solid gray;

            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            margin-top: 150px;
            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            margin-top: 50px;
            margin-left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- <div class="son2"></div> -->
    </div>
</body>
</html>

 

  2)利用 块级格式化上下文 BFC机制(box-formatting-context) :设置一个独立的渲染区域,规定了内部的盒子渲染不可以影响外部元素。做法:overflow: hidden;

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 200px;
            height: 200px;
            /* 给父元素设置溢出隐藏触发bfc机制 */
            overflow: hidden;

            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            margin-top: 50px;
            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            margin-top: 50px;
            margin-left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- <div class="son2"></div> -->
    </div>
</body>
</html>

 

  3)脱标(脱离标准流)a、给父级或者子级增加浮动 (float:left) b、让父级或子级设置定位(绝对或者固定)

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 200px;
            height: 200px;
            /* 边框 或者 内边距 */
            /* padding-top:1px;
            border-top: 1px solid gray; */
            /* 给父元素设置溢出隐藏触发bfc机制 */
            /* overflow: hidden; */
            /* 添加浮动 */
            /* float: left; */
            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            margin-top: 50px;
            /* 添加浮动 与 父级任选一个添加即可*/
            /* float: left; */
            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            margin-top: 50px;
            margin-left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- <div class="son2"></div> -->
    </div>
</body>
</html>

  定位脱离标准流

  

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            /* 脱离标准流定位 */
            /* position: absolute; */
            width: 200px;
            height: 200px;
            /* 边框 或者 内边距 */
            /* padding-top:1px;
            border-top: 1px solid gray; */
            /* 给父元素设置溢出隐藏触发bfc机制 */
            /* overflow: hidden; */
            /* 添加浮动 */
            /* float: left; */
            /* display: inline-block; */
            background-color: green;
        }
        .son{
            /* 脱离标准流定位 */
            position: absolute;
            width: 100px;
            height: 100px;
            margin-top: 50px;
            /* 添加浮动 与 父级任选一个添加即可*/
            /* float: left; */
            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            margin-top: 50px;
            margin-left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- <div class="son2"></div> -->
    </div>
</body>
</html>

 

 

  4)父级转为行内块元素(display: inline-block)

  

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 200px;
            height: 200px;
            /* 边框 或者 内边距 */
            /* padding-top:1px;
            border-top: 1px solid gray; */
            /* 给父元素设置溢出隐藏触发bfc机制 */
            /* overflow: hidden; */
            /* 添加浮动 */
            /* float: left; */
            display: inline-block;
            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            margin-top: 50px;
            /* 添加浮动 与 父级任选一个添加即可*/
            /* float: left; */
            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            margin-top: 50px;
            margin-left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- <div class="son2"></div> -->
    </div>
</body>
</html>

 

  5)父级设为弹性布局

  

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            /* 脱离标准流定位 */
            /* position: absolute; */
            width: 200px;
            height: 200px;
            /* 边框 或者 内边距 */
            /* padding-top:1px;
            border-top: 1px solid gray; */
            /* 给父元素设置溢出隐藏触发bfc机制 */
            /* overflow: hidden; */
            /* 添加浮动 */
            /* float: left; */
            /* display: inline-block; */
            background-color: green;
            /* 父级设为弹性布局 */
            display: flex;
        }
        .son{
            /* 脱离标准流定位 */
            /* position: absolute; */
            width: 100px;
            height: 100px;
            margin-top: 50px;
            /* 添加浮动 与 父级任选一个添加即可*/
            /* float: left; */
            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            margin-top: 50px;
            margin-left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <!-- <div class="son2"></div> -->
    </div>
</body>
</html>

 

兄弟塌陷原因:

  根据规范,同级盒子没有上下边框(border),上下内边距,它们的上下边距就会和相邻的同级盒子合并(两者取大值)

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            /* padding-top:20px; */
            /* margin-top: 30px; */

            background-color: green;
        }
        .son{
            width: 100px;
            height: 100px;
            margin-bottom: 150px;
            margin-left: 100px;
            background-color: red;
        }
        .son2{
            width: 150px;
            height: 150px;
            margin-top: 50px;
            margin-left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
        <div class="son2"></div>
    </div>
</body>
</html>

 

 

  兄弟边距塌陷处理:

  1)只给两者之一添加margin来拉开距离。

  

 

标签:vue,width,color,100px,height,塌陷,-----,background,margin
From: https://www.cnblogs.com/changdasheng/p/17430723.html

相关文章

  • vue学习第12~13天 品优购项目(纯页面)
    目标:1)项目规划2)首页制作3)列表页制作4)注册页制作5)域名注册与网站上传 项目规划1、网站制作流程(八步) 2、项目整体介绍项目名称:品优购项目描述:品优购是一个电商网站。要完成PC端首页、列表页、......
  • Python进阶-上下文管理器
    上下文管理器定义包装任意代码确保执行的一致性语法with语句__enter__和__exit__方法classContextManager(object):def__init__(self):self.entered=Falsedef__enter__(self):self.entered=Truereturnself......
  • vue学习第16天 CSS---3D转换 (translate3d 3d移动、3D旋转 rotate3d、transform-
    3D转换转换:1)3d移动 translate3d 2)3d旋转 rotate3d 3D的特点:1)近大远小2)物体后面遮挡不可见 3D转换:我们工作最常用的 3D位移 和 3D旋转 主要知识点: 1、三维坐标系(z轴,z外(屏幕)+,z内(屏幕)-)三维......
  • TensorFlow08 神经网络-keras实战
    1数据集:这个照片很模糊,大小只有[32,32],所以我们预测的结果也不是很好。2自定义网络层(MyDenselayer)原本的网络层:w@x+b然后我们自己定义了一个,特意的把+b去掉了。3数据加载importosos.environ['TF_CPP_MIN_LOG_LEVEL']='2'importtensorflowastffromtensorfl......
  • 项目总结-瑞吉外卖
    软件开发基础分工:流程:01项目介绍组成部分:系统管理后台、移动端开发分期:技术选型:架构:角色:后台系统分析:登录页面:登录成功后,进入首页面(员工管理):分类管理页面:菜品管理页面:套餐管理页面:订单明细页面:02开发环境搭建数据库搭建创建数据库-->导入资料中的......
  • 不用 PLC与变频器通信程序 不用 PLC与变频器通讯程序台达DOP触摸屏MODBUS RTU直接与
    不用PLC与变频器通信程序不用PLC与变频器通讯程序台达DOP触摸屏MODBUSRTU直接与台达VFD-S1变频器通讯程序,台达DOP触摸屏直接与台达VFD-S1变频器通讯,这是触摸屏程序,不要经过PLC控制变频器,实现启动,停止,正反转,频率设定,实时输出功能监控,电压,电流,频率等监控.介面漂亮......
  • win10笔记本点击设置-系统卡住,没反应
    1、按Windows+x打开超级菜单,点击“命令提示符(管理)成员)”;2、键入以下命令:sfc/SCANNOW 3、如果检测到问题但无法修复,请使用以下命令:Dism/Online/Cleanup-Image/ScanHealth4、该命令会扫描所有系统文件,与官方系统文件进行对比,对电脑进行不一致扫描。Dism/Online/Cleanup......
  • vue项目中使用vue-quill-editor富文本编辑器、支持大小和拖拉;以及 vue 引入quill - im
    在本内容的最后面附上了demo代码1.实现的效果图2.首先需要先引入依赖如果引入了下面这两个依赖报错的话,那么请查看当前内容的第8点,哪里有解决这个报错的方案npminstallquill-image-resize-modulenpminstallquill-image-drop-modulenpminstallvue-qui......
  • 【后端面经-Java】Java创建线程的方法简介
    目录1.线程的基本概念1.1线程1.2线程状态和生命周期2.创建线程的四种方法2.1继承Thread类2.2实现Runnable接口2.3实现Callable接口2.4使用线程池3.参考资料1.线程的基本概念1.1线程学过操作系统的同学应该不陌生,线程是计算机中的最小调度单元,一个进程可以有多个线程......
  • 威纶触摸屏485直接控制监控台达vfd-m变频器程序 目前已测试成功台
    威纶触摸屏485直接控制监控台达vfd-m变频器程序目前已测试成功台达,三菱,施耐德变频器。功能很强大,道理也不复杂,只需两条通信线,可以实现在触摸屏或者电脑通过EB8000在线模拟模式下加usb转485转换头控制变频器正反转,停止,及频率设定,加减速,变频器加减速时间,频率上下限亦可设定,还能实现......