浮动+flex布局

一.浮动

1.介绍

2.效果

<style>

.one{

width: 100px;

height: 100px;

background-color: red;

float: left;

}

.two{

width: 200px;

height: 200px;

background-color: blue;

float: right;

}

</style>

</head>

<body>

<div class="one">爱</div>

<div class="two">keadasf</div>

</body>

如果两个都是left,则效果为:

!!!如果只给一个div加float属性的话,会导致两个盒子重叠!!!

例如将.two中的float属性去掉,事实上只有.one才被系统承认

3.特点

顶对齐

具备行内块特点

脱离标准流

父级宽度不够,子级会浮动换行

4.案例

产品区域布局

4.1.效果

4.2代码

<style>

*{

margin: 0;

padding: 0;

}

li{

list-style: none;

}

.product{

margin: 50px auto;

width: 1229px;

height: 628px;

background-color: pink;

}

.left{

width: 234px;

height: 628px;

background-color: red;

float: left;

}

.right{

width: 978px;

height: 628px;

background-color: blue;

float: left;

}

.right li{

margin-bottom: 14px;

margin-right: 14px;

width: 234px;

height: 300px;

background-color: orange;

float: left;

}

.right li:nth-child(4n){

margin-right: 0;

}

</style>

</head>

<body>

<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>

4.3总结

(1)父级宽度不够,浮动的盒子会掉下来

(2)可以利用无序列表的:nth-child()取消部分盒子的内外边框

(3)版心居中 margin:上下 auto (左右设置为auto即可)

二.清除浮动

1.介绍

<style>

*{

margin: 0;

padding: 0;

}

.product{

margin: 20px auto;

width: 900px;

height: 600px;

background-color: pink;

}

.left{

width: 200px;

height: 600px;

background-color: red;

float: right;

}

.right{

width: 700px;

height: 600px;

background-color: blue;

float: left;

}

.box{

height: 100px;

background-color: black;

}

</style>

</head>

<body>

<div class="product">

<div class="left"></div>

<div class="right"></div>

</div>

<div class="box"></div>

正常情况

当父级product没设置高度时:

product高度化为0,底下的box直接上移,影响布局

2.清除浮动方法

2.1额外标签法

在父元素内容的最后添加一个块元素,并设置CSS属性 clear:both (其中除了both还有left,right指去除xx方向的浮动影响)

.clearfex{

clear: both;

}

........

<div class="product">

<div class="left"></div>

<div class="right"></div>

<div class="clearfex"></div>

</div>

<div class="box"></div>

2.2单伪元素法

.clearfex::after{

content: ""; /*伪元素法必须要有content属性,否则无法生效*/

display: block;

clear: both;

}

..........

<div class="product clearfex"> /*top要调用clearfex*/

<div class="left"></div>

<div class="right"></div>

</div>

<div class="box"></div>

2.3双伪元素法(推荐)

/*其中before是为了解决外边距塌陷问题,子级设置的外边距可能会将父级下拉)*/

.clearfex::before,

.clearfex::after{

content: "";

display: table;

}

.clearfex::after{

clear: both;

}

............

<div class="product clearfex">

<div class="left"></div>

<div class="right"></div>

</div>

<div class="box"></div>

2.4 overflow属性

剪掉超出父级的选项

overflow:hidden

2.5效果

自动撑开高度,高度为子级中最大的高度。

三.flex布局(常用)

1.介绍

2.创建flex容器(display:flex)

.box{

/* 将盒子变为弹性布局 */

display: flex;

justify-content: space-between;

/* 如果去掉height,高度根据内容浮动,不会脱标 */

height: 300px;

border: 1px solid black;

}

关于拉伸和挤压:如果子级设置了宽高,由于较多子级,则自动挤压子级的原有宽度。如果子级没有设置高度,则自动将子级拉伸为与父级盒子同高。

3.主轴对齐 (justify-content)

常用后四个属性值

4.侧轴对齐方式

!!!注意:一个是全部,一个是单独处理

!!!stretch必须不设置弹性盒子的高度才能实现拉伸

!!!控制单个盒子使用伪类选择器:

.box div:nth-child(2){

align-self: center;

}

5.修改主轴方向(flex-direction)

