css盒子模型
网页布局的关键点:盒子
盒子模型组成部分
盒子的组成
- margin(外边距)
- border(边框)
- padding(内边距)
- content(内容)
border
- border-width:边框的宽度
- border-style:边框的样式 默认值:none(无样式) solid(实线) dashed(虚线) dotted(点线)
- border-color:边框的颜色
简写方式
border:border-width border-style border-color
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>border</title>
<style>
* {
margin: 0;
padding: 0;
}
div {
width: 200px;
height: 200px;
margin: 200px auto;
background-color: blue;
border: 10px solid red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
border边框的综合写法
border-collapse
border-collapse:表格合并
因为表格中的行标签和单元格标签都拥有自己的边框 因此需要合并边框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
table,
tr,
td,
th {
border-collapse: collapse;
text-align: center;
}
.t-red {
background-color: hotpink;
}
</style>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0" align="center" height="300" width="500">
<caption>
<h2>小说排行耪</h2>
</caption>
<tr class="t-red">
<th>排名</th>
<th>关键词</th>
<th>今日搜索</th>
<th>最近七日</th>
<th>相关链接</th>
</tr>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td>345</td>
<td>123</td>
<td>
<a href="#">贴吧</a>
<a href="#">百度</a>
<a href="#">图片</a>
</td>
</tr>
<tr>
<td>2</td>
<td>盗墓笔记</td>
<td>34555</td>
<td>123444</td>
<td>
<a href="#">贴吧</a>
<a href="#">百度</a>
<a href="#">图片</a>
</td>
</tr>
<tr>
<td>3</td>
<td>西游记</td>
<td>24555</td>
<td>13444</td>
<td>
<a href="#">贴吧</a>
<a href="#">百度</a>
<a href="#">图片</a>
</td>
</tr>
<tr class="t-red">
<td>4</td>
<td>东游记</td>
<td>3455</td>
<td>3444</td>
<td>
<a href="#">贴吧</a>
<a href="#">百度</a>
<a href="#">图片</a>
</td>
</tr>
<tr>
<td>5</td>
<td>甄嬛传</td>
<td>3555</td>
<td>1444</td>
<td>
<a href="#">贴吧</a>
<a href="#">百度</a>
<a href="#">图片</a>
</td>
</tr>
<tr>
<td>6</td>
<td>水浒传</td>
<td>355</td>
<td>12344</td>
<td>
<a href="#">贴吧</a>
<a href="#">百度</a>
<a href="#">图片</a>
</td>
</tr>
<tr class="t-red">
<td>7</td>
<td>三国演义</td>
<td>3555</td>
<td>13444</td>
<td>
<a href="#">贴吧</a>
<a href="#">百度</a>
<a href="#">图片</a>
</td>
</tr>
</table>
</body>
</html>
padding
padding:盒子距离内容之间的距离 使用内边距之后盒子会变大
padding设置
padding简写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Padding</title>
<style>
* {
margin: 0;
padding: 0;
}
div {
width: 200px;
height: 200px;
margin: 200px auto;
padding: 20px;
text-align: center;
line-height: 200px;
background-color: red;
}
</style>
</head>
<body>
<div>Hello Word</div>
</body>
</html>
新浪导航栏
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>新浪导航栏</title>
<style>
* {
margin: 0;
padding: 0;
}
.nav {
height: 42px;
line-height: 42px;
background-color: hotpink;
text-align: center;
}
.nav a {
display: inline-block;
color: gray;
padding: 0px 20px;
text-decoration: none;
}
a:hover {
color: blue;
}
</style>
</head>
<body>
<div class="nav">
<a href="#">首页</a>
<a href="#">新浪网</a>
<a href="#">客户端</a>
<a href="#">登录</a>
<a href="#">微博</a>
<a href="#">博客</a>
</div>
</body>
</html>
效果图
盒子实际尺寸
盒子的宽度:Elements width= content Width + padding Width + border
盒子的高度:Elements height= ontent height + padding height +border
内边距是一定要真实存在的,只能减去盒子的宽高,来维持盒子的宽高不变
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>盒子的实际尺寸</title>
<style>
* {
margin: 0;
padding: 0;
}
h2 {
width: 200px;
height: 200px;
border: 1px solid red;
padding: 20px;
margin: 200px auto;
background-color: burlywood;
/* 盒子的宽度:200px+20px+20px+2px = 242px */
/* 盒子的高度:200px+20px+20px+2px = 242px*/
}
</style>
</head>
<body>
<h2></h2>
</body>
</html>
padding不影响盒子大小的情况下
在特殊情况下,如果指定的盒子没有给宽高,则盒子不会被padding值撑开。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Padding不影响盒子的宽高的前提下</title>
<style>
.nav {
width: 200px;
height: 200px;
margin: 200px auto;
background-color: blue;
}
.nav p {
height: 200px;
padding-left: 20px;
}
</style>
</head>
<body>
<div class="nav">
<p></p>
</div>
</body>
</html>
课堂案例
案例1
盒子的宽度为130
案例2
盒子宽度为200px+100px+50px+2px=352px
盒子高度为200px+50px+50px+1px+5px=306px
内边距是一定要真实存在的,只能减去盒子的宽高,来维持盒子的宽高不变
margin是外边距,是盒子与盒子之间的距离
margin的简写
同理和padding值的简写一致
块级盒子水平居中对齐
满足两种条件才能让盒子居中对齐
- 盒子必须指定宽度
- 左右的外边距margin设置auto
设置auto的三种方法
margin-left:auto margin-right:auto;
margin:auto
margin:0px auto;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>块级盒子水平居中的方式</title>
<style>
* {
margin: 0;
padding: 0;
}
p {
width: 200px;
height: 200px;
background-color: yellow;
margin: 200px auto;
}
</style>
</head>
<body>
<p></p>
</body>
</html>
盒子水平居中对齐和文字水平居中对齐
text-align:不仅可以让文字水平居中对齐,还可以让行内块元素和行内元素水平居中对齐
margin:auto :可以让块级盒子水平居中对齐
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>块级盒子及文本居中</title>
<style>
* {
margin: 0;
padding: 0;
}
p {
width: 400px;
height: 400px;
margin: 200px auto;
text-align: center;
line-height: 400px;
background-color: pink;
}
</style>
</head>
<body>
<p>Hello Word</p>
</body>
</html>
插入图片与背景图片的区别
插入图片
插入图片一般用于展示类 ,通过盒模型的padding和margin来移动位置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>插入图片</title>
<style>
* {
margin: 0;
padding: 0;
}
p {
width: 600px;
height: 600px;
margin: 200px auto;
border: 1px solid red;
}
p img {
width: 400px;
margin: 20px;
}
</style>
</head>
<body>
<p>
<img src="./image/desktop.jpg" alt="">
</p>
</body>
</html>
背景图
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>背景图片</title>
<style>
* {
margin: 0;
padding: 0;
}
p {
width: 600px;
height: 600px;
margin: 200px auto;
border: 1px solid red;
background: url(./image/desktop.jpg) no-repeat scroll 20px 50px;
background-size: 200px 200px;
/* background-size:宽 高 */
}
</style>
</head>
<body>
<p></p>
</body>
</html>
背景图片一般用于做一些精灵图等等,通过background-position来移动位置
清除元素的默认的内外间距
* {
margin:0;
padding:0;
}
注意事项
为了照顾行内元素的兼容性,只设置左右内外边距,不设置上下内外边距;
外边距合并问题
相邻块元素外边距合并问题
相邻块元素合并:取两个块元素外边距合并的较大值,所以只给一个盒子的外边距是最好的解决方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>外边距合并之相邻块元素</title>
<style>
* {
margin: 0;
padding: 0;
}
.nav,
.header {
width: 200px;
height: 200px;
background-color: pink;
margin: auto;
}
.nav {
margin-bottom: 50px;
}
.header {
background-color: blue;
margin-top: 100px;
}
</style>
</head>
<body>
<div class="nav"></div>
<div class="header"></div>
</body>
</html>
嵌套块元素外边距合并问题的三个方法
嵌套块元素外边距合并问题的三个方法
- 给父元素border值
- 给父元素padding值
- 给父元素overfiow:hidden;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.father {
width: 600px;
height: 600px;
background-color: pink;
/* border-top: 1px solid transparent; */
/* padding-top:1px ; */
overflow: hidden;
}
.son {
width: 200px;
height: 200px;
background-color: #0000FF;
margin-top: 50px;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>
盒子布局稳定性
ps
ps的基本使用
- ctrl+o:打开文件
- ctrl+r :打开标尺
- ctrl+ + :放大
- ctrl+ - : 缩小
- 按住空格 可以移动视图
- 吸管工具:吸取颜色
- 选框工具:测量宽高
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>新闻列表</title>
<style>
* {
margin: 0;
padding: 0;
}
.nav {
width: 340px;
height: 220px;
margin: 100px auto;
padding: 0px 15px;
background: url(./image/line.jpg);
}
.nav h2 {
font-size: 16px;
padding-top: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #cccc
}
ul li {
list-style: none;
line-height: 30px;
padding-left: 20px;
background: url(./image/arr.jpg) no-repeat scroll left center;
}
ul li a {
color: #4b4b4b;
font: normal normal 14px '楷体';
text-decoration: none;
}
ul li a:hover {
color: blue;
text-decoration: underline;
}
</style>
</head>
<body>
<div class="nav">
<h2>最新文章/New Articles</h2>
<ul>
<li><a href="#">北京招聘平面设计 网页设计 php</a></li>
<li><a href="#">体验javascript的魅力</a></li>
<li><a href="#">jquery的世界即将来临</a></li>
<li><a href="#">网页设计师的梦想</a></li>
<li><a href="#">jquery中的链式编程</a></li>
</ul>
</div>
</body>
</html>
圆角边框
设置圆形
border-radius:50%;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>border-radius</title>
<style>
* {
margin: 0;
padding: 0;
}
p {
width: 200px;
height: 200px;
margin: 200px auto;
background-color: pink;
border-radius: 50%;
}
</style>
</head>
<body>
<p></p>
</body>
</html>
设置矩形
border-radius:高度的一半
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>border-radius之设置矩形</title>
<style>
* {
margin: 0;
padding: 0;
}
p {
width: 200px;
height: 100px;
margin: 200px auto;
border-radius: 50px;
background-color: pink;
}
</style>
</head>
<body>
<p></p>
</body>
</html>
border-radius的简写
border-radius:左上角 右上角 右下角 左下角
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>border-radius之简写</title>
<style>
* {
margin: 0;
padding: 0;
}
div:nth-of-type(1) {
width: 200px;
height: 200px;
margin: 200px auto;
border-radius: 50%;
background-color: red;
}
div:nth-of-type(2) {
width: 200px;
height: 100px;
background-color: blue;
border-radius: 50px;
}
</style>
</head>
<body>
<div></div>
<div></div>
</body>
</html>
盒子阴影
box-shadow:盒子阴影
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>box-show</title>
<style>
* {
margin: 0;
padding: 0;
}
p {
width: 200px;
height: 200px;
margin: 200px auto;
box-shadow: 20px 20px 2px 20px blue inset;
background-color: red;
}
</style>
</head>
<body>
<p></p>
</body>
</html>
css书写规范
- 选择器与{}之间保留空格 属性与属性值之间保留空格
- 嵌套元素不应该超过三级
- 属性值应以分号结束