css揭秘 7 结构与布局

news2024/11/15 8:44:20

36 自适应内部元素

众所周知,如果不给元素指定一个具体的 height,它就会自动适应其
内容的高度。假如我们希望 width 也具有类似的行为,该怎么做呢?

<p>Some text [...]</p>
<figure>
 <img src="adamcatlace.jpg" />
 <figcaption>
 The great Sir Adam Catlace was named after
 Countess Ada Lovelace, the first programmer.
 </figcaption>
</figure>
<p>More text [...].</p>

我们希望figure的宽度和图片一样保持自适应,。把图1变成图2的效果

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

你可能会想到的方法:

  • 让figure元素浮动
  • 对figure应用display:inline-block
  • 给figure设置一个固定的宽度

很可惜这些方法都差强人意,有没有一种合适的 CSS 技巧可以解决这个问题?我们是不是应该放弃这条路,改用脚本来动态地为每个 figure 设置宽度?

解决方法

CSS 内部与外部尺寸模型(第三版)(http://w3.org/TR/css3-sizing)是
一个相对较新的规范,它为 width 和 height 属性定义了一些新的关键字。
其中min-content,将解析为这个容器内部最大的不可断行元素的宽度(即最宽的单词、图片或具有固定宽度的盒元素),这正是我们所希望的。

figure {
 width: min-content;
 margin: auto;
}

给旧版的浏览器提供一个平稳的回退样式

figure {
 max-width: 300px;
 max-width: min-content;
 margin: auto;
}
figure > img { max-width: inherit; }

37 精确控制表格列宽

尽管多年以前我们就不再使用表格来完成页面布局了,但表格在现代网
站中仍然有其不可替代的位置。尽管有时候它们看起
来很方便,但对于不固定的内容来说,它们的布局其实是很难预测的。这是
因为列宽根据其内容进行调整,即使我们显式地指定了 width,也只能起到
类似提示的作用。

解决方案

解决方案来自于 CSS 2.1 中一个鲜为人知的属性,叫作 table-layout。
它的默认值是 auto,其行为模式被称作自动表格布局算法,也就是我们最为熟悉的表格布局行为(就像图 7-5 那样)。不过,它还接受另外一个值fixed,这个值的行为要明显可控一些。

table {
 table-layout: fixed;
 width: 100%;
}

例如:
在这里插入图片描述

.users {
    table-layout: fixed;
    width: 100%;
    white-space: nowrap;
}
.users td {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Column widths are based on these cells */
.row-ID {
    width: 10%;
}
.row-name {
    width: 40%;
}
.row-job {
    width: 30%;
}
.row-email {
    width: 20%;
}
<table class="users" border="1">
    <thead>
        <tr>
            <th class="row-1 row-ID">ID</th>
            <th class="row-2 row-name">Name</th>
            <th class="row-3 row-job">Job</th>
            <th class="row-4 row-email">Email</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>0001</td>
            <td>Johnny Five</td>
            <td>Robotin'</td>
            <td>need@input.com</td>
        </tr>
        <tr>
            <td>0002</td>
            <td>Super Superlonglastnamesmith</td>
            <td>Doin' stuff</td>
            <td>doing@stuff.com</td>
        </tr>
    </tbody>
</table>

38 根据兄弟元素的数量来设置样式

在某些场景下,我们需要根据兄弟元素的总数来为它们设置样式。最常
见的场景就是,当一个列表不断延长时,通过隐藏控件或压缩控件等方式来
节省屏幕空间,以此提升用户体验。
在这里插入图片描述

解决方案

思路:
:only-child 等 效 于 :first-child:last-child, 道理很简单:如果第一项同时也是最后一项,那从逻辑上来说它就是唯一的那一项。

你能猜到li:first-child:nth-last-child(4) 会命中哪些元素吗?
一个正好有四个列表项的列表中的第一个列表项

  • 选中有4个li的列表的第一项
.my-ul li:first-child:nth-last-child(4) {
    background: #fce7f8;
}

在这里插入图片描述

  • 选中有4个li的列表的所有项
.my-ul1 li:first-child:nth-last-child(4),
.my-ul1 li:first-child:nth-last-child(4) ~ li {
    background: #fce7f8;
}

在这里插入图片描述

  • 当列表至少包含四项时,命中所有列表项
.my-ul2 li:first-child:nth-last-child(n + 4),
.my-ul2 li:first-child:nth-last-child(n + 4) ~ li {
    background: #fce7f8;
}

在这里插入图片描述

  • 当列表最多包含四项时,命中所有列表项
.my-ul3 li:first-child:nth-last-child(-n + 4),
.my-ul3 li:first-child:nth-last-child(-n + 4) ~ li {
    background: #fce7f8;
}

在这里插入图片描述

  • 当列表包含2~6项时,命中所有列表项
.my-ul4 li:first-child:nth-last-child(n + 2):nth-last-child(-n + 6),
.my-ul4 li:first-child:nth-last-child(n + 2):nth-last-child(-n + 6) ~ li {
    background: #fce7f8;
}

在这里插入图片描述

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

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

相关文章

苹果裁员与服务战略调整:科技巨头应对市场挑战的新动向

引言 近期&#xff0c;苹果公司的一系列动态引发了业界的广泛关注。从秋季发布会的定档到高层人事变动&#xff0c;再到服务部门的裁员决策&#xff0c;苹果正以前所未有的姿态调整其业务布局&#xff0c;以应对日益激烈的市场竞争和技术变革。 一、服务部门裁员&#xff1a;战…

Python+VScode 两个不同文件夹里的py文件相互调用|python的模块调用|绝对导入

第一次用VScode写python遇到了模块无法识别的问题&#xff0c;搞了一整天&#xff0c; 上网查&#xff0c;chatGPT都不行&#xff0c;现在时解决了。 首先项目结构如下&#xff0c;四个文件夹&#xff0c;四个py文件 代码&#xff1a; def f1fun():print("f1") de…

智能交通最新论文分享┆使用STG-Mamba进行时空图数据预测

论文简介 本推文主要介绍了一种基于选择性状态空间模型的时空图学习方法&#xff0c;论文标题为《STG-Mamba: Spatial-Temporal Graph Learning via Selective State Space Model》&#xff0c;第一作者为Lincan Li。时空图数据是一类广泛存在于日常生活中的非欧几里得数据&am…

双系统ubuntu引导项丢失如何修复

本来是win11和ubunt22.04的双系统&#xff0c;但是现在工作需要做一个外接固态里安装ubunt22.04去安装autoware, 按照装双系统的方法也装上了&#xff0c;引导项不知怎么回事&#xff0c;被设置在外接固态硬盘中了&#xff0c;导致开机必须插上外接固态才能进入引导项&#xff…

企业源代码加密软件有哪些?12款超好用的源代码加密软件推荐

在当今数字化的商业环境中&#xff0c;源代码作为企业核心竞争力的象征&#xff0c;保护其不被泄露和篡改显得尤为重要。源代码加密软件能够有效防止未经授权的访问、使用或分发&#xff0c;从而确保企业的知识产权和商业秘密不受侵害。本文将为您推荐12款超好用的源代码加密软…

基于yolov8的飞鸟检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的飞鸟检测系统是一个利用深度学习技术进行鸟类识别的应用。YOLOv8作为目前最先进的实时目标检测模型之一&#xff0c;以其高准确率和快速检测能力著称。下面简要介绍一个基于Python实现的飞鸟检测系统的核心要点。 首先&#xff0c;你需要安装必要的…

Linux 系统收发网络包

国际标准网络模型 国际标准网络模型通常指的是 OSI&#xff08;Open Systems Interconnection&#xff09;参考模型&#xff0c;它是一个由国际标准化组织&#xff08;ISO&#xff09;定义的网络通信模型&#xff0c;用于指导网络协议的设计和实现。该模型将计算机网络通信划分…

若依后端添加子模块swagger分区

前言&#xff1a; 因为接口太多无法快速的找到对应模块的接口swagger文档&#xff0c;所以在对应需要隔离显示的子模块的swagger接口配置。 1、XXXWebConfiguration类配置 例&#xff1a;system模块 需要在controller包的同级目录下创建 framework.web.config.XXXWebConfigur…

94522

springboot 广州应用科技学院的教室管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时…

蓝牙ble建立配对、绑定、连接的流程详解

目录 1. 连接(Connection) 广播和扫描 设备发现 连接请求 连接建立 2. 配对(Pairing) 配对请求和响应 配对方法 密钥生成和分发 加密连接 3. 绑定(Bonding) 密钥存储 后续连接 详细流程图 蓝牙低功耗(Bluetooth Low Energy, BLE)设备之间的配对、绑定和连…

机器学习的入门笔记(第十六周)

本周观看了B站up主霹雳吧啦Wz的图像处理的课程&#xff0c; 课程链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频 下面是本周的所看的课程总结。 MobileNet V2的代码实现 1、定义ConvBNReLU类&#xff0c;将卷积操作&#xff0c;批量归一化操作&…

USB network超全解析,揭秘USB Server背后的黑科技!

一、技术概述 USB Network技术基于USB协议&#xff0c;通过在网络层实现USB设备的虚拟化和共享&#xff0c;使得用户可以在不同的物理位置通过网络访问和操作USB设备。 这种技术打破了传统USB接口的物理限制&#xff0c;极大地扩展了USB设备的使用范围和灵活性。 二、工作原…

DHU 函数 判断质数

思路及代码 #include<iostream> using namespace std;//function: is_prime_number() int is_prime_number(int n){if (n 1){return 0;}for (int i 2; i < n-1; i){if (n%i 0){return 0;}}return 1; } int main(){ //input 多组 Nint N;while(cin >> N){//s…

C#入门篇7(面向对象)

目录 一、值传递和引用传递 1、概念 2、主要区别 3、用法 二、字符串 1、字符串的不可变性可以将字符串看作只读字符数组 2、字符串提供的各种方法 三、继承 1、 概念 2、格式 3、示例 4、子类继承于父类什么&#xff1f; 5、继承的特性 6、查看类图 四、new关键字…

[适合新手的NLP项目]基于机器学习的垃圾信息识别分类

1.项目背景 电子邮件和短信中的垃圾信息是现代通信中常见的问题之一。随着互联网的普及和移动设备的广泛使用&#xff0c;垃圾信息的传播途径和数量也在迅速增加&#xff0c;这些垃圾信息不仅影响用户的日常通信体验&#xff0c;还可能带来严重的安全威胁&#xff0c;如钓鱼攻…

IP地址与SSL证书:保障网络安全的关键

在数字时代&#xff0c;网络安全至关重要&#xff0c;而SSL&#xff08;安全套接层&#xff09;证书作为加密用户与服务器之间数据传输的利器&#xff0c;扮演着不可或缺的角色。然而&#xff0c;谈及SSL证书时&#xff0c;一个常见的误区是它们通常与域名绑定&#xff0c;而非…

逻辑长路短路“或“运算

长路或运算&#xff08;|&#xff09; 1、长路或运算的运算符&#xff1a; 2、长路或运算在两边都是整数时&#xff0c;是逐位或运算&#xff1b;在两边是关系运算时&#xff0c;是逻辑运算。 3、长路或运算会将两边的关系运算结果都计算出来 【示例】5*3>12 | 4<3…

【运维自动化-配置平台】动态分组功能使用场景

蓝鲸智云配置平台&#xff0c;以下简称配置平台 配置平台的动态分组功能是业务纬度下对同类资源实例的聚合&#xff0c;并且能动态的跟随符合条件的资源实例增多或减少&#xff0c;例如负责人是admin的主机聚合。目前动态分组的结果聚合支持两种 主机集群 主机类型的动态分组…

高性价比的创新选择:气膜水族馆—轻空间

在现代城市规划和旅游发展中&#xff0c;水族馆作为独具特色的休闲娱乐场所&#xff0c;深受游客和投资者的青睐。然而&#xff0c;传统水族馆的建设和维护成本高昂&#xff0c;让许多潜在投资者望而却步。气膜水族馆凭借其高性价比和多重优势&#xff0c;成为了水族馆建设领域…

【小白必备】Meta祭出三篇最详尽的LLaMA微调指南

开源&#xff0c;就要开的彻彻底底。 这不&#xff0c;Meta一连放出三篇技术文章&#xff0c;从大模型适配方法出发&#xff0c;介绍了&#xff1a; 如何使用特定领域数据微调LLM&#xff0c;如何确定微调适配自己的用例&#xff0c;以及如何管理良好训练数据集的经验法则。 接…