一、flex布局体验

1.1 传统布局 flex 布局

1. 2 初体验

1. 搭建 HTML 结构

<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>

2. 添加样式

<style>
div {
width: 80%;
height: 300px;
background-color: pink;
display: flex;
justify-content: space-around; }
div span {
width: 150px;
height: 100px;
background-color: purple;
margin-right: 5px;
}
</style>



在 div中 添加 display: flex; justify-content: space-around;



并且是自适应的效果

在 span 中添加 flex:1;,可以实现三等分

二、 flex 布局原理

2.1 布局原理

注意:不管是块级元素,还是行内元素,都可以使用 flex 布局

三、flex布局父项常见属性

3.1 常见父项属性

3.2 flex-direction 设置主轴的方向

1.主轴与侧轴

2. 属性值



栗子:

<style>
div {
width: 80%;
height: 300px;
background-color: pink;
/*给父级添加 flex 属性*/
display: flex;
}
div span {
width: 150px;
height: 100px;
background-color: purple;
margin-right: 5px;
}
</style>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</body>

默认就是 默认的主轴就是 x 轴 行 row flex-direction:row;

那么 y 轴就是 侧轴

我们的元素是跟着主轴来排列的

x 轴翻转: flex-direction: row-reverse;



我们可以把主轴弄成 y 轴,那么 x 轴就成为了 侧轴

flex-direction: column;

flex-direction: column-reverse;

3.3 justify-content 设置主轴上的排列方式

注意:只跟主轴来走,跟侧轴没有关系



栗子:

<style>
div {
width: 60%;
height: 300px;
background-color: pink;
display: flex;
/*justify-content:是设置主轴上元素的排列方式*/
/*默认从左到右排列*/
/*justify-content: flex-start;*/
}
div span {
width: 150px;
height: 100px;
background-color: purple;
margin-right: 5px;
margin-bottom: 5px;
}
</style>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
</body>

  1. 让子元素从尾部(从右到左或者从下往上)排列

    justify-content: flex-end;

  2. 让我们的子元素居中对齐

    justify-content: center;

  3. 平方剩余空间

    justify-content: space-around;

每个子元素的 margin-left 和 margin-right 都是相等的

  1. 先两边贴边,再分配剩余的空间

    justify-content: space-between;



5. 设置主轴为 Y 轴并且沿 Y 轴 垂直居中

flex-direction: column;

justify-content: center;

3.4 flex-wrap 设置子元素是否换行

栗子:

<style>
div {
width: 500px;
height: 300px;
background-color: pink;
display: flex;
}
div span {
width: 150px;
height: 100px;
background-color: purple;
margin-right: 5px;
margin-bottom: 5px;
}
</style>

注意: 在 flex 布局中,默认子元素是不换行的,如果子元素添加的话,父元素装不下子元素,会缩小子元素的宽度,放到父元素里面

默认是 flex-wrap : nowrap



让子元素换行显示: flex-wrap: wrap;

3.5 align-items设置侧轴上的子元素排列方式(单行)



栗子:

  1. 实现水平居中和垂直居中(前提是主轴是默认的 x 轴)
<style>
div {
width: 800px;
height: 300px;
background-color: pink;
display: flex;
justify-content: center;
align-items: center;
}
div span {
width: 150px;
height: 100px;
background-color: purple;
margin: 10px;
}
</style>

  1. align-items: flex-start;

  2. align-items: flex-end;

  3. 如果设置主轴是 y 轴的话

    display: flex;

    justify-content: center;

    align-items: center;

    flex-direction: column;

  4. 拉伸,但是子元素不给高度,不然是没有效果的

    align-items: stretch;

3.6 align-content 设置侧轴上的子元素的排列方式(多行)



栗子:

  1. 设置 align-content: flex-start;
div {
width: 600px;
height: 300px;
background-color: pink;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}

  1. 设置 align-content:center

  2. 设置 align-content: space-between;

  3. 设置 align-content: space-around;

3. 6 align-itemsalign-content 的区别

3.7 flex-flow



栗子:

flex- flow: column wrap

就相当于同时设置了

flex-wrap: wrap;flex-direction: column;

四、flex 布局子项常见属性

4.1 flex 属性

栗子:

<style>
section {
display: flex;
width: 80%;
height: 150px;
/*background-color: green;*/
}
section div:nth-child(1){
width: 100px;
height: 150px;
background-color: pink;
}
section div:nth-child(2){
flex: 1;
background-color: purple;
}
section div:nth-child(3){
width: 100px;
height: 150px;
background-color: orange;
}
</style>
<body>
<section>
<div></div>
<div></div>
<div></div>
</section>
</body>



左右两侧是固定的,中间是自适应的

栗子2:

 p {
width: 80%;
height: 150px;
margin: 50px auto;
background-color: pink;
display: flex;
}
p span{
flex: 1;
}
<p>
<span>1</span>
<span>2</span>
<span>3</span>
</p>

注意:不给子项宽度,默认剩余宽度就是父盒子的宽度

栗子3:

    p span{
flex: 1;
}
p span:nth-child(2){
background-color: purple;
flex: 2;
}



并且三个span都可以进行自适应

4.2 align-self 控制子项自己在侧轴上的排列方式

栗子:

<style>
div {
width: 60%;
height: 300px;
background-color: pink;
display: flex;
}
div span{
width: 150px;
height: 100px;
background-color: purple;
margin-right: 5px;
</style>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>



我们想要 第三个盒子在下面底侧

div span:nth-child(3){
align-items: flex-end
}

4.3 order 属性定义项目的排列顺序



栗子:

 div span:nth-child(2){
order: -1;
}

第2个盒子与第1个盒子交换了,order默认是0,这里设置了-1 ,所以第2个盒子跑到了第1个盒子的前面

五、携程网首页制作

https://blog.csdn.net/qq_45103612/article/details/111146551

移动 WEB 开发布局方式 ---- flex 布局的更多相关文章

  1. 移动Web开发-WebApp(flex布局+移动端导航案例)

    实际开发中的像素:css像素设备像素比dpr=设备像素/css像素标清屏dpr=1 高清屏dpr=2缩放改变的是css像素大小PPI(每英寸的物理像素点)=根号(屏幕横向分辨率²+屏幕纵向分辨率²)/ ...

  2. 布局方式-flex布局

    .弹性盒子 .盒子本来就是并列的 .指定宽度即可 <style> .container { width: 800px; height: 200px; display: flex; bord ...

  3. 弹性布局(Flex布局)整理

    一.  弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ...

  4. 前端(八)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

    高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 ...

  5. cdispaly的Grid布局与Flex布局

    cdispaly的Grid布局与Flex布局 Gird 布局与 Flex 布局有一定的相似性,都是对容器的内部项目进行划分. Flex 布局是轴线布局,只能指定项目针对轴线的位置,可以看作成一维布局 ...

  6. 2021年3月-第02阶段-前端基础-Flex 伸缩布局-移动WEB开发_流式布局

    移动web开发流式布局 1.0 移动端基础 1.1 浏览器现状 PC端常见浏览器:360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器. 移动端常见浏览器:UC浏览器, ...

  7. 浅谈新的布局方式-flex

    引言: 网页布局在flex出来之前,是由盒模型为底子,float,position,table,百分比来进行布局的,重绘的比较多,影响性能,复杂又不好维护.flex布局,可以简便.完整.响应式地实现各 ...

  8. css3弹性伸缩布局(一)—————flex布局

    CSS3弹性伸缩布局简介 2009年,W3C提出了一种崭新的方案—-Flex布局(即弹性伸缩布局),它可以简便.完整.响应式地实现各种页面布局,包括一直让人很头疼的垂直水平居中也变得很简单地就迎刃而解 ...

  9. CSS布局方式--inline-block 布局

    布局其实就是想办法怎样将一些元素横向的排列起来,纵向由于块级元素的存在会自动占据一行. inline-block 元素会占据一行而且可以调整宽高很适合将这些元素排列在一行,而且使用 inline-bl ...

  10. 关于基本布局之——Flex布局

    Flex布局 1.Flex为"Flexible Box"的简称,即为弹性布局,可作用于任何容器上.给div这类块状元素元素设置display:flex或者给span这类内联元素设置 ...

随机推荐

  1. FastApi学习

    vscode配置 插件 code runner在 setting.json中关于python的修改为,因为我使用了虚拟环境,得让vscode找到python的路径 "code-runner. ...

  2. Websocket集群解决方案

    最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息. 所谓的全双工表示客户端和服务端都能向对方发送消息.不使用 ...

  3. Asp.Net Core6.0中MediatR的应用CQRS

    1.前言 对于简单的系统而言模型与数据可以进行直接的映射,比如说三层模型就足够支撑项目的需求了.对于这种简单的系统我们过度设计说白了无异于增加成本,因为对于一般的CRUD来说我们不用特别区分查询和增删 ...

  4. uniapp之uni-starter小程序多端研发框架搭建与项目实践

    随着移动互联网的飞速发展,无数移动APP琳琅满目:在移动App的发展的基础上,衍生了小程序.轻应用技术,它随时可用,但又无需安装卸载.小程序是一种不需要下载安装即可使用的应用,它实现了应用" ...

  5. 什么是 X.509 证书以及它是如何工作的?

    X.509 证书是基于广泛接受的国际电信联盟 (ITU) X.509 标准的数字证书,该标准定义了公钥基础设施 (PKI) 证书的格式. 它们用于管理互联网通信和计算机网络中的身份和安全. 它们不显眼 ...

  6. Java判断质数/素数的三种方法

    介绍 质数:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数(素数) 解法 解法一:暴力枚举 枚举从2 ~ N的每一个数 实际上不用枚举到N,只需要枚举到√N就行 注意: 不要使用sqrt ...

  7. Conda 环境移植 (两种方式)

    ------------------------方法一------------------------ 优点: 在原机器上需要进行的操作较少,且除了conda不需要其余的库来支撑:需要传输的文件小,操 ...

  8. Android Studio 卡在download fastutil下载慢

    需要替换国内镜像,现在阿里云地址已经更新了.需要使用新的地址.可以参考 https://developer.aliyun.com/mvn/guide 以下是更改buil.gradle文件的代码 // ...

  9. 5 STL-string

    ​ 重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦!  生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...

  10. 关于仿照js写python算法

    前言 我们学校的统一认证的登录系统,用了一套不知道哪弄来的 js加密算法 (我已经查到了,应该是出自这里 地址),有一个参数是通过 js 计算得到的,无奈我先想模拟登录就必须解决这个算法,这个说明是d ...