关于flex布局

news/2025/3/3 22:11:35/文章来源:https://www.cnblogs.com/liuzhiyangz/p/18746605

1.flex初探

简单示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.menu {border: 1px solid red;width: 500px;display: flex;}.menu .item{width: 45px;height: 50px;border: 1px solid green;}</style>
</head>
<body>
<div class='menu'><div class='item'>北京</div><div class='item'>上海</div><div class='item'>深圳</div>
</div>
</body>
</html>

效果图如下,可以看到同样效果比float简单许多:

image

2.flex元素方向

默认flex-direction为row,水平铺满,可修改为column垂直铺满:

.menu {border: 1px solid red;width: 500px;display: flex;flex-direction: column; /*主轴=纵向*/}.menu .item{width: 45px;height: 50px;border: 1px solid green;}

效果图如下:

image

3.排列方式justify-content属性

整体css:

.menu {border: 1px solid red;width: 500px;display: flex;flex-direction: row; /*主轴=横向*/justify-content: flex-start; /*默认排列方式*/}.menu .item{width: 45px;height: 50px;border: 1px solid green;}

justify-content: space-between
image
justify-content: space-evenly;
image
justify-content: flex-start;
image
justify-content: flex-end;
image

4.排列方式 align-items属性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.menu {border: 1px solid red;width: 500px;height: 500px;display: flex;flex-direction: row; /*主轴=横向*//*justify-content: space-evenly;*/justify-content: space-between;align-items: center;/*align-items: flex-start;*//*align-items: flex-end;*/}.menu .item{width: 45px;height: 50px;border: 1px solid green;}</style>
</head>
<body>
<div class='menu'><div class='item'>北京</div><div class='item'>上海</div><div class='item'>深圳</div>
</div>
</body>
</html>

align-item:center显示,align-item值等于flex-start,flex-end属性可自行测试下效果
image

5.换行flex-wrap: wrap;

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.menu {border: 1px solid red;width: 500px;height: 500px;display: flex;flex-direction: row; /*主轴=横向*/justify-content: flex-start;align-items: flex-end;/*未指定换行可以控制内容显示位置*/flex-wrap: wrap; /*指定该属性后,宽度铺满之后会自动换行,不然只会铺满单行*/align-content: flex-start;/*指定换行后,由该属性控制显示位置,个人测试所得,欢迎指正*/}.menu .item{width: 40px;height: 50px;border: 1px solid green;}</style>
</head>
<body>
<div class='menu'><div class='item'>北京</div><div class='item'>上海</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div><div class='item'>深圳</div>
</div></body>
</html>

剩余空间,flex-grow


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.menu {border: 1px solid red;width: 500px;height: 500px;display: flex;flex-direction: row; /*主轴=横向*/justify-content: flex-start; /*横轴*/}.menu .item {width: 50px;height: 50px;border: 1px solid green;}</style>
</head>
<body>
<div class='menu'><div class='item' style="">北京</div><!--制定flex-grow的所有元素占据剩余空间,flex-grow值代表占比,如上海占剩余空间2/3,深圳占1/3--><div class='item' style="flex-grow: 2">上海</div><div class='item' style="flex-grow: 1">深圳</div>
</div>
</body>
</html>

效果如下:
image

案例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.course-list {display: flex;justify-content: space-between;flex-wrap: wrap;}.course-list .item {width: 24%;height: 100px;background-color: skyblue;margin-top: 15px;}/*如果最后一个元素,是第3个,右边距=一个位置 + 所有空白位置/3(有三个空白位置)*/.course-list .item:last-child:nth-child(4n - 1) {margin-right: calc(24% + 4% / 3);}.course-list .item:last-child:nth-child(4n - 2) {margin-right: calc(48% + 8% / 3);}</style>
</head>
<body><div class="container"><div class="course-list"><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div></div>
</div>
</body>
</html>

效果,解释下justiy-content:space-between如果元素数量不一致,但都会两头对齐不美观,需要判断最后一个元素是不是处在第二位、第三位从而设置margin-right确保元素显示对齐:
image

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

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

相关文章

构建窗体--java进阶day03

