CSS中Flex布局应用实践总结

① 两端对齐

比如 要求ul下的li每行四个,中间间隔但是需要两段对齐,如下图所示:
在这里插入图片描述

这是除了基本的flex布局外,还需要用到:nth-of-type伪类来控制每行第一个与第四个的padding。

.hl_list{
		width: 100%;
		display: flex;
		align-items: flex-start;
		flex-wrap: wrap;
		justify-content: space-between;
	}
	
	.ul_list .hl_list li{
		width: 25%;
		padding: 0 10px;
	}
	.ul_list .hl_list li:nth-of-type(4n+1){
		padding-left: 0;
	}
	.ul_list .hl_list li:nth-of-type(4n+4){
		padding-right: 0;
	}

② 单行截取多余的

display: flex;
flex-wrap: nowrap;
overflow-x: hidden;

flex-wrap: nowrap;规定item不换行。
overflow-x: hidden;规定X轴的超出隐藏

③ 子元素宽度不变

父元素设置flex布局,需要保证某个子元素宽度不变,可以为子元素设置属性如下:

flex-shrink: 0

子元素不设置 flex-shrink: 0 时子元素会随父元素宽度自动等分总宽度,子元素设置的宽度会自动失效

④ 两端对齐且间距一样且子元素宽度一样

要让一个 div 的四个子元素两端对齐,左右不留间距,且中间元素的间距一样,可以使用 CSS 的 Flexbox 布局。Flexbox 提供了一种简单而强大的方法来实现这种布局需求。

示例代码

HTML
<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
</div>
CSS
.container {
    display: flex; /* 使用Flexbox布局 */
    justify-content: space-between; /* 子元素两端对齐,中间间距相等 */
    width: 100%; /* 容器宽度,可以根据需要调整 */
}

.item {
    flex-basis: 24%; /* 每个子元素占容器宽度的24%,留出1%的空间作为间隔 */
    box-sizing: border-box; /* 确保内边距和边框不会影响宽度计算 */
}

解释

  1. display: flex;:将 .container 设置为 Flexbox 布局。
  2. justify-content: space-between;:使子元素在主轴上两端对齐,中间的间距相等。
  3. width: 100%;:设置 .container 的宽度为100%,确保它占据整个可用空间。
  4. flex-basis: 24%;:每个子元素的初始宽度设置为容器宽度的24%,这样可以确保四个子元素加上中间的间隔总和为100%。
  5. box-sizing: border-box;:确保内边距和边框不会影响子元素的宽度计算。

注意事项

  • flex-basis: 24%; 是一个经验值,确保四个子元素加上中间的间隔总和为100%。如果你需要更精确的控制,可以调整这个值。
  • 如果你希望子元素之间有固定的间距,可以使用 gap 属性,但这会使得子元素的宽度不再是固定比例。

使用 gap 属性(可选)

如果你希望子元素之间有固定的间距,可以使用 gap 属性,但需要注意调整子元素的宽度以适应总宽度。

CSS
.container {
    display: flex;
    justify-content: space-between;
    width: 100%;
    gap: 10px; /* 子元素之间的固定间距 */
}

.item {
    flex: 1; /* 子元素等分剩余空间 */
    max-width: calc(25% - 10px); /* 调整子元素的最大宽度,确保总和为100% */
    box-sizing: border-box;
}

解释

  1. gap: 10px;:设置子元素之间的固定间距为10像素。
  2. flex: 1;:使每个子元素等分剩余空间。
  3. max-width: calc(25% - 10px);:调整子元素的最大宽度,确保四个子元素加上中间的间隔总和为100%。

通过这些方法,你可以轻松地实现一个 div 的四个子元素两端对齐,左右不留间距,且中间元素的间距一样的布局。

⑤ 在④前提下增大间距

要在上述前提下增大子元素之间的间距,可以调整 flex-basis 的值或者使用 gap 属性。以下是两种方法的详细说明:

方法一:调整 flex-basis 的值

通过调整 flex-basis 的值,可以间接增大子元素之间的间距。例如,将 flex-basis 设置为22%,这样每个子元素的宽度会稍小一些,从而增加中间的间距。

HTML
<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
</div>
CSS
.container {
    display: flex;
    justify-content: space-between;
    width: 100%;
}

