前端开发攻略---利用Flexbox和Margin实现智能布局:如何巧妙分配剩余空间,让你的网页设计更上一层楼?

本文主要是介绍前端开发攻略---利用Flexbox和Margin实现智能布局:如何巧妙分配剩余空间,让你的网页设计更上一层楼?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、演示

2、flex布局

Flex布局是一种用于Web开发的弹性盒子布局模型,它可以让容器内的子元素在空间分配、对齐和排列方面具有更大的灵活性。以下是Flex布局的基本用法:

  1. 容器属性

    • display: flex;:将容器指定为Flex布局。
    • flex-direction:定义主轴的方向。可以是row(默认值,水平方向)、row-reverse(水平方向反向)、column(垂直方向)或column-reverse(垂直方向反向)。
    • flex-wrap:定义子元素如何换行。可以是nowrap(默认,不换行)、wrap(换行)、wrap-reverse(反向换行)。
    • justify-content:定义子元素在主轴上的对齐方式。可以是flex-start(默认,起点对齐)、flex-end(终点对齐)、center(居中对齐)、space-between(两端对齐,项目之间的间隔相等)、space-around(项目两侧的间隔相等,项目与项目之间的间隔是它们的间隔的一半)或space-evenly(项目之间的间隔相等)。
    • align-items:定义子元素在交叉轴上的对齐方式。可以是flex-start(起点对齐)、flex-end(终点对齐)、center(居中对齐)、baseline(基线对齐,以第一行文字的基线对齐)、stretch(默认,拉伸填充容器)。
    • align-content:定义多根轴线的对齐方式。只有一根轴线时不起作用。可以是flex-startflex-endcenterspace-betweenspace-aroundstretch(默认)。
  2. 项目属性

    • order:定义项目的排列顺序,默认为0,可以为负值。
    • flex-grow:定义项目的放大比例,默认为0,即即使存在剩余空间,也不放大。
    • flex-shrink:定义项目的缩小比例,默认为1,即如果空间不足,项目将缩小。
    • flex-basis:定义项目在主轴上的初始大小,默认为auto,即根据内容自动调整大小。
    • flex:是flex-growflex-shrinkflex-basis的简写,默认值为0 1 auto。可以设置为none(等同于0 0 auto)或auto(等同于1 1 auto)。
    • align-self:单独定义某个项目在交叉轴上的对齐方式,覆盖容器的align-items属性。

Flex布局非常适用于构建响应式网页布局,可以轻松实现各种复杂的排版效果,并且在移动端和PC端都有良好的兼容性。

4、margin

margin是CSS中用来设置元素外边距的属性,它控制着元素与周围元素之间的空间间隔。margin属性可以应用于所有HTML元素,其主要作用是控制元素之间的间距和布局。

以下是margin的基本用法:

  1. 设置单个方向的外边距

    • margin-top:设置元素的上外边距。
    • margin-right:设置元素的右外边距。
    • margin-bottom:设置元素的下外边距。
    • margin-left:设置元素的左外边距。
  2. 设置所有方向的外边距

    • margin:通过设置一个值,可以同时设置元素的上、右、下、左四个方向的外边距。例如,margin: 10px;表示上、右、下、左外边距都是10像素;或者可以分别指定四个方向的值,例如,margin: 10px 20px 15px 25px;分别表示上、右、下、左外边距的数值。
  3. 负外边距

    • 通过设置负数值的外边距,可以让元素在页面布局中产生重叠或调整位置的效果。
  4. 注意事项

    • 外边距会影响元素的宽度和高度,通常在进行布局设计时需要考虑外边距的影响。
    • 外边距会叠加(collapse),即当两个相邻元素的外边距重叠时,最终的外边距取两者中的最大值。

通过合理地运用margin属性,可以实现页面元素之间的间距调整和布局设计,从而达到更好的视觉效果和用户体验。

3、代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>body {display: flex;flex-wrap: wrap;justify-content: center;}.container {width: 800px;border: 1px solid #266fff;background-color: #eee;padding: 10px;display: flex;margin-bottom: 10px;}.item {width: 50px;height: 50px;margin-left: 10px;}.item:nth-child(1) {margin-left: 0px;background-color: saddlebrown;}.item:nth-child(odd) {background-color: rgb(19, 139, 55);}.item:nth-child(even) {background-color: rgb(214, 246, 6);}.container5 {flex-wrap: wrap;}.container5 .item {--n: 7;--space: calc(100% - var(--n) * 50px);--h: calc(var(--space) / var(--n) / 2);margin: 10px var(--h);}</style></head><body><div class="container"><div class="item" style="margin: auto"></div></div><div class="container"><div class="item"></div><div class="item"></div><div class="item" style="margin-left: auto"></div></div><div class="container"><div class="item"></div><div class="item"></div><div class="item" style="margin-left: auto"></div><div class="item"></div></div><div class="container"><div class="item"></div><div class="item"></div><div class="item" style="margin: auto"></div><div class="item"></div><div class="item"></div></div><div class="container container5"><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 class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div></div></body>
</html>

这篇关于前端开发攻略---利用Flexbox和Margin实现智能布局:如何巧妙分配剩余空间,让你的网页设计更上一层楼?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/895487

相关文章

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、