【CSS in Depth 2 精译_020】3.3 元素的高度

当前内容所在位置(可进入专栏查看其他译好的章节内容)

  • 第一章 层叠、优先级与继承(已完结)
    • 1.1 层叠
    • 1.2 继承
    • 1.3 特殊值
    • 1.4 简写属性
    • 1.5 CSS 渐进式增强技术
    • 1.6 本章小结
  • 第二章 相对单位(已完结)
    • 2.1 相对单位的威力
    • 2.2 em 与 rem
    • 2.3 告别像素思维
    • 2.4 视口的相对单位
    • 2.5 无单位的数值与行高
    • 2.6 自定义属性
    • 2.7 本章小结
  • 第三章 文档流与盒模型
    • 3.1 常规文档流(已完结)
      • 3.1.1 内容水平居中
      • 3.1.2 逻辑属性
      • 3.1.3 用好逻辑属性的简写形式
    • 3.2 盒模型(已完结)
      • 3.2.1 避免使用魔数
      • 3.2.2 调整盒模型
      • 3.3.3 全局设置 border-box
    • 3.3 元素的高度 ✔️
      • 3.3.1 控制溢出行为 ✔️
      • 3.3.2 百分比高度的备选方案 ✔️
      • 3.3.3 使用 min-height 和 max-height ✔️
    • 3.4 负的外边距(精译中 ⏳)

文章目录

    • 3.3 元素的高度
      • 3.3.1 控制溢出行为
      • 3.3.2 百分比高度的备选方案
      • 3.3.3 使用 min-height 和 max-height

3.3 元素的高度

元素的高度(即块的尺寸)处理起来可能会比较麻烦。按照常规流的设计,宽度是受限的,而高度则不受限。因此,容器的高度是由其内容天然决定的,而非容器自身决定。通常情况下,最好避免给元素(尤其对包含大量内容的元素)设置确切的高度,尽管时常会有这样的冲动。

3.3.1 控制溢出行为

