浮动在原先用于解决图片文字环绕的场景(即浮动不会覆盖文字)后面逐渐演变为一种水平布局的方式
图片环绕示例:
代码如下(示例):
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
.intro {
width: 600px;
height: 400px;
background-color: #bbffaa;
margin: 0 auto;
}
/*图片的盒子*/
.img{
width: 100px;
height: 100px;
/*若想调整字体和图片的距离*/
margin: 5px 5px 0px 0px;
float: left;
/*background-color: #dddddd;*/
}
/*图片装满盒子*/
.img img{
width: 100%;
height: 100%;
}
.contend{
margin-top: 5px;
}
.clearfix::before,
.clearfix::after{
content: "";
display: table;
clear: both;
}
style>
head>
<body>
<div class="intro clearfix">
<div class="img">
<img src="1.jpg">
div>
<div class="contend"> 花是被子植物(被子植物门植物,又称有花植物或开花植物)的繁殖器官,其生物学功能的是结合雄性精细胞与雌性卵细胞以产生种子。这一进程始于传粉,然后是受精,从而形成种子并加以传播。对于高等植物而言,种子便是其下一代,而且是各物种在自然分布的主要手段。同一植物上着生的花的组合称为花序。
“花”在生活中亦常称为“花朵”或“花卉”。广义的花卉可指一切具有观赏价值的植物(或人工栽插的盆景),而狭义上则单指所有的开花植物。花卉一直广受人们的喜爱和使用,主要用于观赏,还能当食材或提炼原料。 div>
div>
body>
html>
( 让页面中的元素可以水平排列,通过浮动可以制作一些水平方向的布局 )
通过浮动可以使一个元素向其父元素的左侧或右侧移动, 使用 float 属性来设置于元素的浮动
可选值: |
---|
none 默认值 ,元素不浮动 |
left 元素向左浮动 |
right 元素向右浮动 |
1、 元素设置浮动以后,水平布局的等式便不需要强制成立
2、 元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置
3、 所以元素下边的还在文档流中的元素会自动向上移动
浮动的特点 |
---|
浮动元素会完全脱离文档流,不再占据文档流中的位置 |
设置浮动以后元素会向父元素的左侧或右侧移动, |
浮动元素默认不会从父元素中移出 |
浮动元素向左或向右移动时,不会超过它前边的其他浮动元素 |
如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移 |
浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高 |
元素设置浮动以后,将会从文档流中脱离,从文档流中脱离后,元素的一些特点也会发生变化
脱离文档流的特点:
块元素: |
---|
块元素不在独占页面的一行 |
脱离文档流以后,块元素的宽度和高度默认都被内容撑开 |
行内元素: |
---|
行内元素脱离文档流以后会变成块元素,特点和块元素一样 |
脱离文档流以后,不需要再区分块和行内了,都可以设置宽高,而且块元素不独占一行
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
.header,.body,.footer{
margin: 0 auto;
}
.header{
width: 1000px;
height: 150px;
background-color: #dddddd;
}
.body{
width: 1000px;
height: 500px;
margin: 10px auto;
background-color: #bbffaa;
}
.left{
width: 150px;
height: 500px;
background-color: olive;
float: left;
}
.contend{
width: 680px;
height: 500px;
margin: 0 10px;
background-color: darkblue;
float:left;
}
.right{
width: 150px;
height: 500px;
background-color: pink;
float: left;
}
.footer{
width: 1000px;
height: 150px;
background-color: red;
}
style>
head>
<body>
<div class="header">div>
<div class="body">
<div class="left">div>
<div class="contend">div>
<div class="right">div>
div>
<div class="footer">div>
body>
html>
在不脱离文档流的情况下,父元素的高度默认是被子元素撑开,但是在父元素中,若子元素水平布局,float:left,那么子元素就脱离了文档流,父元素的高度就没有了,这就会照成高度塌陷的问题
如:(将上诉四中的body中的父元素的高度设置取消掉)
.body{ width: 1000px; /*height: 500px;*/ margin: 10px auto; background-color: #bbffaa; }
下面的footer由于body的高度塌陷,会自动上移,照成页面布局混乱,那么我们如何解决高度塌陷的问题呢,使父元素的高度默认被其浮动的子元素撑开
元素开启BFC后的特点 |
---|
开启BFC的元素不会被浮动元素所覆盖 |
开启BFC的元素子元素和父元素上外边距不会重叠 |
开启BFC的元素可以包含浮动的子元素 |
由于其子元素浮动造成的父元素塌陷,那么将父元素也设置为浮动,父元素就会默认被子元素撑开,但是此方法换汤不换药,并未根本性解决高度塌陷的问题,父元素下面的元素照样会往上移动,而且父元素本身我们想设置为块元素独占一行,现在也不是块元素了
.body{
width: 1000px;
/*height: 500px;*/
margin: 10px auto;
background-color: #bbffaa;
/*方法一:设置为浮动*/
float: left;
}
.body{
width: 1000px;
/*height: 500px;*/
background-color: #bbffaa;
/*方法二:设置为行内块*/
display: inline-block;
margin: 10px auto;
}
缺点:在将其设置为行内块之后,其就不在独占一行,并不满足之前那个等式,那么它的margin也就无法控制其居中对齐,改变了它本身的块级元素的属性。如果我们想保持之前的效果,那么可以用下面的方法,不过就需要多套一个div
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
.header,.body,.footer{
margin: 0 auto;
}
.header{
width: 1000px;
height: 150px;
background-color: #dddddd;
}
.body{
width: 1000px;
/*height: 500px;*/
background-color: #bbffaa;
margin: 10px auto;
/*此处不设置行内块*/
}
.left{
width: 150px;
height: 500px;
background-color: olive;
float: left;
}
.contend{
width: 680px;
height: 500px;
margin: 0 10px;
background-color: darkblue;
float:left;
}
.right{
width: 150px;
height: 500px;
background-color: pink;
float: left;
}
.footer{
width: 1000px;
height: 150px;
background-color: red;
}
style>
head>
<body>
<div class="header">div>
<div class="body">
<div style="display: inline-block">
<div class="left">div>
<div class="contend">div>
<div class="right">div>
div>
div>
<div class="footer">div>
body>
html>
.body{
width: 1000px;
background-color: #bbffaa;
margin: 10px auto;
/*方法三:*/
overflow: hidden;
}
设置清除浮动以后,浏览器会自动为元素添加一个上外边距, 以使其位置不受其他元素的影响
在一个元素中,我们使用clear属性来解决其上面元素浮动对其照成的影响
属性值 |
---|
left 清除左侧浮动元素对当前元素的影响 |
right 清除右侧浮动元素对当前元素的影响 |
both 清除两侧中最大影响的那侧 |
并没有清除对右浮动的影响
clear:both 会取左浮动和有浮动中的最大值
通过css样式为父元素在末尾添加一个块,并将其块设置为清楚左右浮动的影响,这样子,父元素的内容会被子元素撑开,那么父元素的高度就和我们所期望的一样高了
但是上诉直接在html中加入div其实很没有必要,我们就希望通过css来影响它,将样式和html骨架分开,于是我们就通下诉
上外边距折叠是因为父元素和子元素的上边距紧紧挨着,之前我们讲过两种解决方法,虽然不推荐,但是我们在这里还是回忆一下
外面的盒子是200x200 里面的盒子是100x100 我们想实现里面的盒子下移100个像素。
上述就是对于浮动的整体介绍,下面我们将学习定位