CSS学习(2)-盒子模型

1. CSS 长度单位

  1. px :像素。
  2. em :相对元素 font-size 的倍数。
  3. rem :相对根字体大小,html标签就是根。
  4. % :相对父元素计算。

注意: CSS 中设置长度,必须加单位,否则样式无效!

2. 元素的显示模式

2.1 块元素(block)

特点:

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

常见的如下:

  1. 主体结构标签: <html> 、 <body>
  2. 排版标签: <h1> ~ <h6> 、 <hr> 、 <p> 、 <pre> 、 <div>
  3. 列表标签: <ul> 、 <ol> 、 <li> 、 <dl> 、 <dt> 、 <dd>
  4. 表格相关标签: <table> 、 <tbody> 、 <thead> 、 <tfoot> 、 <tr> 、<caption>
  5. <form> 与 <option>

2.2 行内元素(inline)

特点:

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

常见的如下:

  1. 文本标签: <br> 、 <em> 、 <strong> 、 <sup> 、 <sub> 、 <del> 、 <ins>
  2. <a> 与 <label>

2.3 行内块元素(inline-block)

特点:

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

常见的如下:

  1. 图片: <img>
  2. 单元格: <td> 、 <th>
  3. 表单控件: <input> 、 <textarea> 、 <select> 、 <button>
  4. 框架标签: <iframe>

2.4 修改元素的显示模式

通过 CSS 中的 display 属性可以修改元素的默认显示模式,常用值如下:
在这里插入图片描述

3. 盒子模型的组成

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

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

图示如下:
在这里插入图片描述

盒子的大小 = content + 左右 padding + 左右 border 。

注意: 外边距 margin 不会影响盒子的大小,但会影响盒子的位置。

3.1 盒子内容区(content)

在这里插入图片描述

注意:
max-width 、 min-width 一般不与 width 一起使用。
max-height 、 min-height 一般不与 height 一起使用。

3.2 关于默认宽度

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