.item {
    flex-basis: 22%; /* 调整子元素的宽度,减小每个子元素的宽度以增加间距 */
    box-sizing: border-box;
}

方法二:使用 gap 属性

使用 gap 属性可以直接设置子元素之间的间距。这种方法更直观,更容易控制间距的大小。

HTML
<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
</div>
CSS
.container {
    display: flex;
    justify-content: space-between;
    width: 100%;
    gap: 20px; /* 设置子元素之间的间距为20像素 */
}

.item {
    flex: 1; /* 子元素等分剩余空间 */
    max-width: calc(25% - 20px / 3); /* 调整子元素的最大宽度,确保总和为100% */
    box-sizing: border-box;
}

解释

  1. gap: 20px;:设置子元素之间的间距为20像素。
  2. flex: 1;:使每个子元素等分剩余空间。
  3. max-width: calc(25% - 20px / 3);:调整子元素的最大宽度,确保四个子元素加上中间的间隔总和为100%。这里 20px / 3 是因为有三个间隔,每个间隔为20像素。

注意事项

  • calc(25% - 20px / 3):这个计算确保了子元素的宽度加上间隔的总和为100%。具体来说,每个子元素占用25%的宽度,减去每个间隔的平均值。
  • box-sizing: border-box;:确保内边距和边框不会影响子元素的宽度计算。

通过这两种方法,你可以灵活地调整子元素之间的间距,以满足你的布局需求。

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

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

相关文章

Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现

Spring Boot Vue 基于 RSA 的用户身份认证加密机制实现 什么是RSA&#xff1f;安全需求介绍前后端交互流程前端使用 RSA 加密密码安装 jsencrypt库实现敏感信息加密 服务器端生成RSA的公私钥文件Windows环境 生成rsa的公私钥文件Linux环境 生成rsa的公私钥文件 后端代码实现返…

Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~

AI 驱动 3D 动画 大家好&#xff0c;我是石小石&#xff01;随着 Web 技术的发展&#xff0c;Three.js 成为构建 3D 图形和动画的主流工具。与此同时&#xff0c;人工智能&#xff08;AI&#xff09;在图像处理、动作生成等领域表现出强大能力。将 AI 与 Three.js 结合&#x…

bpmn.js显示流程图

目标&#xff1a;vue2 接口返回xml - 弹窗显示流程图 - 根据需求高亮节点 一、安装依赖 npm i bpmn-js 添加上的版本是 "bpmn-js": "^11.5.0" 二、只读显示流程图 <div ref"canvas" style"width:100%;height: calc(100vh…

Vue Form表单的使用,rules格式校验网络校验,键盘按键监听

Form表单 rules格式校验 可以在validator中进行网络请求&#xff0c;实现网络校验 const formRules {userName: [{required: true, message: "用户名不能为空", trigger: blur}, {min: 5,max: 10,message: "长度必须5-10位",trigger: blur}],passWord: …

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器&#xff0c;…

TCP并发服务器

端口号快速复用函数 通过getsockopt和setsockopt函数&#xff0c;管理套接字的端口号复用设置。具体操作如下&#xff1a; getsockopt函数 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);功能&#xff1a;获取套接字的某些选项的属性。…

vue3的宏到底是什么东西?

前言 从vue3开始vue引入了宏&#xff0c;比如defineProps、defineEmits等。我们每天写vue代码时都会使用到这些宏&#xff0c;但是你有没有思考过vue中的宏到底是什么&#xff1f;为什么这些宏不需要手动从vue中import&#xff1f;为什么只能在setup顶层中使用这些宏&#xff…

无重复字符的最长子串习题分析

习题&#xff1a;&#xff08;leetcode 3 &#xff09; 给定一个字符串s&#xff0c;请你找出其中不含有重复字符的最长子串的长度。 分析&#xff1a; 对于寻找子串、数组中某部分等&#xff0c;我们可以使用滑动窗口和双指针思想来求解。 滑动窗口通常用于解决需要连续子…

Linux服务器的Tomcat9中部署War包

文章目录 Linux服务器的Tomcat9中部署War包一、引言二、部署Tomcat91、安装Tomcat91.1、下载Tomcat91.2、解压安装1.3、启动Tomcat9 2、配置环境变量&#xff08;可选&#xff09; 三、部署War包1、准备War包2、部署War包3、配置Context&#xff08;可选&#xff09; 四、启动和…

