前端css学习笔记6:盒子模型

本文为个人学习总结,如有谬误欢迎指正。前端知识众多,后续将继续记录其他知识点!

目录

前言

一、组成

​编辑content

padding

border

margin

margin塌陷

margin合并

使用场景

标题与段落间距

卡片列表布局

二、内容溢出—overflow

三、隐藏元素

visibility

display

块元素(块级元素)—block

行内元素(内联元素)—inline

行内块元素(内联块元素)—inline-block

修改显示模式

使用场景

(1) 行内元素适用场景

(2) 块级元素适用场景

(3) 行内块级元素适用场景


前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。在网页布局与设计中,盒子模型是最为核心和基础的概念之一,它支撑起整个网页的结构框架。理解盒子模型的组成、内容溢出的处理方式以及元素隐藏的实现方法,是掌握网页布局技巧、打造美观且功能完善的网页界面的关键。本文介绍盒子模型的组成要素(包括content、padding、border、margin)、内容溢出时的处理属性overflow,以及隐藏元素的常用方法(visibility和display)。希望这份笔记能为同样正在学习CSS的同学提供参考,也欢迎大家结合原课程视频深入学习,共同进步。

网课链接: https://www.bilibili.com/video/BV1p84y1P7Z5/?share_source=copy_web&vd_source=faad59aa4025692c65fca19bc4320e39


一、组成

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

1.margin(外边距):盒子与外界的距离。

2.border(边框):盒子的边框。

3.padding(内边距):紧贴内容的补白区域。

4.content(内容):元素中的文本或后代元素都是它的内容。

  • 盒子的大小=content+左右padding+左右border
  • 外边距不影响盒子的大小,会影响盒子的位置(看是否给盒子指明width)
  • 只写height和width的值,表明的是content的大小
  • 背景色也会填充边框区域

content

拉动浏览器显示时最大/小宽度和高度