3.3 盒子内边距(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 。(上、右、
    下、左)

注意点:

  1. padding 的值不能为负数。
  2. 行内元素 的 左右内边距是没问题的,上下内边距不能完美的设置。
  3. 块级元素、行内块元素,四个方向内边距都可以完美设置。

3.4 盒子边框(border)

在这里插入图片描述
边框相关属性共 20 个。
border-style 、 border-width 、 border-color 其实也是复合属性。

3.5 盒子外边距(margin)

在这里插入图片描述

1. margin 注意事项
  1. 子元素的 margin ,是参考父元素的 content 计算的。(因为是父亲的 content 中承装着
    子元素)
  2. 上margin 、左margin :影响自己的位置;下margin 、右margin :影响后面兄弟元素
    的位置。
  3. 块级元素、行内块元素,均可以完美地设置四个方向的 margin ;但行内元素,左右
    margin可以完美设置,上下margin 设置无效。
  4. margin的值也可以是 auto ,如果给一个块级元素设置左右 margin 都为 auto ,该块级
    元素会在父元素中水平居中。
  5. margin 的值可以是负值。
2. margin 塌陷问题

什么是 margin 塌陷?
第一个子元素的上 margin 会作用在父元素上,最后一个子元素的下 margin 会作用在父元素上。

如何解决 margin 塌陷?

  • 方案一: 给父元素设置不为 0 的 padding 。
  • 方案二: 给父元素设置宽度不为 0 的 border 。
  • 方案三:给父元素设置 css 样式 overflow:hidden
3. margin 合并问题

什么是 margin 合并?
上面兄弟元素的下外边距和下面兄弟元素的上外边距会合并,取一个最大的值,而不是相加。
如何解决 margin 合并?
无需解决,布局的时候上下的兄弟元素,只给一个设置上下外边距就可以了。

3.6 处理内容溢出

在这里插入图片描述

注意:

  1. overflow-x 、 overflow-y 不能一个是 hidden ,一个是 visible ,是实验性属性,不建议使用。
  2. overflow 常用的值是 hidden 和 auto ,除了能处理溢出的显示方式,还可以解决很多疑难杂症。

3.7 隐藏元素的方式

方式1:visibility 属性

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

方式2: display 属性

设置 display:none ,就可以让元素隐藏。
彻底地隐藏,不但看不见,也不占用任何位置,没有大小宽高。

3.8 样式的继承

有些样式会继承,元素如果本身设置了某个样式,就使用本身设置的样式;但如果本身没有设置某个样式,会从父元素开始一级一级继承(优先继承离得近的祖先元素)。

1. 会继承的css属性

字体属性、文本属性(除了vertical-align)、文字颜色 等。

2. 不会继承的css属性

边框、背景、内边距、外边距、宽高、溢出方式 等。

一个规律:能继承的属性,都是不影响布局的,简单说:都是和盒子模型没关系的。

3.9 默认样式

元素一般都些默认的样式,例如:

  1. <a> 元素:下划线、字体颜色、鼠标小手。
  2. <h1> ~ <h6> 元素: 文字加粗、文字大小、上下外边距。
  3. <p> 元素:上下外边距
  4. <ul> 、 ol 元素:左内边距
  5. body 元素: 8px 外边距(4个方向)

优先级:元素的默认样式 > 继承的样式,所以如果要重置元素的默认样式,选择器一定要直接选择器到该元素。

3.10 布局小技巧

  1. 行内元素、行内块元素,可以被父元素当做文本处理。

即:可以像处理文本对齐一样,去处理:行内、行内块在父元素中的对齐。 例如: text-align 、 line-height 、text-indent 等。

  1. 如何让子元素,在父亲中 水平居中:
    • 若子元素为块元素,给父元素加上: margin:0 auto; 。
    • 若子元素为行内元素、行内块元素,给父元素加上: text-align:center 。
  2. 如何让子元素,在父亲中 垂直居中:
    • 若子元素为块元素,给子元素加上: margin-top ,值为:(父元素 content -子元素盒子
      总高) / 2。
    • 若子元素为行内元素、行内块元素:
      让父元素的 height = line-height ,每个子元素都加上: verticalalign:middle;
      补充:若想绝对垂直居中,父元素 font-size 设置为 0 。

3.11 元素之间的空白问题

产生的原因:

行内元素、行内块元素,彼此之间的换行会被浏览器解析为一个空白字符。

解决方案:
  • 方案一: 去掉换行和空格(不推荐)。
  • 方案二: 给父元素设置 font-size:0 ,再给需要显示文字的元素,单独设置字体大小(推
    荐)。

3.12 行内块的幽灵空白问题

产生原因:

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

解决方案:
  • 方案一: 给行行内块设置 vertical ,值不为 baseline 即可,设置为 middel 、 bottom 、
    top 均可。
  • 方案二: 若父元素中只有一张图片,设置图片为 display:block
  • 方案三: 给父元素设置 font-size: 0 。如果该行内块内部还有文本,则需单独设置 fontsize 。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《JAVA与模式》之简单工厂模式

系列文章目录 文章目录 系列文章目录前言一、简单工厂模式二、简单工厂模式的优缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在阎宏博士的《JAVA与模式》一…

如何在IDEA 中设置背景图片

在IDEA 中设置背景图片&#xff0c;可以按照以下步骤操作&#xff1a; 1、打开 IntelliJ IDEA 软件&#xff0c;进入代码编辑主界面。 点击编辑窗口上方的“File”菜单项。 2、在下拉子菜单中&#xff0c;选择“Settings”选项&#xff08;如果你使用的是 macOS&#xff0c;可…

双指针、bfs与图论

1238. 日志统计 - AcWing题库 import java.util.*;class PII implements Comparable<PII>{int x, y;public PII(int x, int y){this.x x;this.y y;}public int compareTo(PII o){return Integer.compare(x, o.x);} }public class Main{static int N 100010, D, K;st…

Android 面试题及答案整理,最新面试题

Android中Intent的作用及分类 Intent在Android中用作组件之间传递信息&#xff0c;它可以用于启动活动(activity)、服务(service)和发送广播(broadcast)。Intent主要分为显式Intent和隐式Intent两大类。 1、显式Intent&#xff1a; 直接指定了要启动的组件名称&#xff08;比如…

Lua中文语言编程源码-第一节,更改llex.c词法分析器模块, 使Lua支持中文关键词。

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/CLua.git 在src文件夹下的llex.c&#xff0c;是Lua的词法分析器模块。 增加中文保留字标识符列表&#xff0c;保留英文保留字标识符列表。 搜索“ORDER RESERVED”&#xff0c;将原始代码 …

嵌入式硬件设计(一)|利用 NodeMCU-ESP8266 开发板和继电器结合APP“点灯•blinker”制作Wi-Fi智能开关(附有关硬件详细资料)

概述 本文主要讲述利用 NodeMCU-ESP8266 开发板和继电器通过手机 APP “ 点灯 • Blinker ” 制作一款能够由手机控制的WiFi 智能开关&#xff0c;从而实现智能物联。NodeMCU 是基于 Lua 的开源固件&#xff0c;ESP8266-NodeMCU是一个开源硬件开发板&#xff0c;支持WiFi功能&a…

IDEA创建Sping项目只能勾选17和21,没有Java8?

解决办法: 替换创建项目的源 我们只知道IDEA页面创建Spring项目&#xff0c;其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。将https://start.spring.io/或者http://start.springboot.io/替换为 https://start.aliyun.com/

OpenCV系列文章目录(持续更新中......)

引言&#xff1a; OpenCV是一个开源的计算机视觉库&#xff0c;由英特尔公司开发并开源的一组跨平台的C函数和少量的C函数组成&#xff0c;用于实时图像处理、计算机视觉和机器学习等应用领域。OpenCV可以在包括Windows、Linux、macOS等各种操作系统平台上使用&#xff0c;具…

Github Copilot 工具,无需账号,一键激活

① 无需账号&#xff0c;100%认证成功&#xff01;0风险&#xff0c;可联网可更新&#xff0c;&#xff0c;支持copilot版本升级&#xff0c;支持chat ② 支持windows、mac、linux系统等设备 ③一号通用&#xff0c;支持所有IDE(AppCode,CLion,DataGrip,GoLand,IntelliJ IDEA …

面向对象(C# )

面向对象&#xff08;C# &#xff09; 文章目录 面向对象&#xff08;C# &#xff09;ref 和 out传值调用和引用调用ref 和 out 的使用ref 和 out 的区别 结构体垃圾回收GC封装成员属性索引器静态成员静态类静态构造函数拓展方法运算符重载内部类和分布类 继承里氏替换继承中的…

图像处理ASIC设计方法 笔记11 像素误差与字长优化

P108 P105 定点误差分析与字长优化 1 像素误差是什么原因导致的? 在本书所说的算法中,像素误差是由几次定点运算累加导致的: 首先由行(列)号与定点正弦/正切值计算出该行(列)的小数平移量,然后将这些小数平移量截取一定字长用来计算插值核,再将这些插值核也截取一…

python统计分析——单变量分布之量化变异度

参考资料&#xff1a;python统计分析【托马斯】 1、极差 极差仅仅是最高值和最低值之间的差异。使用函数为&#xff1a;numpy.ptp()。代码如下&#xff1a; import numpy as npxnp.arange(1,11) np.ptp(x) ptp代表“峰值到峰值”&#xff0c;唯一应该注意的异常值&#xff0c…

LCD屏的应用

一、LCD屏应用 Linux下一切皆文件&#xff0c;我们的LCD屏再系统中也是一个文件&#xff0c;设备文件&#xff1a;/dev/fb0。 如果要在LCD屏显示数据&#xff0c;那我们就可以把数据写入LCD屏的设备文件。 1.显示颜色块 LCD屏分辨&#xff1a;800*480 像素 32位:说明一个像…

HarmonyOS NEXT应用开发—发布图片评论

介绍 本示例将通过发布图片评论场景&#xff0c;介绍如何使用startAbilityForResult接口拉起相机拍照&#xff0c;并获取相机返回的数据。 效果图预览 使用说明 通过startAbilityForResult接口拉起相机&#xff0c;拍照后获取图片地址。 实现思路 创建CommentData类&#…

CSS中如何设置单行或多行内容超出后,显示省略号

1. 设置超出显示省略号 css设置超出显示省略号可分两种情况&#xff1a; 单行文本溢出显示省略号…多行文本溢出显示省略号… 但使用的核心代码是一样的&#xff1a;需要先使用 overflow:hidden;来把超出的部分隐藏&#xff0c;然后使用text-overflow:ellipsis;当文本超出时…

在react中使用tailwindcss

安装tailwind css npm i -D tailwindcssnpm:tailwindcss/postcss7-compat postcss^7 autoprefixer^9安装 CRACO 由于 Create React App 不能让您覆盖原生的 PostCSS 配置&#xff0c;所以我们还需要安装 CRACO 才能配置 Tailwind。 npm install craco/craco配置CRACO 在项目根…

贪心算法(算法竞赛、蓝桥杯)--糖果传递

1、B站视频链接&#xff1a;A31 贪心算法 P2512 [HAOI2008] 糖果传递_哔哩哔哩_bilibili 题目链接&#xff1a;[HAOI2008] 糖果传递 - 洛谷 #include <bits/stdc.h> using namespace std; const int N1000005; int n,a[N],c[N]; long long b,ans;int main(){scanf(&quo…

游戏引擎中的动画基础

一、动画技术简介 视觉残留理论 - 影像在我们的视网膜上残留1/24s。 游戏中动画面临的挑战&#xff1a; 交互&#xff1a;游戏中的玩家动画需要和场景中的物体进行交互。实时&#xff1a;最慢需要在1/30秒内算完所有的场景渲染和动画数据。&#xff08;可以用动画压缩解决&am…

【C语言初阶(五)】数组

❣博主主页: 33的博客❣ ▶文章专栏分类: C语言从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1. 前言2.一维数组的概念3.一维数组的创建和初始化3.1数组的创建3.2数组的初始化3.3数组的类型 4.一维数组的使用4.1数组下标4.2数组元素打印4.4数组元…

算法——前缀和之除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和

这几道题对于我们前面讲过的一维、二维前缀和进行了运用,包含了面对特殊情况的反操作 目录 4.除自身以外数组的乘积 4.1解析 4.2题解 5.和为K的子数组 5.1解析 5.2题解 6.和可被K整除的子数组 6.1解析 6.2题解 7.连续数组 7.1题解 7.2题解 8.矩阵区域和 8.1解析 …
最新文章