前端 | (六)CSS盒子模型 | 尚硅谷前端html+css零基础教程2023最新

news2024/10/7 12:21:44

学习来源:尚硅谷前端html+css零基础教程,2023最新前端开发html5+css3视频

文章目录

  • 📚元素的显示模式
    • 🐇CSS长度单位
    • 🐇元素的显示模式
      • ⭐️块元素(block)
      • ⭐️行内元素(inline)
      • ⭐️行内块元素(inline-block)
    • 🐇总结各元素的显示模式
    • 🐇修改元素的显示模式
  • 📚CSS盒子模型
    • 🐇盒子模型的组成
    • 🐇盒子内容区(content)
    • 🐇盒子的内边距(padding)
    • 🐇盒子边框(border)
    • 🐇盒子外边距(margin)
      • ⭐️margin注意事项
      • ⭐️margin塌陷问题
      • ⭐️margin合并问题
    • 🐇处理内容溢出
    • 🐇隐藏元素的方式
    • 🐇样式的继承
    • 🐇默认样式
    • 🐇布局小技巧🔥
    • 🐇元素之间的空白问题
    • 🐇行内块的幽灵空白问题

⭐️前文回顾:前端 | (五)CSS三大特性及常用属性 | 尚硅谷前端html+css零基础教程2023最新
⭐️前文对应p87-p112,本文对应p113-p132
⭐️补充网站:W3school,MDN

📚元素的显示模式

🐇CSS长度单位

在这里插入图片描述

🐇元素的显示模式

⭐️块元素(block)

  • 也即块级元素。
  • 在页面中独占一行,不会与任何元素共用一行,是从上到下排列的。
  • 默认宽度:撑满父元素
  • 默认高度:由内容撑开。
  • 可以通过CSS设置宽高】。

⭐️行内元素(inline)

  • 也即内联元素。
  • 在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续从左到右排列。
  • 默认宽度:由内容撑开。
  • 默认高度:由内容撑开。
  • 无法通过CSS设置宽高】。

⭐️行内块元素(inline-block)

  • 也即内联块元素。
  • 在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续从左到右排列。
  • 默认宽度:由内容撑开。
  • 默认高度:由内容撑开。
  • 可以通过CSS设置宽高】。

🐇总结各元素的显示模式

在这里插入图片描述

🐇修改元素的显示模式

通过CSS中的display属性可以修改元素的默认显示模式,常用值如下:

在这里插入图片描述

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>修改元素的显示模式</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            font-size: 20px;
            /* 块元素改行内块元素,CSS可控制宽高且可一行显示 */
            display: inline-block;
        }
        #d1{
            background-color: pink;
        }
        #d2{
            background-color: palegreen;
        }
        #d3{
            background-color: blue;
        }
        a{
            font-size: 20px;
            width: 200px;
            height: 200px;
            /* 行内元素改块元素,css可控制宽高 */
            /* 这时候点击整个框都能完成超链接跳转 */
            display: block;
        }
        #s1{
            background-color: pink;
        }
        #s2{
            background-color: palegreen;
        }
        #s3{
            background-color: blue;
        }
    </style>
</head>
<body>
    <div id="d1">你好1</div>
    <div id="d2">你好2</div>
    <div id="d3">你好3</div>
    <hr>
    <a id="s1" href="https://www.baidu.com">去百度</a>
    <a id="s2" href="https://www.jd.com">去京东</a>
    <a id="s3" href="https://www.toutiao.com">去头条</a>
</body> 
</html>

📚CSS盒子模型

🐇盒子模型的组成

CSS会把所有的HTML元素都看成一个盒子,所有的样式也都是基于这个盒子。

  • margin(外边框):盒子与外界的距离。
  • border(边框):盒子的边框。
  • padding(内边距):紧贴内容的补白区域。
  • content(内容):元素中的文本或后代元素都是它的内容。

在这里插入图片描述

🐇盒子内容区(content)