默认宽度,不设置width属性时,元素呈现的宽度—与父元素有关(子元素要出现在父元素的content区)

  • 总宽度=父的content-自身左右的margin
  • 内容区的宽度=父的content-自身左右的margin-自身左右的border-自身·左右的padding

    padding

    padding复合属性的使用规则:

    1.padding:10px;四个方向内边距都是10px

    2.padding:10px 20px;上下10px,左右20px。(上下、左右

    3.padding:10px 20px 30px;:上10px,左右20px,下30px。(上、左右、下)4.padding:10px 20px 30px 40px;上10px,右20px,下30px,左40px。(上、右、下、左)—顺时针

    • 值不能为负数
    • 行内元素左右边距没问题,上下边距不能完美设置
    • 块级元素,行内块元素,四个方向内边距都可以完美设置

    border

    属性

    作用

    属性值

    border

    符合属性,简写所有边框属性

    基本是width,color,style

    值没有顺序要求

    border: 1px solid red;

    border-width

    设置边框宽度

    复合四个方向的边框宽度

    长度,默认3px

    border-width: 2px;

    border-style

    定义边框风格

    复合四个方向的边框风格

    none:默认值

    solid:实线边框线风格dashed:虚线

    dotted:点线

    double:双实线

    。。。。

    border-style: dashed;

    border-color

    设置边框颜色

    复合四个方向的边框颜色

    颜色,默认黑色

    border-color: #00f;

    border-{side}

    border-left

    border-left-style

    border-left-width

    border-left-color

    border-right

    border-right-style

    border-right-width

    border-right-color

    border-top

    border-top-style

    border-top-width

    border-top-color

    border-bottom

    border-bottom-style

    border-bottom-width

    border-bottom-color

    设置边框某一边

    每一个border-{side} 属性都有子属性border-{side}-{width/style/color}

    同上

    border-top: 1px solid black; /* 上边框 */

    border-right: 2px dashed red; /* 右边框 */

    border-bottom: 3px dotted blue; /* 下边框 */

    border-left: none; /* 左边框无 */

    border-radius

    圆角边框

    border-radius: 5px;

    分角设置

    border-radius: 10px 5px 20px 0; /* 左上 右上 右下 左下 */

    button {

    border: 2px solid #333;

    border-radius: 8px; /* 圆角按钮 */

    }

    box-shadow

    边框阴影

    box-shadow: 2px 2px 5px grey;

    透明边框技巧

    通过 transparent 实现占位或悬停效果:

    .box {border: 2px solid transparent; /* 初始透明 */
    }
    .box:hover {border-color: gold; /* 悬停时显示 */
    }
    • border-style、border-width、border-color其实也是复合属性。

    margin

    margin复合属性的使用规则:

    1.margin:10px;四个方向内边距都是10px

    2.margin:10px 20px;上下10px,左右20px。(上下、左右

    3.margin:10px 20px 30px;:上10px,左右20px,下30px。(上、左右、下)4.margin:10px 20px 30px 40px;上10px,右20px,下30px,左40px。(上、右、下、左)—顺时针

    注意

    • 父亲的content中承装着子元素,子元素要出现在父元素的内容区,所以子元素的margin是参考父元素的content计算的
    • margin-top,margin-left会影响自身位置;margin-bottom,margin-right会影响兄弟元素位置
    • 块级元素,行内块元素,四个方向内边距都可以完美设置;行内元素左右margin是可以完美设置的,但是上下margin不能设置(设置后无效)
    • margin值可以为auto;块级元素,margin-left,margin-right可以设置为auto,呈现其在父元素内水平居中;但是margin-top,margin-bottom不能设置auto(margin:0px auto)
    • 值可以是负数,两个盒子层叠

    margin塌陷

    第一个子元素的上margin会作用在父元素上,最后一个子元素的下margin会作用在父元素上。

    解决方法

    • 方案一:给父元素设置不为0的padding。

    • 方案二:给父元素设置宽度不为0的border。(例如border:1px solid grey)

    • 方案三:给父元素设置css样式overflow:hidden(不影响父元素容器的大小)

      • 使用overflow属性控制溢出的部分,把溢出的部分隐藏(hidden)

    margin合并

    上面兄弟元素的下外边距和下面兄弟元素的上外边距会合并,取一个最大的值,而不是相加。当两个或多个垂直相邻块级元素的上下外边距相遇时,它们会合并成一个外边距,其大小为两者中的较大者。这种现象仅发生在垂直方向水平方向的外边距不会合并。(行内元素的垂直方向由内容撑开,不能设置上下margin,不会发生外边距合并)

    解决方案:无需解决,布局的时候上下的兄弟元素,只给一个设置上下外边距(希望上下间距多少就设置多少,不必拆分成上margin与下margin)就可以了。

    使用场景

    标题与段落间距
    <h2 style="margin-bottom: 20px;">标题</h2>
    <p style="margin-top: 15px;">正文内容</p>
    <!-- 实际间距:20px -->

    优化:统一使用 margin-bottommargin-top 避免混乱。

    卡片列表布局
    <div class="card" style="margin-bottom: 16px;">卡片1</div>
    <div class="card" style="margin-top: 16px;">卡片2</div>
    <!-- 实际间距:16px(非32px) -->

    解决:仅对卡片设置 margin-bottom

    二、内容溢出—overflow

    内容溢出是指当元素的内容(文本、图片、子元素等)超出其指定的宽度或高度时,内容超出容器边界的现象。

    • visible 默认值,内容溢出容器并显示在容器外 需要完全展示内容(可能破坏布局)
    • hidden 隐藏溢出部分 裁剪多余内容(如头像圆形遮罩)

    三、隐藏元素

    visibility

    visibility属性默认值是show,如果设置为hidden,元素会隐藏。元素看不见了,还占有原来的位置(元素的大小依然保持)

    display

    设置display:none,就可以让元素隐藏。彻底地隐藏,不但看不见,也不占用任何位置,没有大小宽高。display的值还可以控制是块级元素/行内元素/行内块级元素

    块元素(块级元素)—block

    • 页面中独占一行,不会与任何元素共用一行,是从上到下排列的。
    • 默认宽度撑满父元素
    • 默认高度:由内容撑开。
    • 可包含行内和块级元素
    • 独占一行(前后自动换行)
    • 可以通过CSS设置宽高。
      • 主体结构标签:<html> 、<body>
      • 排版标签:<h1>~<h6>、<p>、<hr>、<pre><div>
      • 列表标签:<ul>、<ol>、<li>、<dl>、<dt>、<dd>
      • 表格相关标签:<table>、<tbody>、<thead>、<tfoot>、<tr><caption>
      • 表单<form>与下拉框选项<option>(下拉框slect是行内块元素)

    行内元素(内联元素)—inline

    • 在页面中不独占一行(多个可并列),一行中不能容纳下的行内元素,会在下一行继续从左到右排列。
    • 默认宽度:由内容撑开。
    • 默认高度:由内容撑开。
    • 不能包含块级元素
    • 不换行,与其他行内元素同行
    • 无法通过CSS设置宽高
      • 文本标签:换行/另起一行<br>、强调<em>、强调<strong>、文本上标<sup>、文本下标<sub>、表删除文本<del>、表新增文本<ins>
      • 超链接<a>与表单控件关联<label>

    注(这些都是逻辑上标签,视觉效果可用css更改);

    行内块元素(内联块元素)—inline-block

    • 页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续从左到右排列。
    • 默认宽度:由内容撑开。
    • 默认高度:由内容撑开。
    • 不换行,但可设置宽高
    • 可包含行内和块级元素(和块元素相同;其余同行内元素)
    • 可以通过CSS设置宽高(和块元素相同;其余同行内元素)
      • ​​​​​​​图片:<img>
      • 单元格:<td>、<th>
      • 表单控件:<input>、<textarea>、<select>、<button>
      • 框架标签:<iframe>

    注意:元素在html中只分为:行内元素、块级元素,区分条件也只有一条:“是否独占一行”,如果按照这种分类方式,行内块元素应该算作行内元素

    修改显示模式

    通过 display 属性可改变元素的默认行为:

    span { display: block; }    /* 行内 → 块级 */
    div { display: inline; }    /* 块级 → 行内 */
    a { display: inline-block; } /* 行内 → 行内块级 */
    p { display: none; } /* 元素会被隐藏,并且页面将显示为好像该元素不在其中 */

    使用场景

    (1) 行内元素适用场景
    • 文本修饰(如加粗 <strong>、斜体 <em>)。
    • 包裹少量文字或图标(如 <span><a>)。
    (2) 块级元素适用场景
    • 页面布局容器(如 <div><section>)。
    • 结构性内容(如段落 <p>、标题 <h1>)。
    (3) 行内块级元素适用场景
    • 水平排列但需控制尺寸的组件(如按钮 <button>、输入框 <input>)。
    • 图文混排时对齐(如 vertical-align: middle

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

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

    相关文章

    以下是对智能电梯控制系统功能及系统云端平台设计要点的详细分析,结合用户提供的梯控系统网络架构设计和系统软硬件组成,分点论述并补充关键要点:

    智能电梯控制系统功能及系统云端平台设计要点一、梯控系统网络架构设计服务本地化&#xff1a;电梯门禁服务器本地化部署&#xff1a;核心服务器部署在项目本地&#xff0c;确保数据安全、运维及时性&#xff0c;减少网络依赖。需支持本地独立运行&#xff0c;避免云端故障影响…

    全球电商业财一体化:让出海品牌实现“看得见的增长“

    内外贸并行的数字化挑战在数字经济浪潮下&#xff0c;中国品牌呈现"双轮驱动"增长态势&#xff1a;一边深耕天猫、京东、抖音等国内主流平台&#xff0c;一边通过Amazon、Tiktok、eBay、Temu等渠道拓展全球市场。然而&#xff0c;多平台、多币种、多地区的复杂运营环…

    Nacos-5--Nacos2.x版本的通信原理

    Nacos 2.x引入了gRPC作为其主要的通信协议&#xff0c;取代1.x版本中的HTTP长轮询和UDP通信方式&#xff0c;显著提升了性能、实时性和稳定性。gRPC是一个高性能、开源的远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;它基于HTTP/2标准设计&#xff0c;并使用Protoc…

    如何以开发者的身份开发出比python更好的应用软件?

    作为一名拥有多年软件架构经验的开发者,我见证了Python从实验室脚本语言成长为数字时代基础设施的完整历程。2008年我参与欧洲核子研究中心的粒子数据分析系统时,Python还是辅助工具,而今天它已成为驱动LIGO引力波探测的核心引擎——这种跃迁绝非偶然。 一、Python的巅峰应…

    zynq代办事项

    测试verilog按键 1.0 按键->队列->串口 1.1 按键模块ming_key包括 按下,松开,单击,双击,长按,事件 1.2 队列模块ming_fifo存储按键发出的[事件和事件戳] 1.3 顶层模块TOP 轮询 ming_fifo,将读到的事件用串口封装成数据包发给串口助手 测试zynq的M_AXI_GP0 1.0 用axi_li…

    【Redis】Redis典型应用——缓存

    目录 一.什么是缓存 二.使用Redis作为缓存 2.1.关系型数据库的缺点 2.2.使用Redis作为MySQL的缓存 三. 缓存更新策略:识别热点数据 3.1.定期更新 3.2.实时生成 四.缓存的使用注意事项 4.1.缓存预热(Cache preheating) 4.2.关于缓存穿透 (Cache penetration) 4.3..关…

    C#控制台项目,鼠标点击后线程会暂停

    C#控制台应用程序&#xff0c;点击后就会暂停运行&#xff0c;但是我想让它运行不受鼠标点击的影响。 下面是程序演示&#xff1a;class Program{static void Main(string[] args){Console.WriteLine("Hello");int index 0;while(true){Console.WriteLine($"in…

    云计算-实战 OpenStack 私有云运维:服务部署、安全加固、性能优化、从服务部署到性能调优(含数据库、内核、组件优化)全流程

    简介 此次围绕OpenStack 私有云平台的运维与开发展开,涵盖了从核心服务安装到深度优化的全流程实战内容。文中详细介绍了 OpenStack 各关键组件(如 Keystone、Glance、Nova、Neutron、Cinder 等)的安装部署方法,包括使用脚本快速搭建服务、创建用户、上传镜像、配置网络等…

    流水的 AI,铁打的腾讯

    腾讯 昨天腾讯公布了 2025 年第二季度的业绩报告。 就还是那只鹅&#xff0c;就还是那个超预期。 总营收 1845 亿&#xff0c;同比增长 15%&#xff1b;净利润 556.3 亿&#xff0c;同比增长 17%&#xff1b;经营利润 692.5 亿&#xff0c;同比增长 18%。 这里面最炸裂的&#…

    再回C的进制转换--负数

    概念 负数在计算机中以补码的形式保存&#xff0c;以int类型的-15为例&#xff0c;求补码先对-15取绝对值&#xff0c;然后对其按位取反(得到反码)&#xff0c;然后加1&#xff0c;就可以得到其的补码。 二进制的补码 -15 (取绝对值)–> 15 --> (十六进制表示)0x000f (按…

    项目绩效域-笔记

    一、项目管理绩效域 1. 价值驱动的项目管理知识体系 1&#xff09;体系构成要素 核心转变&#xff1a;从预测型生命周期&#xff08;计划驱动&#xff09;转向价值驱动体系&#xff0c;融合预测型和敏捷方法组成要素&#xff1a; 12个项目管理原则&#xff08;基础&#xff09;…

    怎么判断晶振的好坏,有什么简单的办法

    今天来聊聊晶振的好坏判断方法&#xff0c;3个步骤轻松搞定。外观检查&#xff1a;先看脸&#xff0c;再看脚晶振体积虽小&#xff0c;但问题往往写在“脸上”。第一步&#xff0c;用肉眼观察&#xff1a;裂痕与破损&#xff1a;晶振表面如果有明显裂纹或缺口&#xff0c;大概率…

    mac下载maven并配置,以及idea配置

    文章目录下载配置settingsidea配置下载 https://maven.apache.org/download.cgi 我下的3.6.3 https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/ 配置 open ~/.zprofile添加&#xff0c;根据自己安装路径修改 export MAVEN_HOME/Users/xxx/tools/apache-mave…

    基于机器视觉的车道线检测与跟踪关键技术研究

    摘 要 随着自动驾驶技术的迅速发展&#xff0c;车道线检测与跟踪技术在提高道路安全性和驾驶自动化水平方面发挥着至关重要的作用。本文针对基于机器视觉的车道线检测与跟踪关键技术进行了深入研究&#xff0c;旨在提升车道线检测的准确性与系统的实时响应能力。通过采用先进的…

    flutter 跨平台编码库 protobuf 工具使用

    1 安装依赖 dependencies:protobuf: ^3.1.0 # 或最新版本flutter pub get安装成功之后 1 lib 下创建文件夹 testProto 2 创建文件Student.proto 文件Student.proto 文件内容 syntax "proto3"; package example2;//导入其它proto文件 import "testProto/user.…

    【网络】网络模型总结复盘

    1.OSI七层模型是什么&#xff1f;答&#xff1a;是网络通信分层模型&#xff0c;规范不同设备的通信流程应用层 如HTTP FTP文件传输 DNS域名解析 SSH远程登录 为用户提高服务表示层 对数据进行格式转换加密 如TLS/SSL会话层 负责建立会话 管理和终止会话传输层 提高数据的安全问…

    vscode的ws环境,esp32s3连接wifi

    注意大小写&#xff0c;wsl&#xff08;也就是linux环境&#xff09;严格区分大小写。有帮助记得订阅专栏点赞&#xff0c;当前不定期持续更新。 一、文件夹格式 oled1/ # 项目根目录 ├─ main/ # 主程序文件夹 │ ├─ main.c …

    面试题:如何用Flink实时计算QPS

    Flink 实时计算 QPS 面试题题目&#xff1a; 假设某互联网应用日活用户 100 万&#xff0c;每天产生 1 亿条数据&#xff08;日志/事件&#xff09;&#xff0c;要求使用 Apache Flink 实现实时计算系统的 QPS&#xff08;Queries Per Second&#xff09;&#xff0c;并考虑以下…

    Pytest项目_day12(yield、fixture的优先顺序)

    yield yield可以用作fixture的后置操作 yield的执行位置和scope的范围设置有关 当我们将scope设置为function时&#xff0c;yield就会在方法结束时执行yield后的代码yield还可以返回数据&#xff0c;类似于return&#xff0c;不过yield之后的代码会执行&#xff0c;而return不会…

    面试实战 问题三十二 Java中创建对象的几种方式

    Java中创建对象的几种方式 在Java中&#xff0c;创建对象是面向对象编程的核心操作。对象创建不仅涉及直接实例化&#xff0c;还包括通过设计模式、反射机制等间接方式来实现。以下我将逐步解释Java中常见的对象创建方式&#xff0c;每种方式都基于Java语言规范和相关设计原则。…