目录
Css第二天
本章要点:
l Css盒模型介绍和使用;
l Css元素溢出介绍及使用;
l 内联元素、块元素、内联块元素;
l 浮动、定位、Css对齐方式;
一、CSS 的盒子模型介绍和使用
1.盒子模型解释
元素在页面中显示成一个方块,类似一个盒子,CSS 盒子模型就是使用现实中盒 子来做比喻,帮助我们设置元素对应的样式。盒子模型示意图如下:
把元素叫做盒子,设置对应的样式分别为:盒子的边框(border)、盒子内的内容和边框之间的间距(padding)、盒子与盒子之间的间距(margin)。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>英莱特科技</title>
<style type="text/css">
.continer{
width: 200px;
height: 200px;
background: pink;
margin: 100px auto;
border: 10px solid black;
padding: 20px;
}
</style>
</head>
<body>
<div class="continer"></div>
</body>
</html>
2.设置边框
设置一边的边框,比如顶部边框,可以按如下设置:
border-top-color:red;/* 设置顶部边框颜色为红色 */
border-top-width:10px; /* 设置顶部边框粗细为 10px */
border-top-style:solid; /* 设置顶部边框的线性为实线,常用的有:solid(实线)
dashed(虚线) dotted(点线); */
上面三句可以简写成一句:
border-top:10px solid red;
设置其它三个边的方法和上面一样,把上面的'top'换成'left'就是设置左边,换成'right'就是设置右边,换成'bottom'就是设置底边。
四个边如果设置一样,可以将四个边的设置合并成一句:
border:10px solid red;
3.设置内间距 padding
设置盒子四边的内间距,可设置如下:
padding-top:20px;/* 设置顶部内间距 20px */
padding-left:30px;/* 设置左边内间距 30px */
padding-right:40px;/* 设置右边内间距 40px */
padding-bottom:50px; /* 设置底部内间距 50px */
上面的设置可以简写如下:
padding:20px 40px 50px 30px; /* 四个值按照顺时针方向,分别设置的是 上 右 下 左
四个方向的内边距值。 */
padding 后面还可以跟 3 个值,2 个值和 1 个值,它们分别设置的项目如下:
padding:20px 40px 50px; /* 设置顶部内边距为 20px,左右内边距为 40px,底部内边距为 50px
*/
padding:20px 40px; /* 设置上下内边距为 20px,左右内边距为 40px*/ padding: 20px; /* 设置四边内边距为 20px */
4.设置外间距 margin
外边距的设置方法和 padding的设置方法相同,将上面设置项中的
'padding'换成'margin'就是外边距设置方法。盒子模型的尺寸
按照下面代码制作页面:
实例代码_07:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.box01{
width: 50px;
height: 50px;
background-color: gold;
}
.box02 {
width: 50px;
height: 50px;
background-color: gold;
border: 50px solid #000
}
.box03 {
width: 50px;
height: 50px;
background-color: gold;
border: 50px solid #000;
padding: 50px;
}
</style>
</head>
<body>
<div class="box01">1</div>
<br />
<div class="box02">2</div>
<br />
<div class="box03">3</div>
</body>
</html>
页面显示效果如下:
通过上面的页面得出结论:盒子的 width 和height 设置的是盒子内容的宽和高,不是盒子本身的宽和高,盒子的真实尺寸计算公式如下:
思考题型:
1.在布局中,如果我想增大内容和边框的距离,又不想改变盒子显示的尺寸,应该怎么做?
练习
请制作图中所示的标题:
5.margin 相关技巧
-
设置元素水平居中: margin:x auto;
-
margin 负值使元素位置及边框合并
6.外边距合并
外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
实例代码_08:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实例代码_08</title>
<style type="text/css">
.div_01{
width: 200px;
height: 200px;
background-color: orange;
margin-bottom: 100px;
}
.div_02{
width: 200px;
height: 200px;
background-color: gray;
margin-top: 50px;
}
</style>
</head>
<body>
<div class="div_01"></div>
<div class="div_02"></div>
</body>
</html>
7.margin-top 塌陷
在两个盒子嵌套时候,内部的盒子设置的margin-top 会加到外边的盒子上,导致内部的盒子 margin-top 设置失败,解决方法如下:
1、外部盒子设置一个边框
2、外部盒子设置overflow:hidden
3、使用伪元素类:
.clearfix:before{ conten t: '';
display:table;
}
实例代码_09:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实例代码_09</title>
<style type="text/css">
.continer{
width: 400px;
height: 400px;
background-color: deepskyblue;
/*解决方式:*/
/*(1)给父元素设置overflow:hidden*/;
/*overflow:hidden;*/
/*(2)给父元素添加边框属性*/
/*border: 1px solid black;*/
}
/*(3)使用伪类元素 解决*/
.continer:before{
content: '';
display: table;
}
.iner{
width: 200px;
height: 200px;
background-color: pink;
/*产生margin-top塌陷问题*/
margin-top: 100px;
}
</style>
</head>
<body>
<div class="continer">
<div class="iner"></div>
</div>
</body>
</html>
二、CSS 元素溢出
当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式, 设置的方法是通过 overflow 属性来设置。
overflow 属性介绍:
1、visible 默认值。内容不会被修剪,会呈现在元素框之外。
2、hidden 内容会被修剪,并且其余内容是不可见的,此属性还有清除浮动、清除margin-top 塌陷的功能。
3、scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
4、auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
5、inherit 规定应该从父元素继承 overflow 属性的值。
实例代码_10:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实例代码_10</title>
<style type="text/css">
.continer{
width: 300px;
height: 200px;
margin: 100px auto;
background-color: hotpink;
/*解决方式:使用overflow属性*/
/*overflow: hidden;*/
overflow: auto;
/*overflow: scroll;*/
}
</style>
</head>
<body bgcolor="gainsboro">
<div class="continer">
学的不仅是技术更是梦想,再牛逼的梦想也抵不住你傻逼似的坚持.
元素溢出是指子元素的尺寸超出父元素时,需要设置父元素显示溢出的子元素的方式
设置的方式是通过overflow属性
overflow 的设置项:
1、visible 默认值。内容不会被修剪,会呈现在元素框之外。
2、hidden 内容会被修剪,并且其余内容是不可见的,此属性还有清除浮动、清除margin-top 塌陷的功能。
3、scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
4、auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
5、inherit 规定应该从父元素继承 overflow 属性的值。
</div>
</body>
</html>
三、块元素、内联元素、内联块元素
元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。
1.**块元素**
块元素,也可以称为行元素,布局中常用的标签如:div、p、ul、li、h1~h6、dl、
dt、dd 等等都是块元素,它在布局中的行为:
支持全部的样式
如果没有设置宽度,默认的宽度为父级宽度 100% 盒子占据一行、即使设置了宽度同样也是父级宽度100%。
实例代码_11:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.div_01{
width: 500px;
height: 200px;
background: plum;
}
.inner{
/*子元素没有设置宽度,其宽度为 父元素的100%*/
height: 100px;
background: orange;
}
</style>
</head>
<body>
<div class="div_01">父级div元素
<div class="inner">子级div元素</div>
</div>
</body>
</html>
2.**内联元素**
内联元素,也可以称为行内元素,布局中常用的标签如:a、span、em、b、strong、
i 等等都是内联元素,它们在布局中的行为:
Ø 支持部分样式(不支持宽、高、margin上下、padding 上下)
Ø 宽高由内容决定
Ø 盒子并在一行
Ø 代码换行,盒子之间会产生间距
Ø 子元素是内联元素,父元素可以用text-align 属性设置子元素水平对齐方式,用line-height 属性值设置垂直对齐方式
解决内联元素间隙的方法
1、去掉内联元素之间的换行
2、将内联元素的父级设置 font-size 为 0,内联元素自身再设置 font-size
实例代码_12:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实例代码_12</title>
<style type="text/css">
a{
background: pink;
width: 200px;
height: 200px;
border: 2px solid red;
}
span{
/*元素span设置宽高失效,因为是内联元素*/
width: 300px;
height: 300px;
background: orange;
}
</style>
</head>
<body
style="font-size: 0px;">
<!--内联元素并在文档流的一行显示,不会独占一行. 并且设置宽高不起作用-->
<!--重点: 内联元素 之间的缝隙问题?
解决方案:
(1)取消内联元素的之间的换行: 如下显示-->
<!--<a href="http://www.yltedu.com">英莱特科技</a><span>span标签也是内联元素,设置宽高失效</span>-->
<!--(2)给其父元素添加font-size:0px 就可解决 缝隙问题 但是要给其单独设置字体样式-->
<a href="http://www.yltedu.com"
style="font: normal 20px 仿宋;">英莱特科技</a>
<span style="font: normal 20px 仿宋;">span标签也是内联元素,设置宽高失效</span>
</body>
</html>
3.**内联块元素**
内联块元素,也叫行内块元素,是新增的元素类型,现有元素没有归于此类别的,img 和input元素的行为类似这种元素,但是也归类于内联元素,我们可以用 display 属性将块元素或者内联元素转化成这种元素。它们在布局中表现的行为:
Ø 支持全部样式
Ø 如果没有设置宽高,宽高由内容决定
Ø 盒子并在一行
Ø 代码换行,盒子会产生间距
子元素是内联块元素,父元素可以用 text-align 属性设置子元素水平对齐方式,用 line-height 属性值设置子元素垂直对齐方式
这三种元素,可以通过 display 属性来相互转化,不过实际开发中,块元素用得比较多,所以我们经常把内联元素转化为块元素,少量转化为内联块,而要使用内联元素时,直接使用内联元素,而不用块元素转化了。
display 属性
display 属性是用来设置元素的类型及隐藏的,常用的属性有:
1、none 元素隐藏且不占位置
2、block 元素以块元素显示
3、inline 元素以内联元素显示
4、inline-block 元素以内联块元素显示
实例代码_13:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实例代码_13</title>
<style type="text/css">
/*实现将内联元素a转换为块元素以及行内块元素*/
a{
width: 180px;
height: 30px;
background: orangered;
color: black;
text-decoration: none;
/*(1)使用display:block转换为块元素*/
/*display: block;*/
/*(2)使用display:inline-block转换为行内块元素*/
/*display: inline-block;*/
}
/*ul和li都是块元素: 所以占据一行显示*/
ul li{
list-style: none;
border: 1px solid cornflowerblue;
width: 100px;
height: 30px;
/*使用display:inline-block转换为内联块元素*/
display: inline-block;
}
</style>
</head>
<body>
<!--内联元素a-->
<a href="http://www.yltedu.com">点击进入英莱特官方网站(1)</a>
<a href="http://www.yltedu.com">点击进入英莱特官方网站(2)</a>
<!--块元素h1~h6/ p / ul和li等-->
<ul>
<li><a href="#">网站导航</a></li>
<li><a href="#">课程分类</a></li>
<li><a href="#">实战项目</a></li>
<li><a href="#">名师讲堂</a></li>
<li><a href="#">师资团队</a></li>
<li><a href="#">关于我们</a></li>
</ul>
</body>
</html>