当元素高度被设为一个固定值,内容就可能 溢出(overflowing 容器。当内容在限定区域放不下而被迫渲染到父元素外面时,就会发生这种现象,如图 3.10 所示。文档流不考虑溢出的情况,容器后面的所有内容都会渲染到溢出内容的上面(译注:原书这里并没有配图,源代码中也没有相应页面,因此我手动补了一个截图 3.10.1,以方便理解)。

图 3.10 内容溢出了容器

图 3.10 内容溢出了容器

图 3.10.1 容器后续内容渲染到溢出内容的上方示意图

图 3.10.1 容器后续内容渲染到溢出内容的上方示意图

overflow 属性可以控制溢出内容的行为,该属性支持以下 5 个值:

  • visible(默认值)—— 所有内容都可见,即使溢出容器边缘。
  • hidden —— 溢出容器内边距边缘的内容将被裁剪而不可见;用户也无法通过正常滚动看到这些内容,但仍能通过 JavaScript 编程的方式来滚动该元素。
  • clip —— 类似于 hidden ,但通过编程实现滚动的方式也被禁用了。
  • scroll —— 容器出现滚动条,用户可以滚动查看剩余内容。在某些操作系统中,即便内容都可见,也会出现水平和垂直两种滚动条,只是在这种情况下滚动条会被禁用(置灰)。
  • auto —— 仅在内容溢出容器时出现滚动条。

图 3.11 展示了内容溢出时四种 overflow 取值下的容器渲染情况。

图 3.11 从左至右 overflow 取值分别为 visible、hidden、scroll、auto 的对比效果

图 3.11 从左至右 overflow 取值分别为 visible、hidden、scroll、auto 的对比效果

通常情况下,我更倾向使用 auto 而非 scroll,因为在大多数情况下,我并不想让滚动条一直出现,除非万不得已。

水平方向的溢出

除了垂直溢出,内容也可能在水平方向溢出。比如,当在一个很窄的容器中放入一条很长的 URL 地址;或者在一个小型移动设备上查看一个包含很多列的表格的时候。此时适用的溢出规则与垂直溢出时一致。

也可以使用 overflow-x 属性单独控制水平方向的溢出,或者用 overflow-y 来控制垂直溢出。这些属性都支持 overflow 的所有值。但若将 xy 方向显式声明为不同的取值时,一旦其中一个为 hidden,往往会产生不可预知的效果;在这种情况下,应该改用 clip

使用滚动条时务须谨慎。浏览器已经自带一个滚动条来滚动页面,如果网页内部再嵌套多个滚动区,用户体验可能会很糟糕。如果用户使用鼠标滚轮向下滚动页面,当鼠标到达一个较小的滚动区,滚轮就会停止滚动页面,转而去滚动较小的区域。

3.3.2 百分比高度的备选方案

用百分比来指定高度也有问题。百分比参考的是元素包含块(containing block)的大小,而容器的高度通常是由子元素的高度决定的。这样就产生了循环定义(circular definition),浏览器没法解析,从而会忽略该声明。想让百分比高度生效,就必须给父元素一个确切的高度。

百分比高度的一个有效应用场景是用在绝对定位的元素上,此时元素的尺寸与其容器息息相关。本书后续章节会专门介绍定位相关的知识。

开发者往往会在下面两个应用场景中,因为尝试百分比高度而陷入困境:

第一个场景,是想让容器填满整个屏幕。这时可能需要将 height: 100% 给到某个元素,进而到其容器,并沿着 DOM 树一直向上,直到将它应用到 <body><html> 元素。其实更好的方案是使用视口相对单位(viewport-relative units,相关内容第二章已有论述),因为此时无非是想要一个 100svh/lvh 的高度效果。

第二个应用场景,是需要创建等高列的时候。页面设计往往需要两个或多个元素并排且具有相同的高度。而让一个元素的尺寸去参照同级别相邻元素的做法,在 CSS 的历史上是一件非常棘手的事。要实现这一需求,以前需要一些非常取巧的手段;而如今只要应用更现代的技术就能轻松搞定。在后续介绍 flexbox 弹性盒布局和 grid 网格布局的相关章节中,我们将一探究竟。

3.3.3 使用 min-height 和 max-height

min-heightmax-height(以及对应的逻辑属性 min-block-sizemax-block-size)是两个非常有用的属性(properties)。通过这两个属性设置一个最小或最大值,就能让元素在给定范围内缩放自如,不用再显式定义高度了。

如果要将一张大图放在一大段文字后面,但又担心图片溢出容器,就可以用 min-height 给容器设置一个最小高度,而不必指定确切的高度。这么一来,该容器的高度最小也不会低于设定的值;要是内容过多,浏览器则会让其高度自然升高,以免内容溢出。

如图 3.12 所示的三个元素,左侧的元素没有设置 min-height,因此高度是由内容自然决定的;其余两个元素的 min-height 均设为 3em。对于中间的元素,自然高度虽然不足 3em,但 min-height 将其补到了 3em;而右边的元素内容够多,其高度已然超过了 3em,此时容器则会自然升高来容纳它们。

图 3.12 三个元素、一个没有指定高度、另两个设置了 min-height 为 3em 的效果对比

图 3.12 三个元素、一个没有指定高度、另两个设置了 min-height 为 3em 的效果对比

如果要在容器上设置高度 height,大多数情况下我都会改用 min-height。这样做往往就不必为后续的溢出问题伤脑筋了。

相应地,属性 max-height 则会让元素尺寸自然增大到某个值,一旦达到该值,元素就不再升高,其内容也将随之溢出。类似的属性还有 min-widthmax-width(以及 min-inline-sizemax-inline-size),用于限定元素的宽度。

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

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

相关文章

在 CI/CD 中怎么使用 Docker 部署前端项目?

本项目代码已开源&#xff0c;具体见&#xff1a; 前端工程&#xff1a;vue3-ts-blog-frontend 后端工程&#xff1a;express-blog-backend 数据库初始化脚本&#xff1a;关注公众号程序员白彬&#xff0c;回复关键字“博客数据库脚本”&#xff0c;即可获取。 前言 在上一篇文…

快速上手AI指令:打造个性化智能交互体验的全面指南

快速上手AI指令&#xff1a;打造个性化智能交互体验的全面指南 一、初识文心一言1.1 文心一言简介1.2 文心一言的特点 二、准备工作2.1 获取访问权限2.2 熟悉界面布局2.3 了解基础指令 三、基础指令操作3.1 问答互动3.2 文本创作3.3 任务规划 四、进阶指令操作4.1 复杂查询4.2 …

Python酷库之旅-第三方库Pandas(035)

目录 一、用法精讲 106、pandas.Series.iloc方法 106-1、语法 106-2、参数 106-3、功能 106-4、返回值 106-5、说明 106-6、用法 106-6-1、数据准备 106-6-2、代码示例 106-6-3、结果输出 107、pandas.Series.__iter__魔法方法 107-1、语法 107-2、参数 107-3、…

Java程序的故障排查

文章目录 Linux命令关机/重启/注销系统信息和性能查看磁盘和分区⽤户和⽤户组⽹络和进程管理常⻅系统服务命令⽂件和⽬录操作⽂件查看和处理打包和解压RPM包管理命令YUM包管理命令DPKG包管理命令APT软件⼯具 JDK命令jpsjstatjinfojmapjhatjstackjcmdjconsole 分析工具VisualVME…

自动驾驶-预测概览

通过生成一条路径来预测一个物体的行为&#xff0c;在每一个时间段内&#xff0c;为每一辆汽车重新计算预测他们新生成的路径&#xff0c;这些预测路径为规划阶段做出决策提供了必要信息 预测路径有实时性的要求&#xff0c;预测模块能够学习新的行为。我们可以使用多源的数据…

超简单安装指定版本的clickhouse

超简单安装指定版本的clickhouse 命令执行shell脚本 idea连接 命令执行 参考官网 # 下载脚本 wget https://raw.githubusercontent.com/183461750/doc-record/d988dced891d70b23c153a3bbfecee67902a3757/middleware/data/clickhouse/clickhouse-install.sh # 执行安装脚本(中…

【漏洞复现】Netgear WN604 downloadFile.php 信息泄露漏洞(CVE-2024-6646)

0x01 产品简介 NETGEAR WN604是一款由NETGEAR&#xff08;网件&#xff09;公司生产的无线接入器&#xff08;或无线路由器&#xff09;提供Wi-Fi保护协议&#xff08;WPA2-PSK, WPA-PSK&#xff09;&#xff0c;以及有线等效加密&#xff08;WEP&#xff09;64位、128位和152…

亲测--linux下安装ffmpeg最新版本---详细教程

下载地址 Download FFmpeg 下载最新的https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.xz 上传到服务器 解压 tar xvf ffmpeg-7.0.1.tar.xz 编译 cd ffmpeg-7.0.1 ./configure --prefix=/usr/local/ffmpeg make && make install 报错: 解决:在后面加 跳过检测…

【Word】——小技巧

1.PDF相关转换word PDF转换成Word在线转换器 - 免费 - CleverPDF 2. word插入公式 1.软件推荐&#xff08;免费&#xff09; 可直接将图片&#xff0c;截屏公式转为word标准规范形式 2.网址推荐 在线LaTeX公式编辑器-编辑器 &#xff08;每天有免费使次数&#xff09; 3.…

Matlab演示三维坐标系旋转

function showTwo3DCoordinateSystemsWithAngleDifference() clear all close all % 第一个三维坐标系 origin1 [0 0 0]; x_axis1 [1 0 0]; y_axis1 [0 1 0]; z_axis1 [0 0 1];% 绕 x 轴旋转 30 度的旋转矩阵 theta_x 30 * pi / 180; rotation_matrix_x [1 0 0; 0 cos(th…

Linux服务器配置Python+PyTorch+CUDA深度学习环境

参考博主 Linux服务器配置PythonPyTorchCUDA深度学习环境_linux cuda环境配置-CSDN博客 https://blog.csdn.net/NSJim/article/details/115386936?ops_request_misc&request_id&biz_id102&utm_termlinux%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E6%8C%89pytorch%20…

4核16G服务器支持多少人?4C16G服务器性能测评

租赁4核16G服务器费用&#xff0c;目前4核16G服务器10M带宽配置70元1个月、210元3个月&#xff0c;那么能如何呢&#xff1f;配置为ECS经济型e实例4核16G、按固定带宽10Mbs、100GB ESSD Entry系统盘。 那么问题来了&#xff0c;4C16G10M带宽的云服务器可以支持多少人同时在线&…

C++ ───List的使用

目录 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list的迭代器失效 1.1 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&…

2024年汉字小达人比赛区级活动学校选拔的题型预测和真题示例

上一篇文章&#xff0c;好真题网为大家介绍了2024年上海市小学生汉字小达人比赛活动的轮次、举办日期、参赛对象、报名方式、费用和如何备考的建议等。 有家长朋友问汉字小达人考试的内容和范围是什么&#xff0c;有哪些题型&#xff0c;以及汉字小达人比赛和上海市小学生古诗…

PDF压缩软件电脑版 电脑pdf压缩怎么压缩文件

在数字化时代&#xff0c;pdf文件因其良好的兼容性和稳定性&#xff0c;已成为工作与生活中不可或缺的文件格式。然而&#xff0c;随着内容的增多&#xff0c;pdf文件的体积也随之增大&#xff0c;给文件的传输和存储带来了一定的困扰。本文将为你详细介绍如何在电脑上压缩pdf文…

关于Redis的最常见的十道面试题

面试题一&#xff1a;Redis为什么执行这么快&#xff1f; Redis运行比较快主要原因有以下几种&#xff1a; 纯内存操作&#xff1a;Redis将所有数据存储在内存中&#xff0c;这意味着对数据的读写操作直接在内存中运行&#xff0c;而内存的访问速度远远高于磁盘。这种设计使得…

LNMP架构部署及应用

部署LNMP架构流程 1.安装Nginx&#xff08;上传软件包&#xff0c;执行脚本&#xff09; yum -y install pcre-devel zlib-devel gcc gcc useradd -M -s /sbin/nologin nginx tar zxf nginx-1.12.0.tar.gz cd nginx-1.12.0 ./configure --prefix/usr/local/nginx --usernginx…

python原型链污染

python原型链污染 ​ 后面会有跟着Article_kelp慢慢操作的&#xff0c;前面先面向题目学习。 背景&#xff1a; ​ 国赛遇到了这个考点&#xff0c;然后之后的DASCTF夏季挑战赛也碰到了&#xff0c;抓紧粗略学一手&#xff0c;学了JavaScript之后再深究原型链污染。 简介&a…

传输层和网络层的关系,ip协议+ip地址+ip报头字段介绍(4位TOP字段,8位生存时间(ttl)),ip地址和端口号的作用

目录 传输层和网络层的关系 引入 介绍 ip协议 介绍 ip地址 引入 数据传递过程 举例(ip地址的作用) ip报头 格式 4位版本号 ip地址不足的问题 8位服务类型 4位TOP(type of service)字段 最小延时 最大吞吐量 4位首部长度 16位总长度 8位协议号 首部校验和…

《样式设计001:表单的2种提交方式》

描述&#xff1a;在开发小程序过程中&#xff0c;发现一些不错的案例&#xff0c;平时使用也比较多&#xff0c;稍微总结了下经验&#xff0c;以下内容可以直接复制使用&#xff0c;希望对大家有所帮助&#xff0c;废话不多说直接上干货&#xff01; 一&#xff1a;表单的2种…