目录
一、盒子模型
一、概念
什么是网页的布局?
举个例子,房子有自己的格局,网页也有自己的格局,也就是网页内容的主体规划
完成网页布局我们要学会的几个技术
1.盒子模型:完成标签和标签存在包含关系时,位置的调整
2.浮动:完成使多个块标签处于同一行的位置处理问题
3.定位:完成让块标签处于页面指定位置的处理问题,定位处理的是单个标签的问题,与其他标签无关
块标签回顾:独立占用一行的标签
行内标签回顾:不会独立占用一行的标签
网页的布局基本都是用块标签来完成的
一般做布局,使用的标签是 div 帮助我们将网页划分成多个小方块
div边线的类型:
盒子模型的基本用法:通过标签的内边距和外边距的特点调整两个有包含关系的标签的位置,就好比两个盒子,一大一小,大盒子装着小盒子,小盒子在大盒子内部位置如何调整
二、盒子模型的内边距
内边距:内部元素距离当前块元素边界的距离
PS:当设置内边距后,为了保证块标签内部的容量不变,块标签实际上是向外扩张而不是向内,所以块标签会变大,但容量还是不变的,可以在浏览器按f12进行查看
设置内边距要在CSS中使用padding属性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--
内边距:内部元素距离当前块元素边界的距离
当设置内边距后,为了保证块标签内部的容量不变,块标签实际上是向外扩张而不是向内,所以块标签会变大,但容量还是不变的,可以在浏览器按f12进行查看
-->
<style>
#insidediv{
width: 300px;
height: 300px;
background-color: yellow;
border: 1px solid red;
/*同时设置上下左右四个内边距都是100px*/
/*padding: 100px;*/
/*设置上下内边距为50px,左右内边距为100px*/
/*padding: 50px 100px;*/
/*设置上、右、下、左(顺时针)是个内边距*/
/*padding: 20px 30px 40px 50px;*/
/*分别单独设置四个内边距*/
padding-top: 30px;
padding-right: 40px;
padding-bottom: 50px;
padding-left: 60px;
}
</style>
</head>
<body>
<div id="insidediv">
这是段测试文字
</div>
</body>
</html>
三、盒子模型的外边距
外边距:设置当前块标签外部和父级块标签之间的距离
设置外边距不会让盒子变大
设置盒子模型外边距要使用margin属性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--
外边距:设置当前块标签外部和父级块标签之间的距离
设置外边距不会让盒子变大
-->
<style>
#outsidediv{
width: 300px;
height: 300px;
background-color: aqua;
border: 1px solid red;
/*设置当前块标签上下左右四个外边距都是100px*/
/*margin: 100px;*/
/*设置左右外边距是200px,上下外边距是100px*/
/*margin: 100px 200px;*/
/*设置上、右、下、左(顺时针)四个外边距*/
/*margin: 10px 20px 30px 40px;*/
/*单独设置四个外边距*/
margin: 20px;
margin: 30px;
margin: 40px;
margin: 50px;
}
</style>
</head>
<body>
<div id="outsidediv"></div>
这段文字是测试盒子模型的外边距的
</body>
</html>
四、外边距设置居中
调整两个盒子的位置关系主要有两种办法,一种是设置外盒子的内边距,一种是设置内盒子的外边距
设置居中可以使用外边距
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--
调整两个盒子的位置关系主要有两种办法,一种是设置外盒子的内边距,一种是设置内盒子的外边距
设置居中可以使用外边距
-->
<style>
.outerdiv{
width: 400px;
height: 400px;
border: 1px solid red;
/*设置外盒子的内边距*/
/*padding: 100px 100px;*/
/*通过外边距设置横向居中*/
margin: 0px auto;
/*如果要设置纵向居中,则需要自己计算像素,不可以使用auto,因为理论上来说网页的纵向向下是可以无限延伸的*/
}
.innerdiv{
width: 200px;
height: 200px;
border: 1px solid blue;
/*设置内盒子的外边距*/
/*margin-top: 20px;
margin-left: 20px;*/
/*通过外边距设置纵向和横向居中*/
margin: 99px auto;
}
</style>
</head>
<body>
<div class="outerdiv">
<div class="innerdiv">
好耶!
</div>
</div>
</body>
</html>
五、块元素和行内元素的转换
行内元素没有盒子模型
行内元素设置宽度和高度不一定生效但块元素设置宽度和高度一定生效
行内元素没有办法设置内边距和外边距特征
只有块标签才有盒子模型,才可以设置内边距和外边距
如果一个行内标签非要使用盒子模型,那么可以将行内元素转换为块元素
块元素和行内元素的互相转化需要使用display属性,block属性值可以将行内元素转换为块元素,inline可以将块元素转换为行内元素
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.div1{
width: 400px;
height: 400px;
border: 1px solid red;
background-color: aqua;
margin: 0px auto;
}
.s1{
/*行内元素设置宽度和高度不一定生效
但块元素设置宽度和高度一定生效
* */
width: 200px;
height: 200px;
background-color: yellow;
border: 1px solid green;
/*span是一个行内元素
行内元素没有盒子模型
行内元素没有办法设置内边距和外边距特征
只有块标签才有盒子模型,才可以设置内边距和外边距
如果一个行内标签非要使用盒子模型,那么可以将行内元素转换为块元素
需要使用display属性,block属性值可以将行内元素转换为块元素,inline可以将块元素转换为行内元素
* */
display: block;
margin: 0px auto;
}
</style>
</head>
<body>
<div class="div1">
<span class="s1">加油,坚持就是胜利!</span>
</div>
</body>
</html>
二、浮动和定位
一、浮动
1.什么是浮动
浮动可以让多个块标签处于同一行,不用转换为行内元素,宽高以及盒子模型得以保留
浮动是在父级块元素内浮动
使用浮动要在CSS中设置float属性,属性值 lift 是向左浮动,right 是向右浮动
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--浮动可以让多个块标签处于同一行,不用转换为行内元素,宽高以及盒子模型得以保留
浮动是在父级块元素内浮动
-->
<style>
.outerdiv{
width: 500px;
height: 500px;
border: 1px solid red;
margin: 0px auto;
}
#d1,#d2,#d3{
width:200px;
height: 200px;
/*向右浮动*/
/*float: right;*/
/*向左浮动*/
float: left;
margin-left: 20px;
margin-bottom: 20px;
}
#d1{
background-color: yellow;
}
#d2{
background-color: aqua;
}
#d3{
background-color: blue;
}
</style>
</head>
<body>
<div class="outerdiv">
<div id="d1">
<h1>1</h1>
</div>
<div id="d2">
<h1>1</h1>
</div>
<div id="d3">
<h1>3</h1>
</div>
</div>
</body>
</html>
2.浮动案例——12306广告栏的制作
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.ad_item a img{
width: 590px;
height: 160px;
}
.ad_item{
width: 590px;
height: 160px;
float: left;
}
#ad{
width:1190px;
height: 340px;
margin: 0px auto;
}
#d1,#d3{
margin-right: 10px;
}
#d1,#d2{
margin-bottom: 20px;
}
</style>
</head>
<body>
<div id="ad">
<div id="d1" class="ad_item">
<a href="https://kyfw.12306.cn/otn/resources/login.html" target="_blank">
<img src="https://www.12306.cn/index/images/abanner01.jpg" />
</a>
</div>
<div id="d2" class="ad_item">
<a href="https://exservice.12306.cn/excater/index.html" target="_blank">
<img src="https://www.12306.cn/index/images/abanner02.jpg" />
</a>
</div>
<div id="d3" class="ad_item">
<a href="https://kyfw.12306.cn/otn/resources/login.html" target="_blank">
<img src="https://www.12306.cn/index/images/abanner03.jpg" />
</a>
</div>
<div id="d4" class="ad_item">
<a href="https://kyfw.12306.cn/otn/resources/login.html" target="_blank">
<img src="https://www.12306.cn/index/images/abanner04.jpg" />
</a>
</div>
</div>
</body>
</html>
二、定位
定位主要有三种,绝对定位,相对定位和相对浏览器窗口定位
1.绝对定位
绝对定位:基于父级标签原点
当位置改变,该位置的坐标原点会被释放,后续的其他标签就可以占用该位置
使用绝对定位要设置position属性值为absolute
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#div1{
width: 200px;
height: 200px;
background-color: yellow;
/*绝对定位 基于父级标签原点
当位置改变,该位置的坐标原点会被释放,后续的其他标签就可以占用该位置
*/
position: absolute;
left: 300px;
top: 300px;
}
#div2{
width: 200px;
height: 200px;
background-color: red;
position: absolute;
right: 200px;
top: 200px;
}
</style>
</head>
<body>
<div id="div1">1</div>
<div id="div2">2</div>
</body>
</html>
2.相对定位
相对定位:相对于自身原来的位置
当位置改变,不会释放原位置的坐标原点,后续的其他标签不可以占用该位置
使用绝对定位要设置position属性值为 relative
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#div1{
width: 200px;
height: 200px;
background-color: yellow;
margin-left: 300px;
margin-top: 300px;
/*相对定位 相对于自身原来的位置
当位置改变,不会释放原位置的坐标原点,后续的其他标签不可以占用该位置
*/
position: relative;
left: 300px;
top: 300px;
}
#div2{
width: 200px;
height: 200px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">1</div>
<div id="div2">2</div>
</body>
</html>
3.相对浏览器窗口定位
相对浏览器窗口定位 :该标签会被固定在浏览器窗口的某一固定位置,不会随窗口的滑动而变化
使用绝对定位要设置position属性值为 fixed
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#div1{
width: 200px;
height: 200px;
background-color: yellow;
/*相对浏览器窗口定位
* 该标签会被固定在浏览器窗口的固定位置,不会随窗口的滑动而变化
*/
position: fixed;
left: 300px;
top: 300px;
}
#div2{
width: 200px;
height: 200px;
background-color: red;
}
</style>
</head>
<body>
<div id="div1">1</div>
<div id="div2">2</div>
<!--可以自己多加几个br标签进行测试br*100-->
</body>
</html>
4.定位案例——12306定位栏
图片可以自己截
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.note{
width: 64px;
height: 472px;
position: fixed;
right: 0px;
top: 264px;
}
.note_item1{
width: 64px;
height: 108px;
margin-bottom: 5px;
}
.note_item2{
width: 64px;
height: 85px;
}
</style>
</head>
<body>
<div class="note">
<div class="note_item1">
<img src="img/p1.png" />
</div>
<div class="note_item1">
<img src="img/p2.png" />
</div >
<div class="note_item1">
<img src="img/p3.png" />
</div>
<div class="note_item2">
<img src="img/p4.png" />
</div>
</div>
<!--可以自己多加几个br标签进行测试br*100-->
</body>
</html>
四、列表标签及案例开发——12306介绍栏
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
/*选中body中所有的标签*/
*{
padding: 0px;
margin: 0px;
}
.outerintroduce{
width: 1490px;
height: 376px;
margin: 0px auto;;
}
.introduce{
width: 488px;
height: 374px;
border: 1px solid #3B99FC;
float: left;
}
.introduce h3{
height: 50px;
background-color: #3B99FC;
text-align: center;
line-height: 50px;
color: white;
}
.introduce ul{
margin-left: 60px;
margin-top: 25px;
list-style-image: url(img/listtype.png);
}
.introduce ul a{
text-decoration: none;
font-size: 18px;
color: darkslategray;
}
.introduce ul li{
line-height: 45px;
}
.introduce ul a:hover{
color: black;
}
#in1,#in2{
margin-right: 10px;
}
</style>
</head>
<body>
<div class="outerintroduce">
<div class="introduce" id="in1">
<h3>最新发布</h3>
<ul>
<a href="https://www.12306.cn/mormhweb/zxdt/202108/t20210804_34881.html" target="_blank">
<li>铁路部门推出免费退票措施</li>
</a>
<a href="https://www.12306.cn/mormhweb/zxdt/201905/t20190521_22980.html" target="_blank">
<li>候补购票操作说明</li>
</a>
<a href="https://www.12306.cn/mormhweb/zxdt/201411/t20141126_2316.html" target="_blank">
<li>关于调整互联网、电话购票起售时间的公告</li>
</a>
<a href="https://www.12306.cn/mormhweb/logFiles/error.html" target="_blank">
<li>中国铁路成都局集团有限公司关于2021年10月29...</li>
</a>
<a href="https://www.12306.cn/mormhweb/zxdt_news/202110/t20211023_35719.html" target="_blank">
<li>中国铁路呼和浩特局集团有限公司部分旅客列车停...</li>
</a>
</ul>
</div>
<div class="introduce" id="in2">
<h3>常见问题</h3>
<ul>
<a href="https://kyfw.12306.cn/otn/gonggao/realNameTicket.html" target="_blank">
<li>实名制车票</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/onlineBooking.html" target="_blank">
<li>互联网购票</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/onlineRefund.html" target="_blank">
<li>互联网退票</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/enterAndExit.html" target="_blank">
<li>进出站</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/sgc.html" target="_blank">
<li>使用居民身份证直接检票乘车</li>
</a>
</ul>
</div>
<div class="introduce">
<h3>常见问题</h3>
<ul>
<a href="https://kyfw.12306.cn/otn/gonggao/ticketWindow.html" target="_blank">
<li>售票窗口购票</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/onlineEndorse.html" target="_blank">
<li>互联网改签、变更到站</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/luggage.html" target="_blank">
<li>随身携带品</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/ticketLost.html" target="_blank">
<li>丢失购票时使用的有效身份证件</li>
</a>
<a href="https://kyfw.12306.cn/otn/gonggao/gsgcp.html" target="_blank">
<li>广深港跨境列车</li>
</a>
</ul>
</div>
</div>
</body>
</html>