header–表示头部
section–表示一个标签栏
footer–表示尾部标签栏
aside定义侧边栏区域
在 html 中是忽略回车和空格的,你输入的再多回车和空格也是显示不出来的。使用
表示的
 ;–实现空格
hr–实现横线
实现无序列表
<ul>
<li>信息</li>
<li>信息</li>
......
</ul>
实现有序列表
<ol>
<li>信息</li>
<li>信息</li>
......
</ol>
标签为网页添加图片
<img src="图片地址" alt="下载失败时的替换文本" title = "提示文本">
标签中的target属性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>target属性</title>
</head>
<body>
<a href="https://www.baidu.com" target="_self">百度自己窗口</a><br />
<a href="https://www.baidu.com" target="_blank">百度新的窗口</a>
</body>
</html>
a标签有的target属性,代表打开网页的方式。可选值为”_self和_blank”,默认值为_self,代表在当前页面打开链接,_blank代表在新窗口打开链接。
制作表格table
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学习表格标签</title>
</head>
<body>
<table border="1">
<caption>前端三剑客</caption>
<tr>
<th>知识点</th>
<th>重要程度</th>
<th>难度</th>
<th>学习周期</th>
</tr>
<tr>
<td>html</td>
<td>五星</td>
<td>三星</td>
<td>7天</td>
</tr>
<tr>
<td>css</td>
<td>五星</td>
<td>四星</td>
<td>10天</td>
</tr>
<tr>
<td>js</td>
<td>五星</td>
<td>四星</td>
<td>20天</td>
</tr>
</table>
</body>
</html>
1、table标签用来定义整个表格,为双标签,必须有结束标签。
2、table标签里面可以放caption标签和tr标签。
3、caption标签用来定义表格的标题。
4、tr标签用来设置表格的行,tr里面只能放th或者td标签,一组tr标签代表一行。
5、th用来设置表格的标题,会加粗居中显示。也就是th标签中的文本默认为粗体并且居中显示。
6、td同来设置表格的列,一组td标签代表一列。
7、table表格在没有添加border属性之前, 在浏览器中显示是没有表格线的。
使用thead、tbody、tfoot定义表格
<body>
<h3>成绩表</h3>
<hr />
<table border="1">
<thead>
<tr>
<th>科目</th>
<th>分数</th>
</tr>
</thead>
<tbody>
<tr>
<td>语文</td>
<td>99</td>
</tr>
<tr>
<td>数学</td>
<td>60</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>总分</td>
<td>159</td>
</tr>
</tfoot>
</table>
</body>
</html>
我们表格第一行为表头数据,我们用标签包裹,中间的科目和分数为表格的主体内容,我们用标签包裹,最后的总分我们用标签包裹。
文本输入框和密码输入框
1、type:
当type="text"时,输入框为文本输入框;
当type="password"时, 输入框为密码输入框。
2、name:为文本框命名,以备后台程序ASP 、PHP使用。
3、value:为文本输入框设置默认值。(一般起到提示作用)
<body>
<form method="post" action="save.php">
账户:<input type="text" name="myname"/>
<br>
密码:<input type="password" name="pass"/>
</form>
</body>
</html>
placeholder占位符
技术点的解释:
1、placeholder属性为输入框占位符,里面可以放提示的输入信息。
2、placeholder属性的值可以任意填写,当输入框输入内容时,占位符内容消失,输入框无内容时,占位符内容显示。
3、占位符内容不是输入框真正的内容。
<form action="post">
<label>用户名:</label>
<input name="myName" placeholder="请输入用户名" value="andy"/>
<br />
<label>密码:</label>
<input name="pass" placeholder="请输入密码"/>
</form>
数字输入框
技术点的解释:
1、input的type属性设置为number,则表示该输入框的类型为数字。
2、数字框只能输入数字,输入其他字符无效。
3、数字框最右侧会有一个加减符号,可以调整输入数字的大小,不同浏览器表现不一致。
<body>
<form>
<label>请输入数字:</label>
<input name="number" type="number"/>
</form>
</body>
网站输入框
1、input的type属性设置为url,则表示该输入框的类型为网址。
2、数字框的值需以http://或者https://开头,且后面必须有内容,否则表单提交的时候会报错误提示。
<body>
网站输入框
<input type="url"/>
</body>
邮箱输入框
1、Input的type属性设置为email,则表示该输入框的类型为邮箱。
2、数字框的值必须包含@。
3、数字框的值@之后必须有内容,否则会报错误提示。
<body>
<input type="email"/>
</body>
创建文本域
1、<textarea>标签是成对出现的,以<textarea>开始,以</textarea>结束。
2、cols :多行输入域的列数。
3、rows :多行输入域的行数。
4、在<textarea></textarea>标签之间可以输入默认值。
<form method="post" action="save.php">
<label>联系我们</label>
<textarea cols="50" rows="10" >在这里输入内容...</textarea>
</form>
注意这两个属性可用css样式的width和height来代替:col用width、row用height来代替。(这两个css样式在以后的章节会讲解)
使用label标签装饰input标签
label标签不会向用户呈现任何特殊效果,它的作用是为鼠标用户改进了可用性。如果你在 label 标签内点击文本,就会触发此控件。就是说,当用户单击选中该label标签时,浏览器就会自动将焦点转到和标签相关的表单控件上(就自动选中和该label标签相关连的表单控件上)。
注意:标签的 for 属性中的值应当与相关控件的 id 属性值一定要相同。
<form methed="post">
<label for="myName">用户名</label>
<input type="text" id="myName" placeholder="请输入用户名"/><br />
<label for="myPass">密码</label>
<input type="password" id="myPass" placeholder="请输入密码">
</form>
单选框和复选框
<input type="radio/checkbox" value="值" name="名称" checked="checked"/>
1、type:
当 type="radio" 时,控件为单选框
当 type="checkbox" 时,控件为复选框
2、value:提交数据到服务器的值(后台程序PHP使用)
3、name:为控件命名,以备后台程序 ASP、PHP 使用
4、checked:当设置 checked="checked" 时,该选项被默认选中
<form methed="post">
<label for="">你是否喜欢电脑</label><br />
<input type="radio" name="radiolove" value="喜欢" checked="checked"/>喜欢
<input type="radio" name="radiolove" value="不喜欢"/>不喜欢
<input type="radio" name="radiolove" value="无所谓"/>无所谓
<br />
<br />
<label for="">请选择你喜欢的运动</label><br />
<input type="checkbox" name="one" value="跑步" checked="checked">跑步
<input type="checkbox" name="two" value="登山">登山
<input type="checkbox" name="three" value="跑步">游泳
<input type="checkbox" name="four" value="骑车" checked="checked">骑车
</form>
使用select、option标签创建下拉菜单
1、select和option标签都是双标签,它总是成对出现的,需要首标签和尾标签。
2、select标签里面只能放option标签,表示下拉列表的选项。
3、option标签放选项内容,不放置其他标签。
4、value:是向服务器提交的值,option中间的是显示的值
5、selected=“selected”:
设置selected="selected"属性,则该选项就被默认选中。
<form action="">
<select >
<option value="看书">看书</option>
<option value="看书">骑车</option>
<option value="看书">玩游戏</option>
<option value="看书" selected="selected">做饭</option>
</select>
</form>
提交按钮
<input type="submit" value="提交">
type:只有当type值设置为submit时,按钮才有提交作用
value:按钮上显示的文字
<form method="post" action="save.php">
<label for="myName">姓名:</label>
<input type="text" value=" " name="myName " />
<input type="submit" value="提交" name="submitBtn" />
</form>
使用重置按钮
<input type="reset" value="重置" />
type:只有当type值设置为reset时,按钮才有重置作用
value:按钮上显示的文字
input和选择框融合使用
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>label</title>
</head>
<body>
<form action="">
<label for="">下拉菜单</label><br />
<select >
<option value="看书">看书</option>
<option value="看书">骑车</option>
<option value="看书">玩游戏</option>
<option value="看书" selected="selected">做饭</option>
</select>
<br />
<br />
<label for="">单选</label>
<div>
<input type="radio" value="喜欢" name="radiolove" checked="checked"/>喜欢
<input type="radio" value="不喜欢" name="radiolove"/>不喜欢
<input type="radio" value="随便" name="radiolove"/>随便
</div>
<br />
<br />
<label for="">多选</label>
<div>
<input type="checkbox" name="one" value="牛肉" checked="checked">牛肉
<input type="checkbox" name="two" value="猪肉">猪肉
<input type="checkbox" name="three" value="鱼肉" checked="checked">鱼肉
<input type="checkbox" name="four" value="狗肉">狗肉
</div>
<br />
<br />
<div>
<label for="MyName">用户名</label>
<input type="text" name="MyName" placeholder="请输入用户名">
<label for="pass">密码</label>
<input type="password" name="pass" placeholder="请输入密码">
</div>
<input type="submit" value="提交" style="color: blue">
<input type="reset" value="重置" style="color: red">
</form>
</body>
</html>
css代码语法
**选择符:**又称选择器,指明网页中要应用样式规则的元素,如本例中是网页中所有的段(p)的文字将变成蓝色,而其他的元素(如ol)不会受到影响。
**声明:**在英文大括号“{}”中的的就是声明,属性和值之间用英文冒号“:”分隔。当有多条声明时,中间可以英文分号“;”分隔,如下所示:
p{font-size:12px;color:red;}
注意:
1、最后一条声明可以没有分号,但是为了以后修改方便,一般也加上分号。
2、为了使用样式更加容易阅读,可以将每条代码写在一个新行内,如下所示:
p{
font-size:12px;
color:red;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS代码语法</title>
<style type="text/css">
p {
font-size:12px;
color:red;
font-weight:bold;
}
</style>
</head>
<body>
<p>慕课网,超酷的互联网、IT技术免费学习平台,创新的网络一站式学习、实践体验;服务及时贴心,内容专业、有趣易学。专注服务互联网工程师快速成为技术高手!</p>
</body>
</html>
css的注释
css的注释使用/*这里是注释*/
p {
font-size:12px;/*设置文字字号为12px*/
color:red;/*设置文字颜色为红色*/
}
内联式css样式
CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式、嵌入式和外部式三种。这一小节先来讲解内联式。
<p style="color:red;font-size:12px">这里文字是红色。</p>
嵌入式css样式
嵌入式css样式必须写在<style></style>之间,并且一般情况下嵌入式css样式写在<head></head>之间。如右边编辑器中的代码。
<head>
<meta charset="UTF-8">
<title>嵌入式css样式</title>
<style type="text/css">
span {
color:blue;
}
</style>
</head>
<body>
<p>慕课网,<span>超酷的互联网</span>、IT技术免费学习平台,创新的网络一站式学习、实践体验;<span>服务及时贴心</span>,内容专业、<span>有趣易学</span>。专注服务互联网工程师快速成为技术高手!</p>
</body>
外联式css样式
外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名,在<head>内(不是在<style>标签内)使用<link>标签将css样式文件链接到HTML文件内,如下面代码:
1、css样式文件名称以有意义的英文字母命名,如 main.css。
2、rel="stylesheet" type="text/css" 是固定写法不可修改。
3、<link>标签位置一般写在<head>标签之内。
<head>
<meta charset="UTF-8">
<title>嵌入式css样式</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
三种css链接方式的优先级
内联式>嵌入式>外联式
总得来说就是就近原则
css3的游戏规则 - 什么是选择器?
每一条css样式声明(定义)由两部分组成,形式如下:
选择器{
样式;
}
在{}之前的部分就是“选择器”,“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素。比如右侧代码编辑器中第7行代码中的“body”就是选择器。
标签选择器
<style type="text/css">
h1{
font-weight:normal;/*将h1的粗体去除,要是加粗的话写bold*/
color:red;
}
</style>
类选择器
语法
.类选器名称{css样式代码;}
<span class="stress">胆小如鼠</span>
ID选择器
1、使用ID选择器,必须给标签添加上id属性,为标签设置id="ID名称",而不是class="类名称"。
2、ID选择符的前面是井号(#)号,而不是英文圆点(.)。
3、id属性的值既为当前标签的id,尽量见名思意,语义化。
<style>
#gongkai{
color:green;
}
</style>
<span id=“gongkai”>公开课</span>
类和ID选择器的区别
<!--这是正确的-->
<span class="stress bigsize">三年级</span>
<!--这是错误的-->
<span id="stress bigsize">三年级</span>
1 ID选择器只能在文档中使用一次。与类选择器不同,在一个HTML文档中,ID选择器只能使用一次,而且仅一次。而类选择器可以使用多次。
2 可以使用类选择器词列表方法为一个元素同时设置多个样式。我们可以为一个元素同时设多个样式,但只可以用类选择器的方法实现,ID选择器是不可以的(不能使用 ID 词列表)。
子选择器
大于符号(>),用于选择指定标签元素的第一代子元素
.food>li{border:1px solid red;}
后代选择器
包含选择器,即加入空格,用于选择指定标签元素下的后辈元素。
.first span{color:red;}
通用选择器
通用选择器是功能最强大的选择器,它使用一个(*)号指定,它的作用是匹配html中所有标签元素
* {color:red;}
伪类选择器
更有趣的是伪类选择符,为什么叫做伪类选择符,它允许给html不存在的标签(标签的某种状态)设置样式,比如说我们给html中一个标签元素的鼠标滑过的状态来设置字体颜色:
a:hover{color:red;}
分组选择器
当你想为html中多个标签元素设置同一个样式时,可以使用分组选择符(,),如下代码为右侧代码编辑器中的h1、span标签同时设置字体颜色为红色:
.first,#second>span{
color:green;
}
选择器优先级
id选择器100
类选择器10
标签选择器1
选择器最高层级!important
p{color:red!important}/*这样写就会将p标签设置的颜色设置为最高层级*/
使用font-family设置字体系列
p{font-family:"微软雅黑";}
p{font-family:"Microsoft Yahei";}
p{font-family:"宋体";}
使用font-size设置字体的大小
/*设置字体的大小*/
p{
font-size:12px
}
/*清除该标签下字体的样式*/
h1{
font-weight:normal;
}
使用font-weight设置字体的粗细
p{
font-weight:bold;
}
使用font-style设置字体样式
技术点的解释:
1、font-style可以设置字体样式,并且有3种设置方式。
2、正常字体为normal,也是font-style的默认值。
3、italic为设置字体为斜体,用于字体本身就有倾斜的样式。
4、oblique为设置倾斜的字体,强制将字体倾斜。
<style type="text/css">
p{
font-style:normal;/*表示正常字体,也是默认值*/
}
p{
font-style:italic;/*表示正常斜体*/
}
p{
font-style:oblique;/*表示字体倾斜,与斜体有区别*/
}
</style>
使用color设置字体颜色
1、color属性可以设置字体颜色。
2、color的值有3种设置方式:
- 英文命令颜色
p{color:red;}
- RGB颜色
这个与 photoshop 中的 RGB 颜色是一致的,由 R(red)、G(green)、B(blue) 三种颜色的比例来配色。
p{color:rgb(133,45,200);}
每一项的值可以是 0~255 之间的整数,也可以是 0%~100% 的百分数。如:
p{color:rgb(20%,33%,25%);}
- 十六进制颜色
这种颜色设置方法是现在比较普遍使用的方法,其原理其实也是 RGB 设置,但是其每一项的值由 0-255 变成了十六进制 00-ff。
p{color:#00ffff;}
配色表:
使用三种color方法配置css样式
/*使用三种不同的方法将字体设置为红色*/
<style type="text/css">
#one{
color:red;
}
#two{
color:rgb(255,0,0);
}
#three{
color:#ff0000;
}
</style>
font简写方式
网页中的字体css样式代码也有他自己的缩写方式,下面是给网页设置字体的代码:
body{
font-style:italic;
font-weight:bold;
font-size:12px;
line-height:1.5em;
font-family:"宋体",sans-serif;
}
这么多行的代码其实可以缩写为一句:
body{
font:italic bold 12px/1.5em "宋体",sans-serif;
}
注意:
1、使用这一简写方式你至少要指定 font-size 和 font-family 属性,其他的属性(如 font-weight、font-style、font-variant、line-height)如未指定将自动使用默认值。
2、在缩写时 font-size 与 line-height 中间要加入“/”斜扛。
一般情况下因为对于中文网站,英文还是比较少的,所以下面缩写代码比较常用:
body{
font:12px/1.5em "宋体",sans-serif;
}
只是有字号、行间距、中文字体、英文字体设置。
使用text-decoration添加文本修饰
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9JAdswVt-1611216755341)( https://user-gold-cdn.xitu.io/2020/7/7/17329d68bb2a82ff?w=1184&h=377&f=png&s=30045 )]
1、text-decoration可以设置添加到文本的修饰。
2、text-decoration默认值为none, 定义标准的文本。
3、text-decoration的值为underline为定义文本下的一条线。
4、text-decoration的值为overline为定义文本上的一条线。
5、text-decoration的值为line-through为定义穿过文本下的一条线,一般用于商品折扣价。
使用text-indent为文本添加首行缩进
p{text-indent:2em;}
/*2em指的是两倍大小*/
使用line-height为文字设置行间间距
p{line-height:1.5em;}
/*line-height:1.5em;就是指的是上一行和下一行字的同样位置的高度和字体高低的比例*/
使用letter/word-spacing设置字母/单词之间的间距
p{
letter-spacing:20px; /*设置单词之间的间距为20px*/
word-spacing:20px; /*设置单词之间的间距为20px*/
}
使用text-align设置文本对齐
/*text-align:center水平居中
text-align:left;居左
text-alignLright;居右
*/
<style type="text/css">
div{
text-align:center;
}
h1{
text-align:center;
}
</style>
长度值
长度单位总结一下,目前比较常用到px(像素)、em、% 百分比,要注意其实这三种单位都是相对单位。
1、像素
像素为什么是相对单位呢?因为像素指的是显示器上的小点(CSS规范中假设“90像素=1英寸”)。实际情况是浏览器会使用显示器的实际像素值有关,在目前大多数的设计者都倾向于使用像素(px)作为单位。
2、em
就是本元素给定字体的 font-size 值,如果元素的 font-size 为 14px ,那么 1em = 14px;如果 font-size 为 18px,那么 1em = 18px。如下代码:
p{font-size:12px;text-indent:2em;}
上面代码就是可以实现段落首行缩进 24px(也就是两个字体大小的距离)。
下面注意一个特殊情况:
但当给 font-size 设置单位为 em 时,此时计算的标准以 p 的父元素的 font-size 为基础。如下代码:
html:
<p>以这个<span>例子</span>为例。</p>
css:
p{font-size:14px}
span{font-size:0.8em;}
结果 span 中的字体“例子”字体大小就为 11.2px(14 * 0.8 = 11.2px)。
3、百分比
p{font-size:12px;line-height:130%}
设置行高(行间距)为字体的130%(12 * 1.3 = 15.6px)。
font-size指的是字体大小,px代表的是像素,em代表的是几倍根元素大小
元素分类
在讲解CSS布局之前,我们需要提前知道一些知识,在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素、内联元素(又叫行内元素)和内联块状元素。
常用的块状元素有:
<div>、<p>、<h1>...<h6>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form>
常用的内联元素有:
<a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>
常用的内联块状元素有:
<img>、<input>
块级元素
什么是块级元素?在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是块级元素。设置`display:block`就是将元素显示为块级元素。如下代码就是将**内联元素a**转换为**块状元素**,从而使a元素具有**块状元素**特点。
a{display:block;}
块级元素特点:
1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行)
2、元素的高度、宽度、行高以及顶和底边距都可设置。
3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
内联元素
在html中,<span>、<a>、<label>、 <strong> 和<em>就是典型的**内联元素**(**行内元素**)(inline)元素。当然**块状元素**也可以通过代码`display:inline`将元素设置为**内联元素**。如下代码就是将**块状元素div**转换为**内联元素**,从而使 div 元素具有**内联元素**特点。
div{
display:inline;
}
......
<div>我要变成内联元素</div>
内联元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度及顶部和底部边距不可设置;
3、元素的宽度就是它包含的文字或图片的宽度,不可改变。
内联块状元素
**内联块状元素(inline-block)**就是同时具备内联元素、块状元素的特点,代码display:inline-block
就是将元素设置为内联块状元素。(css2.1新增),、标签就是这种内联块状标签。
inline-block 元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度、行高以及顶和底边距都可设置。
盒模型-宽度和高度
盒模型宽度和高度和我们平常所说的物体的宽度和高度理解是不一样的,css内定义的宽(width)和高(height),指的是填充以里的内容范围。
因此一个元素实际宽度(盒子的宽度)=左边界+左边框+左填充+内容宽度+右填充+右边框+右边界。
元素的高度也是同理。
比如:
css代码:
div{
width:200px;
padding:20px;
border:1px solid red;
margin:10px;
}
html代码:
<body>
<div>文本内容</div>
</body>
元素的实际长度为:10px+1px+20px+200px+20px+1px+10px=262px。在chrome浏览器下可查看元素盒模型,如下图:
背景色
网页中的标签不论是行内元素还是块状元素都可以给它设置一个背景色。
为标签设置背景颜色可以使background-color:颜色值
来实现。
例子如下:
div{background-color:red;}//为块状元素设置
a{background-color:green;}//为行内元素设置
使用border为盒子添加边框
盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细、样式和颜色(边框三个属性)。
如下面代码为 div 来设置边框粗细为 2px、样式为实心的、颜色为红色的边框:
div{
border:2px solid red;
}
上面是 border 代码的缩写形式,可以分开写:
div{
border-width:2px;
border-style:solid;
border-color:red;
}
注意:
1、border-style(边框样式)常见样式有:
dashed(虚线)| dotted(点线)| solid(实线)。
2、border-color(边框颜色)中的颜色可设置为十六进制颜色,如:
border-color:#888;//前面的井号不要忘掉。
3、border-width(边框宽度)中的宽度也可以设置为:
thin | medium | thick(但不是很常用),最常还是用像素(px)。
/*设置p标签宽度位2,点状线,颜色为#ccc*/
p{
border:2px dotted #ccc;
}
现在有一个问题,如果有想为 p 标签单独设置下边框,而其它三边都不设置边框样式怎么办呢?css 样式中允许只为一个方向的边框设置样式:
div{border-bottom:1px solid red;}
同样可以使用下面代码实现其它三边(上、右、左)边框的设置:
border-top:1px solid red;
border-right:1px solid red;
border-left:1px solid red;
使用border-radius设置圆角
元素边框的圆角效果可以使用border-radius属性来设置。圆角可分为左上、右上、右下、左下。如下代码:
div{border-radius: 20px 10px 15px 30px;}
也可以分开写
div{
border-top-left-radius: 20px;
border-top-right-radius: 10px;
border-bottom-right-radius: 15px;
border-bottom-left-radius: 30px;
}
如果四个圆角都为10px;可以这么写:
div{ border-radius:10px;}
如果左上角和右下角圆角效果一样为10px,右上角和左下角圆角一样为20px,可以这么写:
div{ border-radius:10px 20px;}
需要特别注意的:一个正方形,当设置圆角效果值为元素宽度一半时,显示效果为圆形。例如:
div {
width: 200px;
height: 200px;
border: 5px solid red;
border-radius: 100px;
}
使用padding为盒子设置内边距(填充)
素内容与边框之间是可以设置距离的,称之为“内边距(填充)”。填充也可分为上、右、下、左(顺时针)。如下代码:
div{padding:20px 10px 15px 30px;}
效果:
顺序一定不要搞混。可以分开写上面代码:
div{
padding-top:20px;
padding-right:10px;
padding-bottom:15px;
padding-left:30px;
}
如果上、右、下、左的填充都为10px;可以这么写
div{padding:10px;}
如果上下填充一样为10px,左右一样为20px,可以这么写:
div{padding:10px 20px;}
距离产生美 - 使用margin为盒子设置外边距(边界)
元素与其它元素之间的距离可以使用边界(margin)来设置。边界也是可分为上、右、下、左。如下代码:
div{margin:20px 10px 15px 30px;}
效果:
也可以分开写:
div{
margin-top:20px;
margin-right:10px;
margin-bottom:15px;
margin-left:30px;
}
如果上右下左的边界都为10px;可以这么写:
div{ margin:10px;}
如果上下边界一样为10px,左右一样为20px,可以这么写:
div{ margin:10px 20px;}
总结一下:padding和margin的区别,padding在边框里,margin在边框外。
css3布局模型
清楚了CSS3 盒模型的基本概念、 盒模型类型, 我们就可以深入探讨网页布局的基本模型了。布局模型与盒模型一样都是 CSS3 最基本、 最核心的概念。 但布局模型是建立在盒模型基础之上,又不同于我们常说的 CSS3 布局样式或 CSS3 布局模板。如果说布局模型是本,那么 CSS3 布局模板就是末了,是外在的表现形式。
CSS3包含3种基本的布局模型,用英文概括为:Flow、Layer 和 Float。
在网页中,元素有三种布局模型:
1、流动模型(Flow)
2、浮动模型 (Float)
3、层模型(Layer)
排队显示-流动模型
先来说一说流动模型,流动(Flow)是默认的网页布局模式。也就是说网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。
流动布局模型具有2个比较典型的特征:
第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。如右侧代码编辑器中三个块状元素标签(div,h1,p)宽度显示为100%。
第二点,在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。(内联元素可不像块状元素这么霸道独占一行)
标签a、span、em、strong都是内联元素。
浮动模型
块状元素这么霸道都是独占一行,如果现在我们想让两个块状元素并排显示,怎么办呢?不要着急,设置元素浮动就可以实现这一愿望。
任何元素在默认情况下是不能浮动的,但可以用 CSS 定义为浮动,如 div、p、table、img 等元素都可以被定义为浮动。如下代码可以实现两个 div 元素一行显示。
div{
width:200px;
height:200px;
border:2px red solid;
float:left;
}
<div id="div1"></div>
<div id="div2"></div>
效果图
当然你也可以同时设置两个元素右浮动也可以实现一行显示。
div{
width:200px;
height:200px;
border:2px red solid;
float:right;
}
效果图
又有小伙伴问了,设置两个元素一左一右可以实现一行显示吗?当然可以:
div{
width:200px;
height:200px;
border:2px red solid;
}
#div1{float:left;}
#div2{float:right;}
效果图
什么是层模型?
什么是层布局模型?层布局模型就像是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧。但是在网页上局部使用层布局还是有其方便之处的。下面我们来学习一下html中的层布局。
如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作。CSS定义了一组定位(positioning)属性来支持层布局模型。
层模型有三种形式:
1、绝对定位(position: absolute)
2、相对定位(position: relative)
3、固定定位(position: fixed)
层模型之绝对定位
如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。
如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。
div{
width:200px;
height:200px;
border:2px red solid;
position:absolute;
left:100px;
top:50px;
}
<div id="div1"></div>
效果如下:
相对于自己的位置-层模型之相对定位
如果想为元素设置层模型中的相对定位,需要设置position:relative(表示相对定位),它通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于**以前的位置移动,**移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动。
如下代码实现相对于以前位置向下移动50px,向右移动100px;
#div1{
width:200px;
height:200px;
border:2px red solid;
position:relative;
left:100px;
top:50px;
}
<div id="div1"></div>
效果图:
什么叫做“偏移前的位置保留不动”呢?
大家可以做一个实验,在代码19行div标签的后面加入一个span标签,在标并在span标签中写入一些文字。如下代码:
<body>
<div id="div1"></div><span>偏移前的位置还保留不动,覆盖不了前面的div没有偏移前的位置</span>
</body>
效果图:
从效果图中可以明显的看出,虽然div元素相对于以前的位置产生了偏移,但是div元素以前的位置还是保留着,所以后面的span元素是显示在了div元素以前位置的后面。
注:绝对定位是根据上一层标签或者body标签来的,二相对定位是根据自己来的
层模型值固定定位
fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身
就是滑动屏幕,但是该标签下的样式不会因为滑动儿改变在屏幕中的位置
#div1{
width:200px;
height:200px;
border:2px red solid;
position:fixed;
left:100px;
top:50px;
}
<p>文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。</p>
....
Relative与Absolute组合使用
小伙伴们学习了12-6小节的绝对定位的方法:使用position:absolute
可以实现被设置元素相对于浏览器(body)设置定位以后,大家有没有想过可不可以相对于其它元素进行定位呢?答案是肯定的,当然可以。使用position:relative来帮忙,但是必须遵守下面规范:
1、参照定位的元素必须是相对定位元素的前辈元素:
<div id="box1"><!--参照定位的元素-->
<div id="box2">相对参照元素进行定位</div><!--相对定位元素-->
</div>
从上面代码可以看出box1是box2的父元素(父元素当然也是前辈元素了)。
2、参照定位的元素必须加入position:relative;
#box1{
width:200px;
height:200px;
position:relative;
}
3、定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。
#box2{
position:absolute;
top:20px;
left:30px;
}
这样box2就可以相对于父元素box1定位了(这里注意参照物就可以不是浏览器了,而可以自由设置了)。
flex弹性盒模型
弹性盒模型之flex属性
这一章节我们来学习flex弹性盒子模型,根据下面的例子来理解一下吧:
实现上图效果,我们需要输入以下代码:
上面的代码:
三个块元素设置大小以及背景色,在父容器中添加flex。
技术点的解释:
1、设置display: flex属性可以把块级元素在一排显示。
2、flex需要添加在父元素上,改变子元素的排列顺序。
3、默认为从左往右依次排列,且和父元素左边没有间隙。
使用justify-content属性设置横轴排列方式
这一章节我们来学习justify-content属性,本属性定义了项目在主轴上的对齐方式。结合上一节的布局例子进行理解,属性值分别为:
justify-content: flex-start | flex-end | center | space-between | space-around;
flex-start
:交叉轴的起点对齐
.box {
background: blue;
display: flex;
justify-content: flex-start;
}
实现效果:
flex-end
:右对齐
.box {
background: blue;
display: flex;
justify-content: flex-end;
}
实现效果:
center
: 居中
.box {
background: blue;
display: flex;
justify-content: center;
}
实现效果:
space-between
:两端对齐,项目之间的间隔都相等。
.box {
background: blue;
display: flex;
justify-content: space-between;
}
实现效果:
space-around
:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
.box {
background: blue;
display: flex;
justify-content: space-around;
}
实现效果:
使用align-items属性设置纵轴排列方式
这一章节我们来学习align-items属性,本属性定义了项目在交叉轴上的对齐方式。属性值分别为:
align-items: flex-start | flex-end | center | baseline | stretch;
结合右侧编辑器中的布局以及下面的样式设置进行理解:
flex-start
:默认值,左对齐
.box {
height: 700px;
background: blue;
display: flex;
align-items: flex-start;
}
实现效果:
flex-end
:交叉轴的终点对齐
.box {
height: 700px;
background: blue;
display: flex;
align-items: flex-end;
}
实现效果:
center
: 交叉轴的中点对齐
.box {
height: 700px;
background: blue;
display: flex;
align-items: center;
}
实现效果:
baseline
:项目的第一行文字的基线对齐。
.box {
height: 700px;
background: blue;
display: flex;
align-items: baseline;
}
三个盒子中设置不同的字体大小,可以参考右侧编辑器中的代码进行测试。
实现效果:
stretch(默认值)
:如果项目未设置高度或设为auto,将占满整个容器的高度。
.box {
height: 300px;
background: blue;
display: flex;
align-items: stretch;
}
.box div {
/*不设置高度,元素在垂直方向上铺满父容器*/
width: 200px;
}
实现效果:
给子元素设置flex占比
这一章节我们来学习flex属性,设置子元素相对于父元素的占比。
可以参考右侧编辑器的代码,测试效果如下:
技术点的解释:
1、给子元素设置flex属性,可以设置子元素相对于父元素的占比。
2、flex属性的值只能是正整数,表示占比多少。
3、给子元素设置了flex之后,其宽度属性会失效。
css样式设置小技巧
水平居中设置-行内元素
我们在实际工作中常会遇到需要设置水平居中的场景,比如为了美观,文章的标题一般都是水平居中显示的。
这里我们又得分两种情况:行内元素 还是 块状元素 ,块状元素里面又分为定宽块状元素,以及不定宽块状元素。今天我们先来了解一下行内元素怎么进行水平居中?
如果被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置 text-align:center
来实现的。(父元素和子元素:如下面的html代码中,div是“我想要在父容器中水平居中显示”这个文本的父元素。反之这个文本是div的子元素 )如下代码:
html代码:
<body>
<div class="txtCenter">我想要在父容器中水平居中显示。</div>
</body>
css代码:
<style>
.txtCenter{
text-align:center;
}
</style>
水平居中设置-定宽块状元素
当被设置元素为 块状元素 时用 text-align:center 就不起作用了,这时也分两种情况:定宽块状元素和不定宽块状元素。
这一小节我们先来讲一讲定宽块状元素。(定宽块状元素:块状元素的宽度width为固定值。)
满足定宽和块状两个条件的元素是可以通过设置“左右margin”值为“auto”来实现居中的。我们来看个例子就是设置 div 这个块状元素水平居中:
html代码:
<body>
<div>我是定宽块状元素,哈哈,我要水平居中显示。</div>
</body>
css代码:
<style>
div{
border:1px solid red;/*为了显示居中效果明显为 div 设置了边框*/
width:200px;/*定宽*/
margin:20px auto;/* margin-left 与 margin-right 设置为 auto */
}
</style>
也可以写成:
margin-left:auto;
margin-right:auto;
注意:元素的“上下 margin” 是可以随意设置的。
已知宽高实现盒子水平垂直居中
这一章节我们来学习已知宽高实现盒子水平垂直居中。通常使用定位完成,例如想要实现以下效果:
我们有如下两个div元素
要实现子元素相对于父元素垂直水平居中,我们只需要输入以下代码:
技术点的解释:
1、利用父元素设置相对定位,子元素设置绝对定位,那么子元素就是相对于父元素定位的特性。
2、子元素设置上和左偏移的值都为50%,是元素的左上角在父元素中心点的位置。效果:
3、然后再用margin给上和左都给负的自身宽高的一半,就能达到垂直水平居中的效果。
宽高不定实现盒子水平垂直居中
这一章我们来学习未知宽高实现盒子水平垂直居中,通常使用定位以及translate完成。参考下面例子:
<div class="box">
<div class="box1">
慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网慕课网
</div>
</div>
添加样式:
.box {
border: 1px solid #00ee00;
height: 300px;
position: relative;
}
.box1 {
border: 1px solid red;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
效果如下:
技术点的解释:
1、利用父元素设置相对定位,子元素设置绝对定位,那么子元素就是相对于父元素定位的特性。
2、子元素设置上和左偏移的值都为50%。
3、然后再用css3属性translate位移,给上和左都位移-50%距离,就能达到垂直水平居中的效果。