Web前端一套全部清晰 ⑨ day5 CSS.4 标准流、浮动、Flex布局

2024-05-24 22:36

本文主要是介绍Web前端一套全部清晰 ⑨ day5 CSS.4 标准流、浮动、Flex布局,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我走我的路,有人拦也走,没人陪也走

                                                —— 24.5.24

一、标准流

        标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。

二、浮动

作用:

块级元素水平排列。

属性名:float

属性值

        left:左对齐

        right:右对齐

特点

        浮动后的盒子顶对齐
        浮动后的盒子具备行内块特点
        浮动后的盒子脱标,不占用标准流的位置

三、浮动 —— 产品布局

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>浮动-产品布局</title><style>*{/* 清除默认样式 */margin: 0;padding: 0;}li{/* 清除默认样式 */list-style: none;}.product{/* 盒子模型数据放上面 */margin: 50px auto;/* 宽度和高度 */width: 1226px;height: 628px;background-color: pink;   }.left{/* 浮动属性 */float: left;width: 234px;height: 628px;background-color: skyblue;}.right{/* 浮动属性 */float: right;width: 978px;height: 628px;background-color: darkred;}.right li{/* 浮动属性 */float: left;margin-right: 14px;margin-bottom: 14px;width: 234px;height: 300px;background-color: orange;}/* 每一行最右边的li清除浮动 */.right li:nth-child(4n){margin-right: 0;}/* 如果父级宽度不够,浮动的盒子会掉下来 */</style>
</head>
<body><!-- 版心:左右结构,右边:8个产品 8个li --><div class="product"><div class="left"></div><div class="right"><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul></div></div>
</body>
</html>

浮动——总结

浮动属性 floatleft 表示浮动,right 表示浮动

特点

浮动后的盒子对齐
浮动后的盒子具备行内块特点
父级宽度不够,浮动的子级换行
浮动后的盒子会脱标

清除浮动:

子级浮动,父级没有高度,子级无法撑开父级高度,影响布局效果
① 双伪元素法

拓展:浮动本质作用是实现图文混排效果

四、Flex布局

Flex-认识

        Flex布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力
        Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活

Flex-组成

设置方式:

        给父元素设置display: flex元素可以自动挤压或拉伸

组成部分:

        弹性容器
        弹性盒子
        主轴:默认在水平方向

        侧轴/交叉轴:默认在垂直方向

示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>flex布局-组成</title><style>/* 弹性容器 */.box{display: flex;height: 300px;border: 1px solid #000;}/* 弹性盒子:沿着主轴方向排列 */.box div{width: 200px;height: 100px;background-color: pink;}</style>
</head>
<body><!-- 弹性盒子自动挤压,当自己宽度宽,父级宽度低时 --><div class="box"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div></div>
</body>
</html>

主轴对齐方式 justify-content

属性名 

        justify-content

        后四个常用 前两个不常用

示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>flex布局 主轴对齐方式</title><style>.box{display: flex;/* 主轴对齐方式 不常用 */justify-content: flex-end; /* 居中效果 *//* justify-content: center; *//* 在盒子之间产生空白边距 盒子在两边 自动计算父级剩余尺寸分配成间距 *//* justify-content: space-between; *//* 间距出现在盒子两侧,视觉效果:弹性盒子之间的 间距 是 两边间距 的两倍 *//* justify-content: space-around; *//* 间距均匀分布在盒子之间,各个间距都相等 */justify-content: space-evenly;height: 300px;border: 1px solid #000;}.box div{width: 200px;height: 100px;background-color: pink;}</style>
</head>
<body><div class="box"><div>1</div><div>2</div><div>3</div></div>
</body>
</html>

侧轴对齐方式 align-items

属性名

        align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)

        align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)

        前两个常用,后两个不常用

修改主轴方向 flex-direction

主轴默认在水平方向,侧轴默认在垂直方向

属性名

        flex-direction

属性值