在这里插入图片描述

关于默认宽度

  • 所谓的默认宽度,就是不设置width属性时,元素所呈现出来的宽度。
  • 总宽度 = 父的content - 自身左右margin
  • 内容区的宽度 = 父的content - 自身左右margin - 自身左右border - 自身左右padding

🐇盒子的内边距(padding)

在这里插入图片描述

🐇盒子边框(border)

在这里插入图片描述在这里插入图片描述

🐇盒子外边距(margin)

在这里插入图片描述

⭐️margin注意事项

在这里插入图片描述

⭐️margin塌陷问题

在这里插入图片描述

  • 塌陷举例

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>margin塌陷问题</title>
        <style>
            .outer{
                width: 400px;
                height: 400px;
                background-color: gray;
            }
            .inner1{
                width: 100px;
                height: 100px;
                background-color: orange;
                /* 给inner1加下外边框,没问题 */
                /* margin-bottom: 50px; */
    
                /* 给inner1加上外边框,外边框动了,两个小框反而没动 */
                margin-top: 50px;
            }
            .inner2{
                width: 100px;
                height: 100px;
                background-color: green;
                 /* 给inner2加上外边框,没问题 */
                /* margin-top: 50px; */
            }
        </style>
    </head>
    <body>
        <div class="outer">
            <div class="inner1">inner1</div>
            <div class="inner2">inner2</div>
        </div>
    </body> 
    </html>
    

    在这里插入图片描述

  • 解决举例

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>margin塌陷问题</title>
        <style>
            .outer{
                width: 400px;
                height: 400px;
                background-color: gray;
                border: 3px solid red;
            }
            .inner1{
                width: 100px;
                height: 100px;
                background-color: orange;
                /* 给inner1加下外边框,没问题 */
                /* margin-bottom: 50px; */
    
                /* 给inner1加上外边框,外边框动了,两个小框反而没动 */
                margin-top: 50px;
            }
            .inner2{
                width: 100px;
                height: 100px;
                background-color: green;
                 /* 给inner2加上外边框,没问题 */
                /* margin-top: 50px; */
            }
        </style>
    </head>
    <body>
        <div class="outer">
            <div class="inner1">inner1</div>
            <div class="inner2">inner2</div>
        </div>
    </body> 
    </html>
    

    在这里插入图片描述

  • 最理想的解决方案overflow:hidden,不影响大小

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>margin塌陷问题</title>
        <style>
            .outer{
                width: 400px;
                height: 400px;
                background-color: gray;
                overflow: hidden;
            }
            .inner1{
                width: 100px;
                height: 100px;
                background-color: orange;
                /* 给inner1加下外边框,没问题 */
                /* margin-bottom: 50px; */
    
                /* 给inner1加上外边框,外边框动了,两个小框反而没动 */
                margin-top: 50px;
            }
            .inner2{
                width: 100px;
                height: 100px;
                background-color: green;
                 /* 给inner2加上外边框,没问题 */
                /* margin-top: 50px; */
            }
        </style>
    </head>
    <body>
        <div class="outer">
            <div class="inner1">inner1</div>
            <div class="inner2">inner2</div>
        </div>
    </body> 
    </html>
    

    在这里插入图片描述