!!!重点记住column,如果主轴方向变化,则侧轴也会跟着变主侧两轴始终垂直

6.弹性伸缩比(flex)

.box div:nth-child(2){

flex: 1;

}

弹性盒子2占父级除13外的尺寸一大份。

.box div:nth-child(2){

flex: 1;

}

.box div:nth-child(3){

flex: 3;

}

除去盒子1,弹性盒子23分别占剩余父级尺寸的1/4和3/4。

7.弹性换行(flex-wrap)

8.弹性行对齐(align-content)

!!!弹性行对齐对单行弹性盒子不生效,所以记得换行flex-wrap

四.案例

抖音解决方案

1.效果

2.代码

大体思路为:

1.清除格式

2.大盒子嵌套四个小盒子,四个小盒子可使用无序列表(无序列表属于行标签,记得转换为弹性盒子)

3.设置大盒子:盒子大小,盒子版心位置,边框线,是否圆角等性质。

4.无序列表转弹性盒子,调整各盒子在主轴对齐方式,换行,行对齐方式,内外边距等性质。

5.四个小盒子设置宽高,里面分两个小盒子,一个图片一个文本,转为弹性两个小盒子。

6.设置两个弹性小盒子在主侧轴的分布方式,盒子背景颜色等。

7.单独设置两盒子里面的图片格式和文字大小等性质。

<title>抖音解决方案</title>

<style>

*{

margin: 0;

padding: 0;

box-sizing: border-box;

}

li{

list-style: none;

}

/*以上为清除格式*/

.box{

margin: 200px auto;

border-radius:20px;

width: 800px;

height: 400px;

border: 2px solid black;

}

.box ul{

display: flex;

justify-content: space-between; /*调整主轴方向对齐方式*/

flex-wrap: wrap; /*弹性盒子换行*/

align-content: space-around; /*行对齐*/

padding: 30px 20px 30px 20px;

height: 400px;

}

.box li{

width: 360px;

height: 150px;

display: flex;

justify-content: center;

align-items: center;

background-color: white;

}

.box .pic1{

margin-right: 15px;

}

.box .text1 h4{

font-size: 18px;

line-height: 30px;

}

.box .text1 p{

font-size: 15px;

color: #666;

}

</style>

</head>

<body>

<div class="box">

<ul>

<li>

<div class="pic1">

<img src="./抖音解决方案1.png" alt="">

</div>

<div class="text1">

<h4>一键发布多域</h4>

<p>发布头条i需要官网确认,比如新闻</p>

</div>

</li>

<li>

<div class="pic1">

<img src="./抖音解决方案2.png" alt="">

</div>

<div class="text1">

<h4>一键发布多域</h4>

<p>发布头条i需要官网确认,比如新闻</p>

</div>

</li>

<li>

<div class="pic1">

<img src="./抖音解决方案3.png" alt="">

</div>

<div class="text1">

<h4>一键发布多域</h4>

<p>发布头条i需要官网确认,比如新闻</p>

</div>

</li>

<li>

<div class="pic1">

<img src="./抖音解决方案4.png" alt="">

</div>

<div class="text1">

<h4>一键发布多域</h4>

<p>发布头条i需要官网确认,比如新闻</p>

</div>

</li>

</ul>

</div>

</body>

相关推荐
20岁30年经验的码农13 分钟前
爬虫基础
1024程序员节
licy__32 分钟前
计算机网络IP地址分类,子网掩码,子网划分复习资料
1024程序员节
Chris-zz1 小时前
Linux:磁盘深潜:探索文件系统、连接之道与库的奥秘
linux·网络·c++·1024程序员节
JasonYin~1 小时前
《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 模块化基础篇》
1024程序员节
Teamol20202 小时前
求助帖:ubuntu22.10 auto install user-data配置了为何还需要选择语言键盘(如何全自动)
linux·ubuntu·1024程序员节
尘佑不尘2 小时前
shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘
数据库·笔记·mongodb·web安全·jenkins·1024程序员节
SeniorMao0073 小时前
结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统
1024程序员节
网安_秋刀鱼3 小时前
CSRF防范及绕过
前端·安全·web安全·网络安全·csrf·1024程序员节
WW、forever3 小时前
【ArcGIS Pro实操第4期】绘制三维地图
1024程序员节