示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>flex布局-修改主轴方向</title><style>.box{/* flex标签 */display: flex;/* 修改主轴方向 主轴方向变换垂直方向,侧轴自动变换 */flex-direction: column;/* 主轴在垂直方向,视觉效果:垂直居中 */justify-content: center;/* align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式 *//* 侧轴在水平方向,视觉效果:水平居中 */align-items: center;width: 150px;height: 120px;background-color: pink;}img{width: 32px;height: 32px;}</style>
</head>
<body><div class="box"><img src="#" alt=""><span>媒体</span></div>
</body>
</html>

弹性伸缩比 flex

作用:

        控制弹性盒子的主轴方向的尺寸,水平方向控制宽度竖直方向控制高度

属性名:

       

属性值:

        整数数字,表示占用父级剩余尺寸的份数

示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>flex布局-弹性伸缩比</title><style>/* 在默认情况下,主轴(水平)方向上的尺寸靠内容撑开,侧轴(垂直方向)默认拉伸效果 *//* 父集 */.box{display: flex;/* flex-direction,修改主轴方向,主轴在哪个方向,控制就是哪个方向 *//* 修改主轴方向为竖直方向 */flex-direction: column;/* 高度 */height: 300px;/* 描边 */border: 1px solid #000;}/* 第一个子集 */.box div{/* 高度 */height: 100px;/* 背景色 */background-color: pink;}/* 结构伪类选择器 nth-child */.box div:nth-child(1){/* 宽度 */width: 200px;}/* 占父级剩余空间份数中的几份 */.box div:nth-child(2){flex:1}/* 占父级剩余空间份数中的几份 */.box div:nth-child(3){flex: 3;}</style>
</head>
<body><div class="box"><div>1</div><div>2</div><div>3</div></div>
</body>
</html>

主轴在水平方向,控制盒子的宽,主轴在竖直方向,控制盒子的高

弹性盒子换行 flex-wrap

弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示
属性名:flex-wrap
属性值
        wrap:换行
        nowrap:不换行(默认)

示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>flex布局-弹性换行</title><style>.box{/* 将盒子变成flex布局模型,弹性盒子自动挤压或压伸 */display: flex;/* 弹性换行属性 */flex-wrap: wrap; /* 允许弹性盒子自动换行 *//* 不换行flex-wrap: nowrap;  不允许弹性盒子自动换行 */height: 300px;border: 1px solid #000;}.box div{width: 200px;height: 100px;background-color: pink;}</style>
</head>
<body><div class="box"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div><div>10</div><div>11</div></div>
</body>
</html>

行对齐方式 align-content

属性名:align-content

属性值

和主轴对齐方式justify-content的属性值一样

示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=, initial-scale=1.0"><title>flex布局-行对齐方式</title><style>.box{display: flex;flex-wrap: wrap;justify-content: space-between; /* 两端对齐 *//* 调整行对齐方式 */align-content: flex-start; /* 行对齐方式为顶端对齐 */align-content: flex-end; /* 行对齐方式为底端对齐 */align-content: center; /* 行对齐方式为居中对齐 对单行的弹性盒子效果不生效 */align-content: space-around; /* 行对齐方式为平均分布 */align-content: space-between; /* 行对齐方式为两端对齐 */height: 400px;border: 1px solid #000;}.box div{width: 200px;height: 100px;background-color: pink;</style>
</head>
<body><div class="box"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div></div>
</body>
</html>

五、综合案例 - 抖音解决方案

标签结构
div ——> ul ——> li*4
ul样式

        1.flex 布局

        2.弹性换行 flex-wrap:wrap

        3.主轴对齐方式:space-between

        4.行对齐方式:space-between

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>抖音解决方案</title><style>/* 全局属性 */*{/* 清除默认属性 */margin: 0;padding: 0;/* 盒子内减属性 */box-sizing: border-box;}li{/* 清除默认属性 */list-style: none;}/* 盒子的属性 */.box{/* 移动盒子位置 *//* 设置距离顶部的长度 */margin:81px auto;/* 设置宽度 */width: 1200px;/* 设置高度 */height: 418px;/* 设置边框 */border: 1px solid #e1e0e3;/* 圆角效果 */border-radius: 10px;}/* 列表布局区域 */.box ul{/* 设置flex弹性布局属性 */display: flex;/* 弹性盒子换行 */flex-wrap: wrap;/* 设置主轴对齐方式 */justify-content: space-between;/* 设置行对齐方式 实现两行之间有区域间隔 */align-content: space-between;/* 设置位置 */padding: 91px 41px 90px 59px;/* 设置高度 */height: 418px;}/* 列表项 */.box li{/* flex弹性布局属性 */display: flex;/* 设置宽度 */width: 500px;height: 88px;/* background-color: pink; */}/* 列表项图片 */.box pic{/* 设置字图距离 */margin-right: 16px;}/* 列表项文字 */.box .text h4{/* 设置行高 */line-height: 41px;/* 设置字体大小 */font-size: 20px;/* 设置字体颜色 */color: #363636;}.box .text p{/* 设置字体大小 */font-size: 13px;color:#7b7b7b</style>
</head>
<body><div class="box"><ul><li><div class="pic"><img src="./images/1.svg" alt=""></div><div class="text"><h4>一键发布多端</h4><p>发布视频到抖音短视频、西瓜视频及今日头条</p> </div>   </li>         <li><div class="pic"><img src="./images/2.svg" alt=""></div><div class="text"><h4>发布携带组件</h4><p>支持分享内容携带小程序、地理位置信息等组件,扩展内容及突出地域性</p> </div>   </li>            <li><div class="pic"><img src="./images/3.svg" alt=""></div><div class="text"><h4>一键发布多端</h4><p>支持修改已发布稿件状态和实时查询视频审核状态</p> </div>   </li><li><div class="pic"><img src="./images/4.svg" alt=""></div><div class="text"><h4>数据评估分析</h4><p>获取视频在对应产品内的数据表现、获取抖音热点,及时进行表
现评估</p> </div>   </li></ul></div>
</body>
</html>

这篇关于Web前端一套全部清晰 ⑨ day5 CSS.4 标准流、浮动、Flex布局的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

笔记本电脑屏幕模糊?6招恢复屏幕清晰!

在数字化时代的浪潮中,笔记本电脑已成为我们生活、学习和工作中不可或缺的一部分。然而,当那曾经清晰明亮的屏幕逐渐变得模糊不清时,无疑给我们的使用体验蒙上了一层阴影。屏幕模糊不仅影响视觉舒适度,更可能对我们的工作效率和眼睛健康构成威胁。 遇到笔记本电脑屏幕模糊的情况时我们应该如何解决?本文将与大家分享6个简单易懂的解决方法。 方法一:调整Windows分辨率 电脑屏幕模糊显示不清晰怎

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

vue+el国际化-东抄西鉴组合拳

vue-i18n 国际化参考 https://blog.csdn.net/zuorishu/article/details/81708585 说得比较详细。 另外做点补充,比如这里cn下的可以以项目模块加公共模块来细分。 import zhLocale from 'element-ui/lib/locale/lang/zh-CN' //引入element语言包const cn = {mess

vue同页面多路由懒加载-及可能存在问题的解决方式

先上图,再解释 图一是多路由页面,图二是路由文件。从图一可以看出每个router-view对应的name都不一样。从图二可以看出层路由对应的组件加载方式要跟图一中的name相对应,并且图二的路由层在跟图一对应的页面中要加上components层,多一个s结尾,里面的的方法名就是图一路由的name值,里面还可以照样用懒加载的方式。 页面上其他的路由在路由文件中也跟图二是一样的写法。 附送可能存在

vue+elementUI下拉框联动显示

<el-row><el-col :span="12"><el-form-item label="主账号:" prop="partyAccountId" :rules="[ { required: true, message: '主账号不能为空'}]"><el-select v-model="detailForm.partyAccountId" filterable placeholder="