弹性盒子的学习
/*·弹性盒子内其他的属性和作用·*/
1、flex-grow
定义项目的放大比例,默认值为 0。如果有剩余空间,项目将根据该值进行放大。
2、flex-shrink
定义项目的缩小比例,默认值为 1。如果空间不足,项目将根据该值进行缩小。
3、flex-basis
定义在分配剩余空间之前,项目占据的主轴空间的大小。可以是具体的长度值(如 100px)或 auto。
4、flex
是 flex-grow、flex-shrink 和 flex-basis 的简写形式。常用的简写形式如 flex: 1;,表示项目可以放大并占据剩余空间。
5、align-self
允许单个项目在交叉轴上有不同的对齐方式。可选值与 align-items 相同。
5、visibility
虽然 visibility 属性并不会改变元素的布局行为,但它可以控制元素的可见性。设置为 hidden 会使元素不可见,但仍然占据空间。
.box {
visibility: hidden; /* 元素不可见,但仍占据空间 */
}
6、2使用 opacity 属性
opacity 属性可以控制元素的透明度。设置为 0 会使元素完全透明,但仍然在文档流中占据空间。
.box {
opacity: 0; /* 完全透明,但仍占据空间 */
}
7、 使用 position 属性
position 属性可以控制元素在页面中的定位方式。常用的值有 static、relative、absolute 和 fixed。使用 absolute 或 fixed 定位的元素会脱离文档流,因此不会影响其他元素的布局。
.box {
position: absolute; /* 脱离文档流 */
top: 20px; /* 距离顶部20像素 */
left: 50px; /* 距离左侧50像素 */
}
8、响应式设计
使用媒体查询(media queries)可以创建响应式布局,使元素在不同屏幕尺寸下表现良好。
@media (max-width: 600px) {
.box {
display: block; /* 在小屏幕上变为块级元素 */
width: 100%; /* 宽度设为100% */
}
}
9、使用 CSS Grid
CSS Grid 布局是一个强大的布局系统,允许你创建复杂的布局。你可以将元素放置在网格中,控制行和列的大小。
.container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 创建三列 */
gap: 10px; /* 设置列间距 */
}
/*其他方式实现横向布局及其问题*/
1、设置足够宽的宽度,然后将li的float属性设置为left。意思就是使li元素向左浮动排列
ul {
width: 2000px; //设置足够的宽度
overflow: hidden;
white-space:nowrap; //处理块元素中的空白符和换行符的,这个属性保证图片不换行
}
li{
list-style: none;
float: left; //向左排列
margin-left: 15px;
width: 130px;
}
问题:
(1)、ul 的宽度设置问题
如果 ul 的宽度设置为 2000px,而 li 的总宽度(包括 margin)超过了这个宽度,可能会导致 ul 超出父容器的宽度,出现水平滚动条。
解决方案:可以考虑使用 max-width 或者使用 display: flex 来自动调整 ul 的宽度。
(2)、float 布局的清除问题
使用 float 属性时,父元素(在此例中为 ul)可能会因为没有包含浮动元素而导致高度为 0。这会影响布局,尤其是在有背景色或边框的情况下。
解决方案:可以使用 overflow: hidden;或在 ul 中添加一个清除浮动的元素(例如,一个空的 div),或者使用 CSS 的 clearfix 技巧。
2、使用 table 布局
<style>
.table-container {
display: table; /* 设为表格 */
width: 100%; /* 容器宽度 */
}
.table-row {
display: table-row; /* 设为表格行 */
}
.table-cell {
display: table-cell; /* 设为表格单元 */
padding: 20px;
background-color: lightpink;
margin: 5px; /* 项目间距 */
}
</style>
问腿:
(1)、语义化问题
使用 <table> 元素的主要目的是为了展示表格数据,而不是用于布局。使用表格进行布局会导致 HTML 结构不够语义化,影响可读性和可维护性。
现代网页设计通常推荐使用 CSS Flexbox 或 Grid 来实现布局,这样可以保持 HTML 的语义性。
(2)、 响应式设计的困难
使用表格布局时,调整布局以适应不同屏幕尺寸可能会比较困难。表格的列宽和行高通常是固定的,可能不适合在各种设备上显示。
Flexbox 和 Grid 提供了更灵活的方式来处理响应式设计,可以更容易地适应不同的屏幕尺寸。
(3)、样式控制的限制
表格布局在样式控制上相对较为有限。虽然可以通过 CSS 修改表格的外观,但对于复杂的布局需求,可能会显得不够灵活。
使用 CSS Flexbox 或 Grid,可以更方便地控制元素的对齐、间距和排列方式。
(4)、可访问性问题
使用表格进行布局可能会影响屏幕阅读器等辅助技术的可访问性,导致用户体验下降。
3、使用 CSS Multi-column 布局
<style>
.multi-column-container {
column-count: 3; /* 列数 */
column-gap: 20px; /* 列间距 */
}
.multi-column-item {
break-inside: avoid; /* 避免在列中断开 */
padding: 20px;
background-color: lightgray;
margin: 5px; /* 项目间距 */
}
</style>
问题:
(1)、列宽和内容控制
多列布局的列宽通常是自动计算的,可能会导致列宽不均匀,特别是在内容长度不一致的情况下。这可能会影响整体的视觉效果。
解决方案:可以通过设置 column-width 属性来指定列的最小宽度,或者使用 column-count 来限制列数。
(2)、列间距
使用多列布局时,控制列之间的间距可能不够灵活。虽然可以使用 column-gap 属性来设置间距,但在某些情况下可能无法满足设计需求。
解决方案:在设计时要考虑到列间距,并适当调整 column-gap 的值。
(3)、 内容溢出
如果某一列的内容超出列的高度,可能会导致内容溢出,影响布局的整洁性。
解决方案:可以使用 overflow 属性来处理溢出内容,或者确保每列的内容高度相对均匀。
(4)、不支持的浏览器
虽然大部分现代浏览器都支持 CSS Multi-column 布局,但某些旧版本的浏览器可能不支持,这会导致布局出现问题。
解决方案:在使用之前,确保检查目标用户的浏览器支持情况,并考虑使用渐进增强的方法。
4、使用 display: inline-block 可以实现横向布局,适合简单的布局需求
<style>
.inline-item {
display: inline-block; /* 设为内联块 */
width: 30%; /* 项目宽度 */
padding: 20px;
background-color: lightyellow;
margin: 5px; /* 项目间距 */
vertical-align: top; /* 垂直对齐 */
}
</style>
问题:
(1)、空白间隙
使用 inline-block 元素时,HTML 中的空格、换行符和注释会被渲染为实际的空白,这可能导致元素之间出现意外的间距。
解决方案:可以通过以下几种方式消除空白间隙:
将元素的父元素的字体大小设置为 0,然后在子元素上恢复字体大小。
将子元素的 float 属性设置为 left。
使用负边距。
将元素放在同一行内,不留空格。
(2)、垂直对齐
inline-block 元素的垂直对齐可能会出现问题,默认情况下,元素会基于其基线对齐,这可能导致不同高度的元素在垂直方向上对齐不一致。
解决方案:可以使用 vertical-align 属性来调整对齐方式,例如设置为 top、middle 或 bottom。
(3)、响应式设计的挑战
在某些情况下,inline-block 布局可能对响应式设计不够灵活,尤其是在小屏幕上,元素可能会因为宽度限制而换行。
解决方案:可以结合媒体查询来调整元素的宽度或排列方式,以适应不同的屏幕尺寸。
(4)、宽度和高度控制
使用 inline-block 时,元素的宽度和高度需要手动设置,否则可能会导致布局不如预期。
解决方案:确保为每个 inline-block 元素设置合适的宽度和高度。
5、浮动布局
<style>
.float-container {
overflow: hidden; /* 清除浮动 */
}
.float-item {
float: left; /* 向左浮动 */
width: 30%; /* 项目宽度 */
padding: 20px;
background-color: lightgreen;
margin: 5px; /* 项目间距 */
}
</style>
问题:
(1)、元素顺序问题
使用浮动布局时,元素的顺序可能与 HTML 中的顺序不一致,尤其是在使用清除浮动时。
解决方案:确保在布局设计中考虑到这一点,必要时可以使用 flexbox 或 grid 来替代浮动布局。
(2)、对齐和间距问题
浮动元素之间的间距和对齐可能不够灵活,尤其是当需要在不同屏幕尺寸上保持一致时。
解决方案:可以使用 margin 来控制间距,并使用 vertical-align 属性来调整对齐方式。
(3)、浮动元素会脱离文档流,这可能导致父容器的高度塌陷,影响后续内容的布局。
.box {
position: absolute; /* 脱离文档流 */
top: 20px; /* 距离顶部20像素 */
left: 50px; /* 距离左侧50像素 */
}
6、Grid布局
<style>
.grid-container {
display: grid; /* 启用 Grid 布局 */
grid-template-columns: repeat(3, 1fr); /* 创建三列 */
gap: 10px; /* 项目间距 */
}
.grid-item {
padding: 20px;
background-color: lightcoral;
}
</style>
问题:
(1)、 浏览器兼容性
CSS Grid 在较旧的浏览器中可能不被支持,尤其是 Internet Explorer。
解决方案:在使用 Grid 布局时,确保检查目标用户的浏览器使用情况。如果需要支持旧版浏览器,可以考虑使用 flexbox 或其他布局方法作为备选方案。
(2)、定义网格
在定义网格时,需要明确设置行和列的大小。如果没有设置,默认情况下,Grid 项目的大小可能会不如预期。
解决方案:使用 grid-template-columns 和 grid-template-rows 明确指定网格的行和列。
(3)、 间距控制
Grid 布局允许使用 grid-gap(或 gap)属性来控制网格项之间的间距,但有时可能会导致布局不如预期。
(4)、内容溢出
如果网格项中的内容过多,可能会导致内容溢出,影响布局。
相关文章:
弹性盒子的学习
/*弹性盒子内其他的属性和作用*/ 1、flex-grow 定义项目的放大比例,默认值为 0。如果有剩余空间,项目将根据该值进行放大。 2、flex-shrink 定义项目的缩小比例,默认值为 1。如果空间不足,项目将根据该值进行缩小。 3、flex-bas…...
用NeuralProphet预测股价:AI金融新利器(附源码)
作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:我用NeuralProphet模型预测了股票价格,发现其通过结合时间序列分析和神经网络算法,确实能提供比传统Last Value方法更精准的预测。经过一系列超参数调优…...
深度学习-103-RAG技术之通过分块技术提升RAG的效果
文章目录 1 RAG中的分块技术1.1 RAG是什么1.2 分块chunking是什么1.3 分块的重要性1.4 分块的技巧2 固定字符大小分块2.1 固定字符大小分块的优缺点2.2 自定义分块代码2.3 LangChain的CharacterTextSplitter3 递归字符文本分割3.1 递归字符文本分割的优缺点3.2 LangChain的Recu…...
【B站保姆级视频教程:Jetson配置YOLOv11环境(六)PyTorchTorchvision安装】
Jetson配置YOLOv11环境(6)PyTorch&Torchvision安装 文章目录 1. 安装PyTorch1.1安装依赖项1.2 下载torch wheel 安装包1.3 安装 2. 安装torchvisiion2.1 安装依赖2.2 编译安装torchvision2.2.1 Torchvisiion版本选择2.2.2 下载torchvisiion到Downloa…...
【Vitest】单元测试
文章目录 测试:Vitest一、安装二、断言三、回调测试四、对象方法五、模拟第三库 测试:Vitest 一、安装 npm install vitest创建文件:example.test.ts 运行测试: npx vitest example二、断言 import { expect, test } from vi…...
使用conda创建自己的python虚拟环境,与其他python版本独立区分
使用 Conda 创建和使用自己的运行环境非常简单,以下是详细步骤: 1. 安装 Anaconda 或 Miniconda 如果你尚未安装 Anaconda 或 Miniconda,可以访问 Anaconda 官网 或 Miniconda 官网 下载并安装。 2. 创建新的 Conda 虚拟环境 创建虚拟环境…...
Java进阶14 TCP日志枚举
Java进阶14 TCP&日志&枚举 一、网络编程TCP Java对基于TCP协议得网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。 1、TCP协议发数据 1.1 构造方法 方法 说明 Socket(InetAddress address…...
Vue混入(Mixins)与插件开发深度解析
Vue混入(Mixins)与插件开发深度解析 Vue混入(Mixins)与插件开发深度解析1. Vue混入(Mixins)核心概念1.1 什么是混入1.2 基础使用方式1.3 选项合并策略1.4 全局混入及其风险1.5 混入的优缺点分析 2. 混入实战…...
[LVGL] 在VC_MFC中移植LVGL
前言: 0. 在MFC中开发LVGL的优点是可以用多个Window界面做辅助扩展 1.本文基于VC2022-MFC单文档框架移植lvgl8 2. gitee上下载lvgl8.3 源码,并将其文件夹改名为lvgllvgl: LVGL 是一个开源图形库,提供您创建具有易于使用的图形元素、漂亮的…...
leetcode_双指针 125.验证回文串
125.验证回文串 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是回文串 ,返回 true ÿ…...
14.适配器模式(Adapter Pattern)
定义 适配器模式(Adapter Pattern) 是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一种接口。适配器模式通常用于将已有的类或遗留系统中的接口与新系统或目标接口进行兼容,从而能够在系统中无缝地使用不兼容…...
Crewai框架配置回调函数
官方文档里只指提了一句 不过不太难,在crew.py文件里配置一下就行了,下面是一个demo,这个函数会在research_task任务执行完触发(配置LLM这里请看我这篇博客) from crewai import Crew, Process, Agent, Taskfrom src.…...
大数据方向知识图谱及发展前景分析
目录 一、知识体系 二、大数据领域前景分析: 1. 市场需求 2. 技术趋势 3. 职业发展路径 4. 学习路线建议 5. 推荐认证体系 一、知识体系 大数据知识体系 ├── 基础理论 │ ├── 数学基础:概率统计、线性代数、离散数学 │ ├── 计算机基…...
Playwright 与 Selenium 的关系
Playwright 与 Selenium 的关系 Playwright 和 Selenium 都是流行的浏览器自动化测试工具,它们都可以用于 Web 应用的端到端测试,但它们在设计理念、架构和功能上存在一些差异。 以下是两者的主要关系对比: 特性PlaywrightSelenium开发语言…...
拧紧“安全阀”,AORO-P300 Ultra防爆平板畅通新型工业化通信“大动脉”
在油气管道泄漏的浓烟中,在矿道坍塌的密闭空间里,在洪水肆虐的救援现场,传统通讯设备频频失效的困境已成为历史。AORO-P300 Ultra防爆平板集5G通讯、红外感知、应急照明等实用功能于一体,以军工级防护与全场景智能应用,…...
《C#之集训1-20121019c#基础》
 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。它是微软公司研究员Anders Hejlsberg的最新成果。 C#曾经的它在我眼中是很高大上的,一直没有目睹其风采,现在终于揭开了它神秘的面纱…...
基于docker搭建Kafka集群,使用KRaft方式搭建,摒弃Zookeeper
KAFKA基于docker使用KRaft进行集群搭建 环境:已成功搭建kafka服务 可点击链接跳转至安装kafka-3.8.0版本 并启用SASL认证 教程 使用基于Zookeeper方式搭建集群教程 kafka-3.8.0版本 并启用SASL认证 教程 搭建kafka-ui可视化工具 192.168.2.91 192.168.2.92 192…...
CAD导入与解析,助力工业数据可视化高效呈现
背景 在企业的日常设计与管理中,CAD图纸早已成为不可或缺的重要资产,多年来知识积累的载体,凝聚了大量的心血与智慧。然而,CAD图纸往往只作为静态文件保存,应用场景较为有限。在数字经济时代,如何让CAD图纸…...
基于docker部署kafka-3.8.0版本,并开启SASL认证模式
1、下载安装包 (1)https://kafka.apache.org/downloads 下载如下图版本 2、解压安装包 执行tar -xvf kafka_2.13-3.8.0.tgz命令对安装包进行解压。 3、增加配置文件 (1)进入 /kafka_2.13-3.8.0/config 目录 (2&a…...
从零开始人工智能Matlab案例-KNN的二维数据分类
基于K最近邻(K-Nearest Neighbors, KNN)算法的二分类案例,包含完整MATLAB代码、算法原理和核心思想说明。此案例使用合成数据集,无需复杂数据预处理,适合快速理解。 案例:基于KNN的二维数据分类 目标&…...
90.子集||
要求所有可能的子集,不能重复,因此对于相同的数字,要考虑去重,去重的方式就是通过排序,排序后相同的数字相邻,这样进行实现迭代时,若没有选择上一个数,,其当前数字与上一…...
4 HBase 的高级 shell 管理命令
4 HBase 的高级 shell 管理命令 1.status 例如:显示服务器状态 hbase(main):058:0> status node012.whoami 显示 HBase 当前用户,例如: hbase> whoami3.list 显示当前所有的表 hbase> list4.count 统计指定表的记录数,…...
Spring AOP 扫盲
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
DeepSeek 提示词之角色扮演的使用技巧
老六哥的小提示:我们可能不会被AI轻易淘汰,但是会被“会使用AI的人”淘汰。 在DeepSeek的官方提示库中,有“角色扮演(自定义人设)”的提示词案例。截图如下: 在“角色扮演”的提示词案例中,其实…...
python3中错误与异常初识
一. 简介 在 编写 Python时,经常会遇到一些报错信息。接下来开始学习 Python3 中错误和异常。 本文首先初步了解一下 Python3中的错误和异常。 二. python3 中错误与异常初识 Python 中有两种错误:语法错误与异常。 1. 语法错误 Python 的语法错误…...
设计模式六大原则和单例模式
设计模式 目的 实现可重用解决方案,构筑易维护、可扩展的软件系统。 六大原则 单一职责: 类的职责单一,一个方法做一件事。 开闭原则: 拓展开放,修改关闭。 里氏替换: 父类能出现的地方,子…...
【图像处理】- 基本图像操作
基本图像操作详解 基本图像操作是图像处理的基础,涵盖了对图像进行简单但重要的变换。以下是几种常见的基本图像操作及其详细说明: 1. 裁剪 (Cropping) 描述:从原始图像中提取一个矩形区域。 实现方法: 使用图像的坐标系指定…...
Attention is All You Need-Transformer模型论文精读+架构分析--简单易懂版
Foreword写在前面的话: 大家好,我是一名刚开始学习Transformer的新手。这篇文章是我在学习Transformer过程中的一些笔记和心得,希望能和同样在学习人工智能深度学习模型的朋友们分享。由于我的知识有限,文章中可能存在错误或不准确…...
Qt跨屏窗口的一个Bug及解决方案
如果我们希望一个窗口覆盖用户的整个桌面,此时就要考虑用户有多个屏幕的场景(此窗口要横跨多个屏幕),由于每个屏幕的分辨率和缩放比例可能是不同的,Qt底层在为此窗口设置缩放比例(DevicePixelRatio…...
Spark--算子执行原理
一、sortByKey SortByKey是一个transformation算子,但是会触发action,因为在sortByKey方法内部,会对每个分区进行采样,构建分区规则(RangePartitioner)。 内部执行流程 1、创建RangePartitioner part&…...
