盒子模型css
盒子模型(框模型 box model)浏览器
- 浏览器在渲染页面时,它会将页面中的每个元素都想象成是一个矩形的盒子。布局
- 想象成盒子之后,对于页面的布局就变成了如何摆放盒子字体
- 每个盒子从内到外都有如下几个部分组成spa
内容区(content):内容区决定这个盒子能装多少东西(子元素)orm
内边距(padding):内容区和边框之间的距离blog
边框(border):盒子的边框,边框,是盒子的边界,出了边框就是盒子外部的开发
外边距(margin):盒子距离其余盒子的距离文档
边框(border)页面布局
边框相关的三个样式
border-color 边框的颜色 border-color:#00ffcc;
border-style 边框的样式 border-style:dashed;
border-width 边框的宽度 border-width:30px;
边框会影响到盒子的可见框大小
border-width表示边框的宽度
- 能够经过该属性分别制定边框四个方向的宽度
border-width: 10px 20px 30px 40px;
若是指定了四个宽度,则会分别设置上右下左四个方向的边框的宽度
border-width: 10px 20px 30px;
三个值:上 左右 下
border-width: 10px 20px;
两个值:上下 左右
border-width: 10px;
一个值:上下左右
border-color边框的颜色,能够分别指定四个边的颜色,规则和border-width同样。
border-color: red orange blue aqua; 上右下左----顺时针旋转
border-color: silver;
border-style 指定边框的样式
solid 实线
dotted 点状虚线
dashed 虚线
double 双线
border-style: solid dotted dashed double;------顺时针旋转
border-style: solid dotted dashed ;--------------上左右下
border-style: solid dotted;------------------------上下左右
border-right: yellow solid ;
边框(border)
不指定宽度,默认宽度 通常3px
不指定颜色,默认使用字体颜色-随字体颜色变
边框可同时设置四个方向边框的宽度、颜色、样式,而且没有顺序要求
border:red 10px solid
除了border还有四个
border-top 上 border-right 右 border-bottom 下 border-left 左
内边距(padding)边框和内容区之间的距离叫作内边距
盒子的可见框大小由内容区,内边距和边框共同决定
四个方向的内边距
padding-top 上 padding-right 右 padding-bottom下 padding-left 左
经过padding来同时设置四个方向的内边距,规则和border-width同样
padding: 10px 20px 30px 40px;
padding: 10px 20px 30px ;
padding: 10px 20px ;
padding: 10px ;
外边框(margin)
当前盒子和其余盒子之间的距离,外边距不会影响盒子的可见框的大小,可是外边距会影响到盒子实际占地的大小,影响盒子的位置。
四个方向的外边距:
margin-top margin-right margin-bottom margin-left
因为在浏览器中默认状况下,元素是靠左靠上排列的,因此设置上左外边距时,会移动元素自身,而设置下和右外边距时,会移动其余元素
外边距能够是负值,若是是负值则元素会向相反方向移动 margin-top: -50px;
同时设置四个方向的外边距margin: 10px 20px 30px 40px;
水平方向布局
子元素在父元素的位置是父元素的内容区
子元素在父元素中的水平方向的布局,必须知足以下等式
margin-left + border-left + padding-left + width + padding-right + border-right + margin-right = 父元素的width(7个值和[自动补全]=父元素的宽度)
在水平方向,有三个值能够设置auto
分别是 margin-left width margin-right
设置为auto之后,浏览器会自动计算该属性的值
- 若七个值和相加不等于父元素宽度,则属于过分约束,则浏览器会自动调整右外边距的值
- 若是将margin-left 或 margin-right 的一侧设置为auto,则另外一侧会设置尽可能大的值
- 若left和right都设置auto,则会将两侧外边距设置相等的值,致使子元素在父元素中水平居中
垂直方向布局:(简单)
margin-top+border-top+padding-top+height+margin-bottom+border-bottom+padding-bottom=父元素高度
box1>box2:
width设置auto时,子元素会占满父元素
height设置auto时,父元素的高度由子元素内容决定
1. 当父元素写死时,子元素的高度高于父元素时,会溢出,溢出的子元素不会影响页面布局。
使用 overflow 来设置溢出内容的处理方式:
可选值:
visible,默认值 溢出内容不会被裁剪直接在父元素外部显示
hidden,溢出的内容会被裁剪,超过父元素的不会显示
scroll,生成滚动条,能够经过滚动条查看完整内容,滚动条一直在
auto,根据须要生成滚动条
2. 兄弟元素的外边距的折叠(margin)
.box1{
height:100px;
Width:100px;
Margin-bottom:100px;
}
.box2{
height:100px;
Width:100px;
Margin-top:100px;
}
外边距的折叠,垂直方向相邻的外边距,会发生外边距折叠现象。
兄弟元素间的相邻外边距,会去两个外边距间的最大值(正值);若是是负值,取绝对值较大的。
两个外边距:相邻的外边距,谁大用谁的距离
一正一负:取两个值的和
3. 父子元素的外边距折叠
父子元素的相邻垂直外边距,子元素的外边距会传递给父元素
.box1{
width:200px;
heigth:300px;
background-color:#bfa;
border-top:1px red solid;
}
.box2{
width:200px;
heigth:300px;
background-color:orange;
margin-top:100px;
}
4. 文档流(常规流、标准流)
-文档流是网页中的一个位置,默认状况下页面中的全部元素都在文档流中排列
-块元素在文档流中的特色
<div> </div>
-行内元素在文档流中的特色
<span> </span>
5. 行内元素的盒模型
内联元素不支持设置宽度和高度<span> </span>
内联元素能够设置padding(border),但垂直方向padding(border)不会影响页面的布局
内联元素支持水平方向的外边距,不支持垂直方向的
6. display
-指定元素所产生的框的类型
-可选值:
inline行内元素
block块元素
inline-block行内块元素
-既有行内元素的特色,不会独占一行;又有块元素的特色,可设置宽高
none元素不在页面中显示
内联元素没法改变宽度和高度,将超连接变成块元素,就能够改变大小
display:block;
a{
width:200px;
height:200px;
background:#ofd;
dispaly:none;
}
.box1:hover a { ////鼠标碰到链接时出现
display:block;///////////inline
}
7. visibility设置元素的显示状态
可选值:visible:默认值,元素正常显示
hidden不显示元素,但元素依旧占据位置
display:none :不显示元素,并且不占据位置
8. 二级菜单
当鼠标移动到xxx时,显示二级菜单
.outer>xxx:hover .inner{祖先与后代关系
display:block;}
9. 默认样式
为了确保网页在没有样式的状况下,也能够浏览,因此浏览器都会为网页设置一些默认样式,对开发者来讲没有任何做用,而且不一样的浏览器所设置的默认样式不一样,开发中第一件事就是去除浏览器的默认样式。
*{margin:0;
padding:0; 去掉全部边框,外边界}
重点:CSS权威指南---利用reset.css直接引入,能够去除全部默认样式,推荐
normalize.css--统一
10. 块元素和行内元素通常状况下,只会在块中放内联元素,不会向内联元素放块元素
块元素:用于页面的布局 p:不能听任何块元素
行内元素:主要用于页面中选中文字 a:什么都能放,除了本身
11. .img-list
{height:190px;
width:470px;
background-color:#33ffss;
margin:auto; //居中
list-style:none; //去掉列表前面的样式}
.img-list img{
height:100%;
width:100%;}
<ul class=’img-list’>
<li><a href=”#”><img src=”img/1.jpg”></a></li>
<li><a href=”#”><img src=”img/2.jpg”></a></li>
<li><a href=”#”><img src=”img/3.jpg”></a></li>
</ul>
12. 文本修饰text-decoration:none: 去除下划线
<style>
.nav {width:190px;
height:450px;
padding:10px 0;
margin:0 auto;
list-style:none;
background-color:white;}
.nav li {height:25px;
padding-left:18px;}
.nav li:hover{
background-color:gray;}
.nav li a{
font-size:18px;
text-decoration:none;
color:#333;}
.nav li a:hover{
color:red;}
</style>
<ul class=’nav’>
<li><a href=”#”>xxx</a></li>
<li><a href=”#”>xxx</a><a href=”#”>xxx</a><a href=”#”>xxx</a></li>
<li><a href=”#”>xxx</a><a href=”#”>xxx</a><a href=”#”>xxx</a></li>
</ul>