⭐️margin合并问题

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>margin合并问题</title>
    <style>
        .outer{
            width: 400px;
            height: 400px;
            background-color: gray;
            overflow: hidden;
        }
        .inner1{
            width: 100px;
            height: 100px;
            background-color: orange;
            margin-bottom: 100px;
        }
        .inner2{
            width: 100px;
            height: 100px;
            background-color: green;
            margin-top: 100px;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="inner1">inner1</div>
        <div class="inner2">inner2</div>
    </div>
</body> 
</html>

在这里插入图片描述
在这里插入图片描述

🐇处理内容溢出

在这里插入图片描述

🐇隐藏元素的方式

在这里插入图片描述

🐇样式的继承

在这里插入图片描述

🐇默认样式

在这里插入图片描述

🐇布局小技巧🔥

在这里插入图片描述

<!DOCTYPE html>
<html lang="zn-CN">
<head>
    <meta charset="UTF-8">
    <title>布局技巧</title>
    <style>
        .outer{
            width: 400px;
            height: 400px;
            background-color: gray;
            overflow: hidden;
        }
        .inner{
            width: 200px;
            height: 100px;
            background-color: orange;
            padding: 5px;
            border: 5px solid red;
            /* 让橙色盒子在水平方向上居中 */
            margin: 0 auto;
            /* 让橙色盒子垂直居中,别忘了父元素的overflow */
            /* (400-(100+10+10))/2 */
            margin-top: 140px;
            /* 让文字水平居中 */
            text-align: center;
            /* 让文字垂直居中 */
            line-height: 100px;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="inner">inner</div>
    </div>
</body>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html lang="zn-CN">
<head>
    <meta charset="UTF-8">
    <title>布局技巧_2</title>
    <style>
        .outer{
            width: 400px;
            height: 400px;
            background-color: gray;
            /* 行内元素按文字处理,让inner水平居中 */
            text-align: center;
            /* 让inner垂直居中 */
            line-height: 400px;
        }
        .inner{
            background-color: orange;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <div class="outer">
        <span class="inner">出来玩啊?</span>
    </div>
</body>
</html>

在这里插入图片描述

<!DOCTYPE html>
<html lang="zn-CN">
<head>
    <meta charset="UTF-8">
    <title>布局技巧_3</title>
    <style>
        .outer{
            width: 400px;
            height: 400px;
            background-color: gray;
            /* 行内元素按文字处理,让inner和img水平居中 */
            text-align: center;
            /* 让inner和img垂直居中 */
            line-height: 400px;
            /* 图片绝对垂直居中 */
            font-size: 0px;
        }
        .inner{
            background-color: orange;
            font-size: 20px;
            /* 每个元素都要 */
            vertical-align: middle;
        }
        img{
            vertical-align: middle;
            border: 5px solid red;
        }
    </style>
</head>
<body>
    <div class="outer">
        <span class="inner">x出来玩啊?</span>
        <img src="maomao.png" alt="maomao">
    </div>
</body>
</html>

在这里插入图片描述

🐇元素之间的空白问题

在这里插入图片描述
给上边猫猫例子的font-size为0去掉——空格就看到了

<!DOCTYPE html>
<html lang="zn-CN">
<head>
    <meta charset="UTF-8">
    <title>布局技巧_3</title>
    <style>
        .outer{
            width: 400px;
            height: 400px;
            background-color: gray;
            /* 行内元素按文字处理,让inner和img水平居中 */
            text-align: center;
            /* 让inner和img垂直居中 */
            line-height: 400px;
            /* 图片绝对垂直居中 */
            /* font-size: 0px; */
        }
        .inner{
            background-color: orange;
            font-size: 20px;
            /* 每个元素都要 */
            vertical-align: middle;
        }
        img{
            vertical-align: middle;
            border: 5px solid red;
        }
    </style>
</head>
<body>
    <div class="outer">
        <span class="inner">x出来玩啊?</span>
        <img src="maomao.png" alt="maomao">
    </div>
</body>
</html>

在这里插入图片描述

🐇行内块的幽灵空白问题

行内块元素与文本的基线对齐,而文本的基线与文本最底端之间是有一定距离的。如下所示:

<!DOCTYPE html>
<html lang="zn-CN">
<head>
    <meta charset="UTF-8">
    <title>行内块幽灵空白问题</title>
    <style>
        div{
            width: 600px;
            /* 没给高 */
            background-color: pink;
        }
    </style>
</head>
<body>
    <div>
        <img src="maomao.png" alt="maomao">xg
    </div>
</body>
</html>

在这里插入图片描述在这里插入图片描述

以方案一解决

<!DOCTYPE html>
<html lang="zn-CN">
<head>
    <meta charset="UTF-8">
    <title>行内块幽灵空白问题</title>
    <style>
        div{
            width: 600px;
            background-color: pink;
        }
        img{
            border: 2px solid red;
            vertical-align: bottom;
        }
    </style>
</head>
<body>
    <div>
        <img src="maomao.png" alt="maomao">xg
    </div>
</body>
</html>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/771304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网工内推 | 美图秀秀招网工,大专以上,15薪,NP认证优先

01 美图公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、美图大厦网络、分公司网络、IT相关项目的网络、办公内网服务器&#xff1b; 2、负责网络的设计、运行、管理和维护等工作&#xff1b; 3、负责远程办公环境的优化、运行、管理和维护工作&#xff1b; 4、…

UnxUtils工具包,Windows下使用Linux命令

1. 前言 最近写批处理多了&#xff0c;发现Windows下的bat批处理命令&#xff0c;相比Linux的命令&#xff0c;无论是功能还是多样性&#xff0c;真的差太多了。但有时候又不得不使用bat批处理&#xff0c;好在今天发现了一个不错的工具包&#xff1a;UnxUtils&#xff0c;这个…

Generative Adversarial Network

Goodfellow,2014年 文献阅读笔记--GAN--Generative Adversarial NetworkGAN的原始论文-组会讲解_gan英文论文_Flying Warrior的博客-CSDN博客 启发:如何看两个数据是否来自同一个分布? 在统计中,two sample test。训练一个二分类的分类器,如果能分开这两个数据,说明来自…

基于MSP432P401R跟随小车【2022年电赛C题】

文章目录 一、赛前准备1. 硬件清单2. 工程环境 二、赛题思考三、软件设计1. 路程、时间、速度计算2. 距离测量3. 双机通信4. 红外循迹 四、技术交流 一、赛前准备 1. 硬件清单 主控板&#xff1a; MSP432P401R测距模块&#xff1a; GY56数据显示&#xff1a; OLED电机&#x…

实现本地缓存-caffeine

目录 实现caffeine cache CacheManager Caffeine配置说明 创建自定义配置类 配置缓存管理器 编写自动提示配置文件 测试使用 创建测试配置实体类 创建测试配置类 创建注解扫描的测试实体 创建单元测试类进行测试 实现caffeine cache CacheManager SimpleCacheManag…

HttpClient使用MultipartEntityBuilder上传文件时乱码问题解决

HttpClient使用MultipartEntityBuilder是常用的上传文件的组件&#xff0c;但是上传的文件名称是乱码&#xff0c;一直输出一堆的问号&#xff1a; 如何解决呢&#xff1f;废话少说&#xff0c;先直接上代码&#xff1a; public static String doPostWithFiles(HttpClient http…

git使用问题记录-权限

注意点&#xff1a; 1、在远程仓库中直接创建项目时&#xff0c;默认分支为main 2、git push报错 原因&#xff1a;即使是项目文件的创建者&#xff0c;但上层目录的权限为developer&#xff0c;无法push项目&#xff0c;找上层管理员修改权限为maintainer或owner可push代码…

File格式转换MultipartFile格式的例子

首先&#xff1a;需要先引入依赖包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.9</version> </dependency> 1.Multipartfile转File类型 //创建一…

函数(function)py

具有名称的&#xff0c;是为了解决某一问题&#xff0c;功能代码的集合 目录 一.定义函数 二.函数的分类 三.局部变量和全局变量 1.局部变量(local variable) 2.全局变量(global variable) 四.函数调用的内存分析 五.函数的参数 1.默认值参数 2.可变参数(不定长参数)…

基于timegan扩增技术,进行多维度数据扩增(Python编程,数据集为瓦斯浓度气体数据集)

1.数据集介绍 瓦斯是被预测气体&#xff0c;其它列为特征列,原始数据一共有472行数据&#xff0c;因为原始数据比较少&#xff0c;所以要对原始数据&#xff08;总共8列数据&#xff09;进行扩增。 开始数据截图 截止数据截图 2. 文件夹介绍 lstm.py是对未扩增的数据进行训练…

1186. 删除一次得到子数组最大和;1711. 大餐计数;1834. 单线程 CPU

1186. 删除一次得到子数组最大和 解题思路&#xff1a;如果没做过还不是很好想&#xff0c;当时自己第一反应是双指针&#xff0c;结果是个动态规划的题。 核心就是dp的定义&#xff0c;dp[i][k]表示以arr[i]结尾删除k次的最大和。看到这里其实就有一点思路了 dp[i][0]表示以…

KGAT: Knowledge Graph Attention Network for Recommendation

[1905.07854] KGAT: Knowledge Graph Attention Network for Recommendation (arxiv.org) LunaBlack/KGAT-pytorch (github.com) 目录 1、背景 2、任务定义 3、模型 3.1 Embedding layer 3.2 Attentive Embedding Propagation Layers 3.3 Model Prediction 3.4 Optimi…

docker容器引擎(一)

docker 一、docker的理论部分docker的概述容器受欢迎的原因容器与虚拟机的区别docker核心概念 二、安装docker三、docker镜像操作四、docker容器操作 一、docker的理论部分 docker的概述 一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循了apache2.0协议开源再Linux容…

ThreeJS打造自己的人物

hello&#xff0c;大家好&#xff0c;我是better&#xff0c;今天为大家分享如何使用Three打造属于自己的3D人物模型。 人物建模 当下有很多人物建模的网站&#xff0c;这里给大家分享的 Ready Player Me - Create a Full-Body 3D Avatar From a Photo 前往这个网址&#xff…

AI销售工具:驱动销售团队效率和个性化服务的未来

在数字化时代&#xff0c;AI销售工具成为推动销售行业发展的重要力量。这些创新工具融合了人工智能技术和销售流程&#xff0c;以提高销售团队的效率和提供个性化服务为目标。随着科技的不断进步&#xff0c;AI销售工具正引领着销售行业走向一个更加智能和高效的未来。 AI驱动的…

专题-【哈希函数】

14年三-3&#xff09; 20年三-2&#xff09; 哈希表&#xff1a; 查找成功&#xff1a; ASL(12113144)/817/8&#xff1b; 查找失败&#xff08;模为7&#xff0c;0-6不成功次数进行计算&#xff09;&#xff1a; ASL(3217654)/74。

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建 下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html 点击OSGeo4W Network Installer 点击下载 OSGeo4W Installer 运行程序 osgeo4w-setup.exe&#xff0c;出现以下界面&#xff0c;点击下一页。 选中install from i…

【全方位解析】如何写好技术文章

前言 为何而写 技术成长&#xff1a;相对于庞大的计算机领域的知识体系&#xff0c;人的记忆还是太有限了&#xff0c;而且随着年龄的增大&#xff0c;记忆同样也会逐渐衰退&#xff0c;正如俗话所说“好记性不如烂笔头”。并且在分享博客的过程中&#xff0c;我们也可以和大…

小白带你学习Linux的rsync的基本操作(二十四)

目录 前言 一、概述 二、特性 1、快速 2、安全 三、应用场景 四、数据的同步方式 五、rsync传输模式 六、rsync应用 七、rsync命令 1、格式 2、选项 3、举例 4、配置文件 5、练习 八、rsyncinotfy实时同步 1、服务器端 2、开发客户端 前言 Rsync是一个开源的…

光线追踪计算加速:包围盒

包围盒&#xff08;Bounding box&#xff09;是加速光线追踪&#xff08;Ray Tracing&#xff09;的最简单方法&#xff0c;不一定将其视为加速结构&#xff0c;但这无疑是减少渲染时间的最简单方法。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 使用包围盒来加速光…