布局
文档流简介
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>布局-文档流</title>
<style>
/* 块元素 在页面中独占一行
默认宽度:是父元素的全部
默认宽度:根据内容成长
*/
.box1{
width: 100px;
background-color: yellow;
}
.box2{
width: 100px;
background-color: red;
}
/* 行内元素 不会独占一行,只占自己的大小
行内元素在水平上自左向右,一行不够,自动换行
默认宽度和高度都是被内容撑开
*/
span{
background-color: #bfa;
}
</style>
</head>
<body>
<!-- 文档流 网页是一个多层结构
通过css可以分别为每一层设置样式
作为用户来讲只能看见最顶上的一层
我们创建的元素默认都在文档流中进行排序
状态 在文档流中
不在文档流中(脱离文档流)
-->
<div class="box1">我是div1</div>
<div class="box2">我是div2</div>
<span>我是span 1</span>
<span>我是span2</span>
<span>我是span 1</span>
<span>我是span2</span>
<span>我是span 1</span>
<span>我是span2</span>
<span>我是span 1</span>
<span>我是span2</span>
<span>我是span 1</span>
<span>我是span2</span>
</body>
</html>
盒子模型由以下几个部分组成
内容区(content):存放内容
内边距(padding):内容与边框的距离
边框(border):盒子的边界
外边距(margin):盒子与盒子之间的位置
以下是边框的样式设置
border:宽度、样式、颜色
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>盒模型</title>
<style>
.box1{
/* 内容区(content):元素中的所有子元素和文本内容的设置都是在内容区排列
包含:width: 内容去宽度
height:内容区的高度*/
width: 200px;
height: 200px;
background-color: #bfa;
}
/* 边框(border):属于盒子边缘,边框里边属于盒子内部,出了边框都是盒子的外部
设置边框:需要设置三种样式
边框的宽度:border-width
边框的颜色:border-color
边框的样式:border-style
*/
.box2{
width: 200px;
height: 200px;
background-color: aqua;
border-width: 10px;
border-color: red;
border-style: solid;
}
/* border-width:一般为3px
语法:上,右,下,左
上,左右,下
上下,左右*/
/* border-left-width
border-top-width
border-right-width
border-bottom-width*/
.box3{
width: 200px;
height: 200px;
background-color: aqua;
border-width: 10px,20px,3px,10px;
border-color: red;
border-style: solid;
}
/* border-color:语法 与width相同
border-xxx-color
默认使用字体颜色,不设置时*/
/* border-style:语法 与width相同
dotted:点状虚线
solid:实线
dashed:虚线
double:双线
默认值没有,none*/
/* 简写:可以同时设置边框的所有样式,没有顺序要求
border
border-xxx:存在left、top、bottom、right*/
.box4{
width: 100px;
height: 100px;
background-color: black;
border: 3px red solid;
}
</style>
</head>
<body>
<!-- 盒模型、盒子模型、框模型
css将页面中的所有元素都设置为一个矩形的盒子
布局就是将盒子摆放到合适的位置
组成部分
内容区(content)
内边距(padding)
边框(border)
外边距(margin)-->
<div class="box1">盒子内容区</div>
<div class="box2">边框</div>
<div class="box3"></div>
<div class="box4"></div>
</body>
</html>
内边距的设置
padding:上、右、下、左
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>内边距</title>
<style>
.box1{
width: 200px;
height: 200px;
background-color: #bfa;
border: 3px red solid;
/*
内边距(padding)
内容与边框之间的距离
一共有四个方向的内边距
padding-top:
padding-left:
padding-bottom:
padding-right: */
/* 内边距的设置会影响盒子的大小
背景颜色会延申到内边距上 */
padding-top: 100px;
padding-left: 100px;
padding-right: 100px;
padding-bottom: 100px;
}
/* padding: 简写 与border-width写法一样 */
.inner{
width: 100%;
height: 100%;
background-color: yellow;
}
/* 盒子的计算:内容区,内边距,边框共同计算 */
</style>
</head>
<body>
<div class="box1">
<div class="inner"></div>
</div>
</body>
</html>
外边距的设置
margin:上、右、下、左
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>外边距</title>
<style>
.box1{
width: 200px;
height: 200px;
background-color: #bfa;
border: 10px red solid;
/* 外边距(margin)
外边距不会影响盒子可见框
但是外边距会影响盒子的位置
一共有四个方向的外边距
margin: top;上外边距,设置一个正值,元素会向下移动:
margin-bottom: 下外边距,设置一个正值,其下边的元素会移动
margin-left: 左外边距,设置一个正值,元素会向右移动
margin-right:
元素在页面中,自左向右的顺序排列,
所以默认情况如果我们设置的左和上外边距,则会移动元素自身
而向下和右都会移动其他元素
简写:margin: 可以同时设置 上右下左*/
margin-bottom: 100px;
margin-left: 100px;
margin-top: 100px;
margin-right: 100px;
}
.box2{
width: 220px;
height: 220px;
background-color: antiquewhite;
}
</style>
</head>
<body>
<div>
<div class="box1"></div>
<div class="box2"></div>
</div>
</body>
</html>
水平布局
让盒子居中
常用写法:
width: xxxpx;
margin: 0 auto;
元素水平方向的布局
水平方向的位置,元素在其父元素水平方向的位置由以下几个属性共同决定
margin-left:
border-left:
padding-left:
width:
padding-right:
border-right:
margin-right:
一个元素在其父元素中,水平布局需要满足以下等式
margin-left:+border-left: +padding-left: +padding-right: +border-right: +margin-right
等于父元素内部宽度
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>水平布局</title>
<style>
.outer{
width: 800px;
height: 200px;
border: 10px red solid;
}
.inner{
width: auto;
height: 200px;
background-color: aqua;
margin-right: 100px;
margin-left: 200px;
/* 元素水平方向的布局
水平方向的位置,元素在其父元素水平方向的位置由以下几个属性共同决定
margin-left:
border-left:
padding-left:
width:
padding-right:
border-right:
margin-right:
一个元素在其父元素中,水平布局需要满足以下等式
margin-left:+border-left: +padding-left: +padding-right: +border-right: +margin-right
等于父元素内部宽度
200+100=800
差值margin-right自动增加500
width:
margin-left
margin-right:
以上三个可以设置为auto
三个都是auto时,width最大,
width固定,左右外边距auto,则两边宽度相同
让盒子居中
常用写法:
width: xxxpx;
margin: 0 auto;*/
}
</style>
</head>
<body>
<div class="outer">
<div class="inner">
</div>
</div>
</body>
</html>
垂直方向布局
利用overflow属性处理溢出现象
可选值:
visbile:默认值
hidden:超出部分会裁剪
scroll:滚动条,观看完整内容
auto:根据需要生成滚动条
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>垂直方向布局</title>
<style>
.outer{
background-color: aqua;
/* 默认情况下,父元素的高度被内容撑开 */
}
.inner{
width: 100px;
background-color: olive;
height: 300px;
margin-bottom: 100px;
}
.box1{
width: 200px;
height: 200px;
background-color: yellow;
overflow: auto;
}
/* 子元素在父元素的内容区中排序
if子元素的大小大于父元素,则子元素会从父元素中溢出*/
.box2{
width: 100px;
height: 400px;
background-color: greenyellow;
}
/* 利用overflow属性处理溢出现象
可选值:
visbile:默认值
hidden:超出部分会裁剪
scroll:滚动条,观看完整内容
auto:根据需要生成滚动条
*/
/* overflow-x水平方向处理
overflow-y垂直方向处理*/
</style>
</head>
<body>
<!-- <div class="outer">
<div class="inner">
</div> -->
<div class="box1">
<div class="box2"></div>
</div>
</div>
</body>
</html>
行内元素盒模型
display: 用来设置元素显示的类型
inline:将元素设置为行内元素
block:将元素设置为块元素
inline-block:将元素设置为行内块元素
特点:即可以设置宽度和高度,又不会独占一行
table:将元素设置为一个表格
none:元素不在该页面显示
visibility:用来设置元素的显示状态
visible:默认值,元素在页面中正常显示
hidden:元素在页面中隐藏,不显示,但是依然占据页面的位置
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>行内元素盒模型</title>
<style>
/* 行内元素盒模型
行内元素不支持宽度和高度
可以设置padding,但垂直方向不会影响布局
可以设置border,垂直方向的border不会影响页面的布局
可以设置margin,垂直方向的margin不会影响布局*/
.s1{
background-color: yellow;
/* padding: 100px; */
/* border: 100px solid red; */
margin: 100px;
}
.box1{
width: 200px;
height: 200px;
background-color: aquamarine;
}
a{
width: 100px;
height: 100px;
background-color: orange;
/* display: 用来设置元素显示的类型
inline:将元素设置为行内元素
block:将元素设置为块元素
inline-block:将元素设置为行内块元素
特点:即可以设置宽度和高度,又不会独占一行
table:将元素设置为一个表格
none:元素不在该页面显示
visibility:用来设置元素的显示状态
visible:默认值,元素在页面中正常显示
hidden:元素在页面中隐藏,不显示,但是依然占据页面的位置
*/
display: none;
}
</style>
</head>
<body>
<a href="javescript">超链接</a>
<span class="s1">我是span</span>
<div class="box1"></div>
</body>
</html>
默认样式
默认样式:
浏览器会元素设置一些默认样式
默认样式会影响页面布局
通常情况下,写网页时,必须去除默认样式
margin:0
padding:0
list-style:none(去除项目符号)