1.窗体对象Jframe 要创建窗体就需要Jframe对象,窗体创建好不会自己显示,还需要我们自己写一段代码让其显示2.设置窗体可见--setVisible(true) 该方法用于显示窗体3.窗体大小调节--setSize() 该方法用于调节窗体的大小,如下图宽(左到右)500,长(上到下)8004.修改窗体…

私藏!程序员必备的 6 款画图工具,工作效率直线飙升!

宝子们,日常工作里,画图可是个高频需求,不管是梳理思路、设计架构,还是给团队讲解方案,都离不开各种图形。今天我就把私藏多年的6款画图工具分享给大家,每一款都超实用,能帮咱高效搞定各类图形绘制工作! 一、Draw.io:功能强大的绘图宝藏 Draw.io堪称免费绘图工具里的…

[Webpack] 打包优化 一

代码准备 由于需要演示webpack的一些优化处理,因此代码提前做了一些处理,引入了vue-router路由,创建了几个view页面 引入了element-plus,axios,echarts,vue-echarts,@vueuse等组件丰富页面展示 引入了unplugin-vue-components,unplugin-auto-import等处理element-plus的…

[Esbuild] 自定义插件

esbuild自定义插件 插件开发其实就是基于原有的体系结构中进行扩展和自定义。 Esbuild 插件也不例外,通过 Esbuild 插件我们可以扩展 Esbuild 原有的路径解析、模块加载等方面的能力,并在 Esbuild 的构建过程中执行一系列自定义的逻辑。 esbuild 插件是一个带有name和setup函…

ASP.NET Core 3框架揭秘 10

IHostBuilder  IHost  IHostService  IHostApplicationLifetimeWebApplication ==> createbuilder创建了一个新的new WebApplicationBuilder。 WebApplicationBuilder里的初始话方法中,首先会创建一个HostApplicationBuilder对象,HostApplicationBuilder主要用于表示…

Vitepress+EdgeOne Pages快速迁移旧网站内容

本文详细记录使用Vitepress+腾讯云EdgeOne Pages迁移旧网站内容的过程。Vitepress+EdgeOne Pages快速迁移旧网站内容 目录Vitepress+EdgeOne Pages快速迁移旧网站内容下载旧网站文章、图片网站文章转MarkdownVitepress项目快速开始EdgeOne Pages零帧起手参考材料 去年在阿里云码…

记录:tinyrenderer

Bresenham’s line drawing(布雷森汉姆算法) 进行games101的光栅化作业时,对其渲染原理仍不甚了解,找到tinyrenderer软光栅项目。在此记录下试错的过程。 作者在最初为我们做好了framebuffer,读者入手的方向实际是从渲染的过程开始。对于如何渲染出像素显示在画面上,应该需…

2025-2-28-媒体查询

媒体查询示例 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=devi…

Sunshine Moonlight 串流 再玩一把

前言 其实我已经配置好了,目前的配置是不过我额外安装vdd是因为基地版自带的那个显示屏有点问题。 只不过我自己也忘了有什么问题了。 但是现在什么?有更新? 更新来玩玩。 博主能这样随便更新,是因为这个软件不怎么用,而且喜欢折腾才这样做的,如果经常需要使用建议是稳定…

牛客 周赛82 20250227

牛客 周赛82 20250227 https://ac.nowcoder.com/acm/contest/102303 A: 题目大意:给定字符串 \(s\) ,判断首尾是否相同 #include<bits/stdc++.h> #define cintie ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define Trd int T;cin>>T;while (T--)sol…

002搜索框-搜索功能的实现

1、设置js的data值 给Zcpmingxi一个测试值 2、把 sousuo这个名字 绑定到wxml里面的 搜索框上 <inpu/>         是一个搜索框标签 type="text"        表示格式是文本格式 value="{{sousuo}}"    …

Spring面试知识

Spring优点 1.通过控制反转和依赖注入实现低耦合 2.面向切面编程,将业务逻辑和系统功能区分开来(日志记录、事务管理、安全性) 3.切面和模板可以减少板式代码 4.声明式事务的支持(@Translation)可以实现对事务代码的灵活管理,提高代码的质量和效率 5.多种内置的框架(Mybaties…