一、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. LoadRunner11脚本小技能之添加请求头+定义变量+响应内容乱码转换打印+事务拆分

    一.添加请求头 存在一些接口,发送请求时需要进行权限验证.登录验证(不加请求头时运行脚本,接口可能会报401等等),所以需要在脚本中给对应请求添加请求头.注意:请求头需在请求前添加,包含url类.su ...

  2. 查看服务器出口ip

    [root@iZap201hv2fcgry1alvbznZ ~]# curl cip.cc IP : xxx.xxx.xx.xx 地址 : 中国 浙江 绍兴 运营商 : 移动 数据二 : 浙江省绍兴市 ...

  3. Aspose.Words利用Word模板导出Word文档

    今天工作中遇到了导出Word文档的问题,但是在搜索Aspose.Words 导出Word文档时发现网上的方法都是有头没尾的,有的只有一小段实例,让人看着摸不着头脑.借着https://www.cnbl ...

  4. nginx配置https后,网站出现无法访问情况

    证书来自阿里云. Nginx配置如下 server { listen 443; server_name package.oeynet.com; root /server/wwwroot/package ...

  5. 模块/os/sys/json

    目录 内容概要 1.os模块 2.sys模块 3.json模块/实战 内容概要 os模块 sys模块 json模块/实战 1.os模块 # os模块主要是与我们的操作系统打交道 1.创建文件夹(目录) ...

  6. c#对接每人计平台获取数据

    使用c#对接到晓舟科技的客流统计设备.那么需要先注册一个平台的账号 地址:http://mrd.meirenji.cn/login;JSESSIONID=323cbd18-29ed-4232-8c04 ...

  7. 移动 VR 开发时要避免的 PC 渲染技术

    更新:本文是为 Quest 1 开发人员编写的.虽然 Quest 2 建立在相同的架构上,但现在更容易为阴影贴图(以及其他需要从先前渲染过程中生成的纹理读取的简单技术)做预算. 尽管移动芯片组可以支持 ...

  8. C#深拷贝方法

    概述 为什么要用到深拷贝呢?比如我们建了某个类Person,并且实例化出一个对象,然后,突然需要把这个对象复制一遍,并且复制出来的对象要跟之前的一模一样,来看下我们一般会怎么做. 方法一(利用反射实现 ...

  9. 使用NPOI core插入图片

    闲的无聊,封装一个NPOI core插入图片,下面贴上代码,有注释,我就不讲解了 public class ExcelHelper { /// <summary> /// excel插入图 ...

  10. Javascript | 模拟mvc实现点餐程序

    MVC模式是一个比较成熟的开发模式.M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.其中,View的定义比较清晰,就是用 ...