如果接口返回值图片有很长一串码,需要添加前缀

需要在前面添加前缀&#xff1a;data:image/jpeg;base64,然后将值赋值给<img :src"originalImage" /> this.tableLists.map((item)>{item.originalImage "data:image/jpeg;base64,"item.originalImage})以上方法会导致出现一个小bug&#xff0c;…

2024年11月21日Github流行趋势

项目名称&#xff1a;twenty 项目维护者&#xff1a;charlesBochet, lucasbordeau, Weiko, FelixMalfait, bosiraphael项目介绍&#xff1a;正在构建一个由社区支持的现代化Salesforce替代品。项目star数&#xff1a;21,798项目fork数&#xff1a;2,347 项目名称&#xff1a;p…

Excel——宏教程(精简版)

一、宏的简介 1、什么是宏&#xff1f; Excel宏是一种自动化工具&#xff0c;它允许用户录制一系列操作并将其转换为VBA(Visual Basic for Applications)代码。这样&#xff0c;用户可以在需要时执行这些操作&#xff0c;以自动化Excel任务。 2、宏的优点 我们可以利用宏来…

【eNSP】OSPF、RIP与静态路由互通实验(四)

OSPF、RIP与静态路由互通实验 实验目的实验要求实验步骤步骤 1&#xff1a;配置R1、R2、R3、R4、R5、R6、R7的端口ip步骤 2&#xff1a;配置R1、R2、R3的OSPF动态路由协议步骤 3&#xff1a;配置R3、R4、R5的RIP动态路由协议步骤 4&#xff1a;配置R3作为边界路由器&#xff0c…

Vision-Language Models for Vision Tasks: A Survey 论文解读

摘要 大多数视觉识别研究在深度神经网络&#xff08;DNN&#xff09;训练中严重依赖于人工标注的数据&#xff0c;且通常为每个单一的视觉识别任务训练一个DNN&#xff0c;导致这种视觉识别范式既繁琐又耗时。为解决这两个挑战&#xff0c;近年来对视觉语言模型&#xff08;VL…

Stable Diffusion核心网络结构——U-Net

​ &#x1f33a;系列文章推荐&#x1f33a; 扩散模型系列文章正在持续的更新&#xff0c;更新节奏如下&#xff0c;先更新SD模型讲解&#xff0c;再更新相关的微调方法文章&#xff0c;敬请期待&#xff01;&#xff01;&#xff01;&#xff08;本文及其之前的文章均已更新&a…

C#桌面应用制作计算器进阶版01

基于C#桌面应用制作计算器做出了少量改动&#xff0c;其主要改动为新增加了一个label控件&#xff0c;使其每一步运算结果由label2展示出来&#xff0c;而当点击“”时&#xff0c;最终运算结果将由label1展示出来&#xff0c;此时label清空。 修改后运行效果 修改后全篇代码 …

python: generator model using sql server 2019

設計或生成好數據庫&#xff0c;可以生成自己設計好的框架項目 # encoding: utf-8 # 版权所有 &#xff1a;2024 ©涂聚文有限公司 # 许可信息查看 &#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎 # 描述&#xff1a; : 生成实体 # Author …

【Nginx从入门到精通】04-安装部署-使用XShell给虚拟机配置静态ip

文章目录 总结1、XShell &#xff1a;方便管理多台机器2、配置ip文件&#xff1a;区分大小写 一、查看上网模式二、Centos 7 设置静态ipStage 1 &#xff1a;登录root账号Stage 2 &#xff1a;设置静态ip : 修改配置文件 <font colororange>ifcfg-ens33Stage 2-1&#xf…

【深度学习】利用Java DL4J构建金融欺诈检测系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

当你项目服务器磁盘报警

当你们公司运维收到这样的邮件&#xff0c;大概率日志文件过大引起的 在Linux下如何不停止服务,清空nohup.out文件呢&#xff1f; nohup.out会一直一直自己增长下去&#xff0c;如果你的服务器硬盘不给力的话&#xff0c;很容易把应用也挂掉&#xff08;硬盘没空间 &#xff0…