1.用定位实现两栏布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>两栏布局</title>
<style>
*{
margin:0;
padding:0;
}
.right{
position:absolute;
right:0;
width:100px;
height:50px;
background-color:#f66;
opacity:0.5;
}
.left{
margin-right:100px;
height:50px;
background-color:#ff3;
}
</style>
</head>
<body>
<div class="right"></div>
<div class="left"></div>
</body>
</html>
注意:一定要先写right,先出生,不然定义了位置之后他会在出生时的位置进行定位
2.两个bug(margin塌陷和margin合并)
margin塌陷:父子嵌套的两个或多个元素的margin-top属性,会取最大的那个值,而且全部元素会一起动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>margin塌陷</title>
<style>
*{
margin:0;
padding:0;
}
.wrapper{
width:100px;
height:100px;
background-color:black;
margin-top:100px;
}
.contern{
width:50px;
height:50px;
background-color:green;
/*会取这个值并且带着父级一起动*/
margin-top:150px;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="contern"></div>
</div>
</body>
</html>
*解决margin塌陷的方法====bfc*
1.如何出发一个盒子的bfc
①position:absolute
②display:inline-block
③float:left/right
④overflow:hidden//溢出盒子的部分要隐藏起来
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>解决margin塌陷</title>
<style>
*{
margin:0;
padding:0;
}
.wrapper{
width:100px;
height:100px;
background-color:black;
margin-top:100px;
/*超出盒子的部分会被隐藏,让这个大盒子变成bfc,
假如要他超出的部分隐藏了,就用overflow:hidden*/
/*overflow:hidden;*/
/*display:inline-block;*/
/*position:absolute;*/
/*float:left;*/
float:right;
}
.contern{
width:50px;
height:50px;
background-color:green;
margin-top:40px;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="contern"></div>
</div>
</body>
</html>
margin合并
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>margin合并</title>
<style>
*{
margin:0;
padding:0;
}
.wrapper{
height:10px;
background-color:red;
/*和margin-top合并了,两个div的距离只有500px,
如果margin-top:600px那么两个div的距离只有600px,
就像是两个两个国家不能同时共用同一个领地,但是margin
合并可以*/
margin-bottom:500px;
}
.wrapper1{
height:10px;
background-color:green;
margin-top:400px;
}
</style>
</head>
<body>
<div class="wrapper"></div>
<div class="wrapper1"></div>
</body>
</html>
如何解决margin合并的bug,触发bfc(但是在现实开发中,不需要解决合并问题)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>margin合并</title>
<style>
*{
margin:0;
padding:0;
}
.wrapper{
height:10px;
background-color:red;
margin-bottom:500px;
}
.wrapper1{
height:10px;
background-color:green;
margin-top:400px;
}
/*让他在一个bfc里面*/
.wwwww{
overflow: hidden;
}
</style>
</head>
<body>
<!-- ① -->
<!-- <div class="wwwww">
<div class="wrapper"></div>
</div>
<div class="wwwww">
<div class="wrapper1"></div>
</div> -->
<!-- ② -->
<!-- <div class="wrapper"></div>
<div class="wwwww">
<div class="wrapper1"></div>
</div> -->
<!-- ③ -->
<div class="wrapper1"></div>
<div class="wwwww">
<div class="wrapper"></div>
</div>
</body>
</html>
3.浮动元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动元素float</title>
<style>
*{
margin:0;
padding:0;
}
.wrapper{
width:350px;
height:300px;
border:1px solid black;
}
.contern{
/*浮动元素*/
float:left;
height:100px;
width:100px;
color:#fff;
background-color:black;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="contern">1</div>
<div class="contern">2</div>
<div class="contern">3</div>
<div class="contern">4</div>
<div class="contern">5</div>
<div class="contern">6</div>
<div class="contern">7</div>
</div>
</body>
</html>
3.浮动元素产生浮动流
①所有产生浮动流的元素,块级元素看不见他们,所以如下例子demo就会跑上去。
②但是产生了bfc的元素和文本类属性的元素inline以及文本 都能看到浮动属性,就不会跑上 去,而是在box后面展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动元素float</title>
<style>
*{
margin:0;
padding:0;
}
.box{
float:left;
height:100px;
width:100px;
background-color:red;
opacity:0.5;
}
.demo{
height:150px;
width:150px;
background-color:green;
}
</style>
</head>
<body>
<div class="box"></div>
<div class="demo"></div>
</body>
</html>
4.用伪元素清除浮动流
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用伪元素清除浮动元素</title>
<style>
*{
margin:0;
padding:0;
}
.wrapper{
border:1px solid black;
}
.contern{
/*浮动元素,产生了浮动流,wrapper元素变成行级标签*/
float:left;
height:100px;
width:100px;
color:#fff;
background-color:black;
}
.wrapper::after{
/*因为clear属性只能由块级元素调配所以让wrapper元素变成块级元素*/
clear:both;
display:block;
/*content一定要加*/
content:"";
}
</style>
</head>
<body>
<div class="wrapper">
<div class="contern">1</div>
<div class="contern">2</div>
<div class="contern">3</div>
</div>
</body>
</html>
浮动作用
1、用浮动实现文字环绕图片的效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用浮动实现文字环绕图片的效果</title>
<style>
*{
margin:0;
padding:0;
}
img{
float:left;
height:100px;
width:100px;
}
</style>
</head>
<body>
<img src="捕获.png" alt="">
<span>文本,是指书面语言的表现形式,从文学角度说,通常是具有完整、系统含义(Message)的一个句子或多个句子的组合。一个文本可以是一个句子(Sentence)、一个段落(Paragraph)或者一个篇章(Discourse)。广义“文本”:任何由书写所固定下来的任何话语。(利科尔) 狭义“文本”:由语言文字组成的文学实体,代指“作品”,相对于作者、世界构成一个独立、自足的系统。文本,是指书面语言的表现形式,从文学角度说,通常是具有完整、系统含义(Message)的一个句子或多个句子的组合。一个文本可以是一个句子(Sentence)、一个段落(Paragraph)或者一个篇章(Discourse)。广义“文本”:任何由书写所固定下来的任何话语。(利科尔) 狭义“文本”:由语言文字组成的文学实体,代指“作品”,相对于作者、世界构成一个独立、自足的系统。文本,是指书面语言的表现形式,从文学角度说,通常是具有完整、系统含义(Message)的一个句子或多个句子的组合。一个文本可以是 </span>
</body>
</html>
2.制作导航栏
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>导航栏</title>
<style>
*{
margin:0;
padding:0;
color:#424242;
font-family: arial;
}
.nav{
list-style: none;
}
/*清除浮动流*/
.nav::after{
content:"";
display:block;
clear:both;
}
/*产生浮动流*/
.nav .List-item{
float:left;
margin-left: 5px;
height:30px;
line-height: 30px;
}
a{
text-decoration: none;
}
.nav .List-item a{
display: block;
height:30px;
color:#f40;
padding:0 5px;
border-radius: 15px;
}
/*鼠标移上去的效果*/
.nav .List-item a:hover{
background-color: #f40;
color:#fff;
}
</style>
</head>
<body>
<ul class="nav">
<li class="List-item"><a href="#">天猫</a></li>
<li class="List-item"><a href="#">聚划算</a></li>
<li class="List-item"><a href="#">天猫超市</a></li>
</ul>
</body>
</html>