软件的架构包括:C/S,B/S。
step1:网页设计师根据需求设计网页视图
step2:前端工程师将其设计成静态网页
step3:后台工程师将静态网页修改为动态网页
注:Node.js写服务器的。
全栈:既能写前端,又能写服务器。
结构、表现、行为
结构:HTML用于描述页面的结构
表现:CSS用于控制页面中元素的样式
行为:JavaScript用于相应用户操作
注:W3C:万维网联盟。
HTML为超文本标记语言,超文本指的是超链接。
用记事本写的是纯文本,纯文本中只能保存文本内容,图片、音频、视频等无法保存。
基本格式:
<html>
<head>
<title> 这是一个非常好的网页title>
head>
<body>
<h1>这是我的第一个网页h1>
body>
html>
可以通过属性来设置标签,如果处理标签,如果处理标签,可以在开始标签中添加属性,属性需要写在开始标签中,实际上就是一个名值对。
设置颜色属性:
<h1>这是我的<font color="red" size="7">第二个font>网页h1>
标签:定文本的字体、字体尺寸、字体颜色。color
:颜色属性size
:字体大小属性,最大为7font
是表现属性,不赞成使用,因为表现用CSS设置更加好。为了让浏览器知道我们使用的HTML版本,我们需要文档声明。在HTML5中,文档声明非常简单。
HTML5声明:
为了兼容一些旧的页面,浏览器中设置了两种解析模式:
如果不声明可能在怪异模式时出现异常。
元素
一个完整的标签就是元素。
进制
太简单,省略了,不记笔记。
乱码出现的原因:
计算机是一个非常笨的,只认识两个东西:0
和1
.在计算机中保存的任何内容,最终都需要转换为0
和1
来保存。在读取的时候,需要把二进制编码转换为正确的内容。
编码:依据一定的规则,将字符转换为二进制编码的过程。
解码:依据一定的规则,将二进制编码转为字符的过程。
字符集:编码和解码所采用的规则,被称为字符集。就相当于密码本。
常见的字符集:
meta
来设置网页的一些元数据,比如网页的字符集,关键字,简介。meta
来告诉浏览器,网页所采用的编码字符集,然后浏览器会采用相应的字符集来解码。<meta charset="utf-8" />
这条标签告诉浏览器,我们采用utf-8
来编码,然后浏览器会采用相应的字符集来解码,从而不出现乱码。
标题标签
一共有六级标题。对于搜索引擎来说,一级标题的重要性仅次于title,会影响页面在搜索引擎中的排名。
一般页面中标题标签只使用h1,h2,h3,以后的基本不用。
<! doctype html>
<html>
<head>
<meta charset='utf-8'/>
<title>常用的标签title>
head>
<body>
<h1>一级标题h1>
<h2>一级标题h2>
<h3>一级标题h3>
<h4>一级标题h4>
<h5>一级标题h5>
<h6>一级标题h6>
body>
html>
<p>我是一个p标签,我用来表示一个段落p>
在HTML中,字符之间插入的空格再多,浏览器也会当成一个空格,换行也会当做一个空格。
换行标签:
如果要换行采用
上述两个标签的实例:
<! doctype html>
<html>
<head>
<meta charset='utf-8'/>
<title>常用的标签title>
head>
<body>
<p>我是一个p标签,我用来表示一个段落p>
<p>我是一个p标签,我用来表示一个段落p>
<p>
离离原上草,
一岁一枯荣,
野火烧不尽,
粒粒皆辛苦。
p>
<p>
离离原上草,<br/>
一岁一枯荣,<br/>
野火烧不尽,<br/>
粒粒皆辛苦。<br/>
p>
body>
html>
在HTML中,一些如< >这种特殊字符是不能直接使用的,需要使用一些特殊的符号来表示这些字符,这些特殊符号被称为实体(转义字符串)
实体的语法:&实体名字;
<
:<
>
:>
空格
©
:版权符号
使用img
标签来向网页引入一个外部图片,该标签是自结束标签,
属性:
src
:设置一个外部图片的路径。
alt
:可用来设置图片的描述,只有在图片不能显示的时候才会出现字样,搜索引擎可用通过该属性来识别不同的图片,如果不写该属性,则搜索引擎不会对该图片进行收录解锁。
width
:设置图片宽度
height
:设置图片高度
如果宽度和高度只是设置一个,另一个也会同时等比例调整大小,如果同时设置两个属性就按照我们的设置来,一般不建议设置这两个属性。
插入一幅图:
[外链图片转存失败(img-mA7htndO-1562049705918)(https://mp.csdn.net/mdeditor/images/1.jpg)]
src
属性配置的是图片的路径,目前我们所要使用的路径全部都是相对路径。
相对路径:相对于当前html文件所在的目录的文件夹。
../
:上一级目录
../../
:上一级的上一级目录
./
:当前html文件的下一级目录
jpeg(jpg)
:支持的颜色比较多,图片可以压缩,但是不支持透明,一般用于保存照片等颜色丰富的图片。
gif
:支持的颜色少,只是支持简单的透明,支持动态图。图片颜色单一,或者动态图时候可以使用。
png
:支持的颜色多,并且支持复杂的透明,可以用来显示颜色复杂的透明图片。
图片的使用原则:效果不一致,使用效果好的,效果一致使用小的。
meta
标签使用meta
标签还可以用来设置网页的关键字。
比如:
在该网页中,只要输入:前端,HTML5,javascript,前端,这时该网页被搜索到的概率很大。
meta
还可以实现网页重定向。
<! doctype html>
<html>
<head>
<meta charset='utf-8'/>
<title>title>
<meta http-equiv="refresh" content="5;url=http://www.baidu.com"/>
head>
<body>
<h1>5秒后跳转页面h1>
body>
html>
效果:5秒后会自动跳转到百度主页。
使用内联框架可以引入一个外部页面,使用iframe
来创建一个内联框架,属性和图片类似。
属性:
src
:指向一个外部页面的路径,可以使用相对路径。
在现实中不推荐使用内联框架,因为内联框架中的内容不会被搜索引擎所检索。
<! doctype html>
<html>
<head>
<meta charset='utf-8'/>
<title>title>
head>
<body>
使用超链接可以让我们从一个页面跳转到另一个页面,使用a
标签创建一个超链接。
属性:
href
:指向链接跳转的目标地址,可以写一个相对路径,也可以写一个完整的地址。
<a href="http://www.baidu.com">我是一个超链接 a>
a
标签中的target
属性可以用来指定打开链接的位置,它的可选值:
_self
:表示在当前窗口中打开(默认值)_blank
:在一个新的窗口中打开链接center
标签中的内容,会默认在页面中居中显示,可以将要居中的内容放在该标签中。<! doctype html>
<html>
<head>
<meta charset='utf-8'/>
<title>title>
head>
<body>
我是一个超链接 a><br /><br /><br />
<a href="dome2.html">我是一个超链接 a>
<center>
这是我的个人博客
center>
body>
html>
后一个兄弟元素选择器
作用:可以选中一个元素后紧挨着的指定的兄弟元素
语法:前一个+后一个
例子:为span
后的一个p元素设置一个背景颜色为黄色
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
span+p{
background-color:red;
}
style>
head>
<body>
<p>我是一个P标签p>
<p>我是一个P标签p>
<p>我是一个P标签p>
<p>我是一个P标签p>
<span>我是一个span标签span>
<p>我是一个P标签p>
<p>我是一个P标签p>
<p>我是一个P标签p>
body>
html>
效果:
<style type="text/css">
span~p{
background-color:red;
}
style>
作用:可以从已经选中的元素中剔除出某些元素
语法::not(选择器)
例子:为除了class值为hello的所有P元素设置一个背景颜色为红色。
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
p:not(.hello){
background-color:red;
}
style>
head>
<body>
<p>我是一个P标签p>
<p>我是一个P标签p>
<p>我是一个P标签p>
<p>我是一个P标签p>
<p class="hello">我是一个不同的P元素p>
<p>我是一个P标签p>
<p>我是一个P标签p>
<p>我是一个P标签p>
body>
html>
效果:
像儿子可以继承父亲的遗产一样,在CSS中,祖先元素上的样式,也会被他的后代所继承。利用继承,可以将一些基本的样式设置给祖先元素,这样所有的后代元素将会自动继承这些样式。
但是并不是所有的样式都会被子元素继承,比如:背景相关的样式不会被继承。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<p style="font-size:30px;">
我是p标签中的文字
<span>我是spanspan>
p>
<span>我是p标签外的spanspan>
body>
html>
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<div style="background-color:yellow">
<p style="font-size:30px;">
我是p标签中的文字
<span>我是spanspan>
p>
div>
<span>我是p标签外的spanspan>
body>
html>
效果:
我们发现子元素背景颜色变黄了,但是这不是继承的,这是由于所有标签的背景颜色是透明的,这里div中的p中的内容的背景颜色是透明的,但是div中背景颜色设置为黄色,子元素背景颜色的黄色是div的背景颜色透过来了覆盖了原来的透明色,因此让人误认为是p继承了div的背景颜色。
使用不同的选择器,选中同一个元素时并且设置相同的样式时,这时样式之间产生了冲突。到底最终会采用哪个选择器定义的样式,由选择器的优先级确定,优先级高的有限显示。
优先级规则:
内联样式,优先级:1000
id选择器,优先级:100
类和伪类,优先级:10
元素选择器,优先级:1
通配选择器`*`:优先级:0
继承的样式,没有优先级。
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
/* 类选择器 */
.p1{
background-color:yellow;
}
/* 元素选择器 */
p{
background-color:red;
font-size:50px;
}
/* id选择器 */
#p2{
background-color:blue;
}
/* 通配选择器 */
*{
font-size:30px;
}
style>
head>
<body>
<p class="p1" id="p2">我是一个段落
<span>我是一个p标签span>
p>
body>
html>
效果:
分析:span中的文字没有继承p标签总的文字大小,而是采用通配选择器的字体大小,这是因为继承没有优先级,由于上述设置背景颜色的选择器中id选择器的优先级最高,因此背景色为蓝色。
当选择器中包含多种选择器时,需要将多种选择器的优先级相加然后比较。但是注意,选择器优先级计算不会超过他的最大数量级。比如:我们有10个id选择器,最终的优先级不会是1000,而是999或者900。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
#p2{
background-color:blue;
}
p#p2{
background-color:red;
}
style>
head>
<body>
<p class="p1" id="p2" >我是一个段落
<span>我是一个p标签span>
p>
body>
html>
效果:
由于p#p2
的优先级为101,而#p2
的优先级为100,因此显示红色背景。
如果选择器的优先级一样,谁在后面就用谁。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.p1{
background-color:yellow;
}
.p3{
background-color:red;
}
style>
head>
<body>
<p class="p1 p3" id="p2" >我是一个段落
<span>我是一个p标签span>
p>
body>
html>
div, p, #p1, .hello
可以在样式的最后添加一个!important
,则此时该样式会获得一个最高的优先级,甚至超过内联样式,但是开发中慎用。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.p1{
background-color:yellow !important;
}
style>
head>
<body>
<p class="p1" id="p2" style="background-color:blue;">我是一个段落
<span>我是一个p标签span>
p>
body>
html>
效果:
分析:尽管我们采用了内联样式设置背景颜色为黄色,但是我们在类选择器中用了!important
,因此该类选择器的优先级最高,故背景颜色为黄色。
:link 未访问的链接的颜色状态
:visited 访问过的链接的颜色状态
:hover 将鼠标移入链接时,链接的颜色状态
:active 激活链接时,链接的颜色状态
这几个的优先级是一样的,顺序按照上面的顺序写,这样才不会出错。记忆方法:LVhao(LV牌子的包包hao)
em
:语气上的强调,默认斜体显示
strong
:强调内容,比em
更加强烈,默认使用粗体显示。
i
:标签中的内容会以斜体显示
b
:标签中的内容会以加粗显示
H5规范中规定:对于不需要着重强调的内容而是单纯的加粗或者斜体,则用这两个标签。
small
:标签中的内容会比他的父元素的文章的内容小一些。在h5中使用small标签来表示一些细则一类的内容。
big
:标签中的内容比父元素的文字大,没有语义。
cite
:网页中所有加有书名号的内容都可以使用cite标签,表示参考的内容。
q
:表示短的引用(行内引用)
引用后的效果:
blockquote
:表示一个长引用(块级引用)
sup
:设置一个上标
sub
:设置一个下标
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<p>
明朝<sup><a href="#">[1]a>sup>
p>
body>
html>
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<p>
<del>1000del>
p>
<p>9.98p>
body>
html>
效果:
ins
:表示一个插入的内容,会添加下划线。
pre
:是一个预格式标签,会将其中的格式保存,不会忽略多个空格。
code
:专门用于表示代码
列表就相当于去超市购物时的那个购物清单,在HTML中也可以创建列表,在网页中一共有三中列表。
ul
标签来创建一个无序列表li
在ul
中创建一个一个的列表项,一个li
就是一个列表项。<body>
<ul>
<li>西门大官人li>
<li>荣大官人li>
<li>许大官人li>
<li>柴大官人li>
ul>
body>
<style type="text/css">
/* 去掉项目符号 */
ul{list-style:none;}
style>
效果:
ul
和li
都是块元素。
2.有序列表
有序列表和无序列表类似,只不过它使用ol
来代替ul
。
type属性,可以指定序号的类型
可选值:
1.默认值,使用阿拉伯数字
2.a/A 采用小写或者大写字母作为序号
3.i/I采用小写或者大写罗马数字作为序号
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<ol>
<li>西门大官人li>
<li>荣大官人li>
<li>许大官人li>
<li>柴大官人li>
ol>
<ol type="A">
<li>西门大官人li>
<li>荣大官人li>
<li>许大官人li>
<li>柴大官人li>
ol>
<ol type="i">
<li>西门大官人li>
<li>荣大官人li>
<li>许大官人li>
<li>柴大官人li>
ol>
body>
html>
效果:
列表之间可以互相嵌套,可以在无序列表中放入有序等等。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<p>菜谱p>
<ul>
<li>鱼香肉丝li>
<ol>
<li>鱼li>
<li>香li>
<li>肉丝li>
ol>
<li>宫保鸡丁li>
<ul>
<li>宫保li>
<li>鸡丁li>
ul>
<li>青椒肉丝li>
ul>
body>
html>
效果:
3.定义列表
用来对一些词汇或者内容进行定义。
比如:
胡萝卜:一种蔬菜
使用dl
来创建一个定义列表。
dl中有两个子标签
dt:被定义的内容
dd:对被定义内容做描述
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<dl>
<dt>武松dt>
<dd>打虎英雄,战斗力 99dd>
<dt>武大dt>
<dd>著名餐饮企业家,战斗力0dd>
dl>
body>
html>
像素:px
,像素是在网页中使用的最多的单位,一个像素相当于我们屏幕中的一个小点,我们的屏幕实际上就是由这些像素点构成的。但是这些像素点是不能直接看见的,不同的显示器一个像素的大小也不同,显示效果越好越清晰,像素越小,反之越大。
百分比:%
,也可以将单位设置一个百分比的形式,这样浏览器将会根据其父元素的样式来计算该值,使用百分比的好处是,当父元素的属性值发生变化的时候,子元素也会按照比例发生改变。在我们创建一个自适应的页面时,经常使用百分比作为单位。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
/* 像素 */
.box{
width:200px;
height:200px;
background-color:red;
}
/* 百分比 */
.box1{
width:50%;
height:50%;
background-color:yellow;
}
style>
head>
<body>
<div class="box">
<div class="box1">div>
div>
body>
html>
效果:
当父元素红色正方变大,子元素也会变大。
em
和百分比类似,它是相对于当前元素的字体大小来计算的。
1em = 1 font-size
使用em
时,当字体大小发生改变时,em
也会随之改变,当设置字体相关的样式时,经常会使用em
。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
/* 像素 */
.box{
width:200px;
height:200px;
background-color:red;
}
/* 百分比 */
.box1{
font-size:100px;
width:0.5em;
height:50%;
background-color:yellow;
}
style>
head>
<body>
<div class="box">
<div class="box1">div>
div>
body>
html>
颜色单位;在CSS中可以直接使用颜色的单词来表示不同的颜色。也可以使用RGB值来表示颜色。
所谓的RGB值指的是通过Red Green Blue三元色,通过这三种颜色的不同浓度来表示不同的颜色。
例子:
rgb(红色浓度,绿色的浓度,蓝色的浓度)
-颜色的浓度需要一个0-255之间的值,255表示最大,0表示最小。
-浓度也可以采用一个百分数来设置,需要一个0%-100%之间的数字,使用百分数最终也会转换为0-255之间的数。0%表示0;100%表示255.
也可以使用十六进制的RGB值来表示颜色,原理和上边RGB原理一样,只不过使用十六进制数来代替,使用三组两位的十六进制数组来表示一个颜色。
语法:#红色绿色蓝色
00:表示没有,相当于rgb中的0;ff表示最大,相当于rgb中的255.
两位两位重复的颜色可以简写,比如:
#ff0000
可以写成#f00
浏览器中一般默认的文字大小为16px。font-size
设置的不是文字本身的大小,每个页面中,每个文字都是处在一个看不见的框中,我们设置的font-size
实际上设置的是格的高度,并不是字体大小,一般情况下文字比这个格小一些,也会比格大,根据字体的不同,显示效果也不同。
当采用某种字体时,如果浏览器支持则使用该字体,如果字体不支持,则使用默认字体。可以同时指定多个字体,这时浏览器会优先使用前边的字体,如果前边没有在尝试下一个。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.p1{
color:red;
font-size:20px;
font-family:华文彩云,arial,微软雅黑;
}
style>
head>
<body>
<p class="p1">我是一个p标签,ABCDefgp>
body>
html>
在网页中将字体分成5大类:
一般会将字体的大分类指定为font-family
中的最后一个字体,防止前面的字体无法在浏览器中实现。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.p1{
color:red;
font-size:20px;
font-family:华文彩云,arial,微软雅黑;
}
style>
head>
<body>
<p style="font-size:50px;font-family:serif;">衬线字体ABCDefgp>
<p style="font-size:50px;font-family:sans-serif;">非衬线字体ABCDefgp>
<p style="font-size:50px;font-family:monospace;">等宽字体ABCDefgp>
<p style="font-size:50px;font-family:cursive;">草书字体ABCDefgp>
<p style="font-size:50px;font-family:fantasy;">虚幻字体ABCDefgp>
body>
html>
font-style
可以用来设置文字的斜体。
可选值:
normal,默认值,文字正常显示。
italic 文字会以斜体表示。
oblique 文字会以倾斜的效果显示。
大部分浏览器都不会对倾斜和斜体做区分,也就是说我们设置italic
和oblique
它们的效果往往是一样的。一般我们只会使用italic
。
<style type="text/css">
.p1{
color:red;
font-size:30px;
font-family:微软雅黑;
font-style:italic;
}
style>
font-weight
可以用来设置文本的加粗效果;
可选值:
normal 文字正常显示
bold 文字加粗显示
该样式也可以指定100-900之间的9个值,但是由于用户的计算机往往没有这么多级别的字体,所以达到我们想要的效果也就是200,有可能比200粗,但是也有可能是一样的。
<style type="text/css">
.p1{
font-weight:600;
}
style>
font-variant
可以用来设置小型大写字母。
可选值:
normal,默认值,文字正常显示
small-caps 文字以小型大写字母显示
小型大写字母:将所有的字母都以大写形式显示,但是小写字母的大写要比大写字母的大小小一些。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.p1{
font-weight:600;
font-variant:small-caps;
}
style>
head>
<body>
<p class="p1">我是一段文字ABCabcp>
body>
html>
效果:
分析:小写字母变成大写的,但是比原本大写的要小一些。
在css中还为我们提供了一个样式叫font
,使用该样式可以同时设置字体相关的所有样式。
可以将字体的格式的值统一写在font格式中,不同的值之间使用空格隔开,使用font设置字体样式时,文字的大小和字体必须写,而且字体放在最后,文字的大小放在倒数第二。
.P3{
font:italic small-caps bold 60px "微软雅黑";
}
在css中并没有为我们提供一个直接设置行间距的方式,我们只能通过设置行高来间接的设置行间距,行高越大行间距越大,使用line-height
来设置行高。行高类似于单线本,单线本是一行一行,线与线之间的距离就行高,网页中的文字实际上也是写在一个看不见的线中的,而文字会默认在行高中垂直居中显示。
行间距=行高-字体大小
通过设置line-height
可以间接的设置行高,
可以接受的值:
1.直接接收一个大小
2.可以指定一个百分数,则会相对于字体去计算行高
3.可以直接传一个数值,则行高会设置字体大小相应的倍数。
设置代码:
<style type="text/css">
.p1{
font-size:30px;
line-height:40px;
/* 百分数 */
line-height:200%;
/* 倍数 */
line-height:2;
}
style>
对于当行文本来说,可以将行高设置为和父元素的高度一致,这样可以是单行文本在父元素中垂直居中。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box{
width:200px;
height:200px;
background-color:#bfa;
line-height:200px;
}
style>
head>
<body>
<div class="box"><a href="#">我是一个链接a>div>
body>
html>
效果:
在font
中也可以指定行高,在字体后可以添加/行高
来指定行高,该值是可选的,如果不指定则会使用默认值。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.p1{
font:30px/80px 华文彩云;
}
style>
head>
<body>
<p class="p1">旗下拥有:专业的中文IT技术社区: CSDN.NET;移动端开发者专属APP: CSDN APP、CSDN学院APP;新媒体矩阵微信公众号:CSDN资讯、程序人生、GitChat、CSDN学院、AI科技大本营、区块链大本营、CSDN云计算、GitChat精品课、人工智能头条、CSDN企业招聘;IT技术培训学习平台: CSDN学院;技术知识移动社区: GitChat;人工智能新社区: TinyMind;权威IT技术内容平台:《程序员》+ GitChat;IT人力资源服务:科锐福克斯;IT技术管理者平台:CTO俱乐部。p>
body>
html>
效果:
如果按照下面的写法,则行高设置失败,这是因为我们设置的行高被font
中的默认行高覆盖。
<style type="text/css">
.p1{
line-height:60px;
font:30px/80px 华文彩云;
}
style>
text-transform
可以用来设置文本的大小写
可选值:
none 默认值,该怎么显示就怎么显示,不做任何设置
capitalize 单词的首字母变成大写,通过空格来识别单词
uppercase 所有字母都变成大写
lowercase 所有的字母都变成小写
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.p1{
text-transform:uppercase;
}
style>
head>
<body>
<p class="p1">We Are p>
body>
html>
效果:
text-decoration
可以用来设置文本的修饰
可选值:
none:默认值,不添加任何修饰,正常显示
underline 为文本添加下划线
overline 添加上划线
line-through 添加删除线
超链接会默认添加下划线,也就是超链接的text-decoration
的默认值是underline,如果需要去除超链接的下划线则需要将样式设置为none.
letter-spacing
可以指定字符间距。
word-spacing
可以指定单词与单词间的间距,实际上就是设置词与词之间的大小。
text-align
:用于设置文本的对齐关系。
可选值
left 默认值:靠左对齐
right 文本右对齐
center 文本居中对齐
justify 两端对齐,通过调整文本之间的空格大小, 来达到一个两端对齐的效果。
text-indent
:用来设置首行缩进,当给它指定一个正值时,会自动想右侧缩进指定的像素,如果指定负值,则会向左侧移动指定的像素。通过用这种方式可以将一些不想显示的文字隐藏起来。一般使用em
作为单位。
非常重要,这是最重要的CSS知识点。
CSS处理网页时,它认为每个元素都包含在一个不可见的盒子里。
为什么要想象成盒子?因为如果把所有的元素都想象成盒子,那么我们对网页的布局就相当于是摆放盒子。我们只需要将相应的盒子摆放到网页中相应的位置即可完成网页的布局。
上图是盒子模型,中间的框是内容区。
内容区的设置:
使用width来设置盒子内容区的宽度,使用功能height来设置盒子内容区的高度,width和height只是设置盒子内容区的大小,而不是盒子的整个大小,盒子可见框的大小由内容区,内边距和边框共同决定。
边框的设置:
要为一个元素设置边框必须指定三个样式,缺一不可。
border-width:边框的宽度
border-color:边框的颜色
border-style:边框的样式
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
/*
使用width来设置盒子内容区的宽度
使用功能height来设置盒子内容区的高度
width和height只是设置盒子内容区的大小,而不是
盒子的整个大小,盒子可见框的大小由内容区,内边距和边框
共同决定。
*/
width:100px;
height:100px;
background-color:yellowgreen;
/* 为元素设置边框
要为一个元素设置边框必须指定三个样式
border-width:边框的宽度
border-color:边框的颜色
border-style:边框的样式
*/
border-width:20px;
border-color:red;
border-style:solid;
}
style>
head>
<body>
<div class="box1">div>
body>
html>
效果:
分析:此时盒子的内容区大小不变,仍然是100px*100px,盒子的边框为红色的,整个盒子变大。
如果border-width
指定了四个值,则四个值分别设置了上右下左(顺时针)。如果指定了三个值,则这三个值分别设置给上、左右、下。如果设置了两个值则分别设置给上下、左右。如果设置一个值,则四个边都是这个值,比如上面的例子。
设置四个值的例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:100px;
height:100px;
background-color:yellowgreen;
border-width:10px 20px 30px 40px;
border-color:red;
border-style:solid;
}
style>
head>
<body>
<div class="box1">div>
body>
html>
效果:
除了border-width
,css中还提供了四个border-xxx-eidth
xxx的值可能是:top,right,bottom,left,专门设置指定边的宽度。
注:设置边框的三个样式都具有与border-width
一样的规则。
大部分的浏览器中,边框的宽度和颜色都有默认值,而边框的样式的饿默认值都是none。
同时设置三个样式:
border
-边框的简写样式,通过它可以同时设置四个边框的样式,宽度,颜色,而且没有任何顺序要求。
border一指定就是同时指定四个边不能分别指定。
border-top,border-right,border-bottom,border-left,border能设置一条边。
例子:设置除了右边的其他三条边框。
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:200px;
height:200px;
background-color:yellowgreen;
border:solid 10px red;
border-right:none;
}
style>
head>
<body>
<div class="box1">div>
body>
html>
设置内边距:
内边距(padding),指定盒子内容区与盒子之间的距离,一共有四个方向的内边距,可以通过四个属性设置:
padding-top
padding-bottom
padding-right
padding-left
内边距会影响可见框的大小,元素的背景会延伸到内边距。
例子:设置上边距盒子变大。
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:200px;
height:200px;
background-color:green;
/* 设置边框 */
border:10px red solid;
/*
*/
padding-top:100px;
}
.box2{
width:200px;
height:200px;
background-color:yellow;
}
style>
head>
<body>
<div class="box1">
<div class="box2">div>
div>
body>
html>
效果:
分析:绿色的是内边距,黄色的是内容区。
盒子的大小由内容区、内边距、边框共同决定。
使用padding
可以同时设置四个边框的样式,规则和border-width
一致。
外边距指的是当前盒子与其他盒子之间的距离,他不会影响可见框的大小,而是会影响到盒子的位置,盒子的四个方向的外边框:
margin-top
margin-right
margin-bottom
margin-left
由于页面中的元素都是靠左和靠上摆放,所以注意:当我们上和左边距时,会导致盒子自身的位置发生改变,而如果是设置右和下外边距会改变其他盒子的位置。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:200px;
height:200px;
background-color:green;
/* 设置边框 */
border:10px red solid;
margin-top:100px;
margin-left:100px;
margin-bottom:100px;
}
.box2{
width:200px;
height:200px;
background-color:yellow;
}
style>
head>
<body>
<div class="box1"> div>
<div class="box2">div>
body>
html>
效果:
外边距也可以指定为一个负值,如果外边距设置的是负值,则元素往反方向移动。
margin还可以设置为auto,auto一般只设置给水平方向的margin。如果只指定左外边距或者右外边距的margin为auto,则会将外边距设置为最大值。垂直方向外边距如果设置为auto,则外边距默认值为0.
如果将margin-left
和margin-right
同时设置为auto,则会将两则的外边距设置为相同的值,既可以使得元素自动在父元素中水平居中。
外边距同样可以使用简写属性margin
,同时设置四个外边距,规则和padding
一行。
在网页中垂直方向的相邻外边距会发生外边距的重叠,所谓的外边距重叠指兄弟元素之间的相邻外边距会取最大值而不是取和。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:200px;
height:200px;
background-color:green;
margin-bottom: 100px;
}
.box2{
width:200px;
height:200px;
background-color:yellow;
margin-top: 200px;
}
style>
head>
<body>
<div class="box1"> div>
<div class="box2">div>
body>
html>
效果
空白处是200而不是300px。
发生外边距重叠需要两个因素:两个盒子相邻且是在垂直方向上发生。
如果父子元素的垂直外边距相邻了,则子元素的外边距会设置给父元素。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box3{
width:200px;
height:200px;
background-color:red;
}
.box4{
width:100px;
height:100px;
background-color:yellowgreen;
}
style>
head>
<body>
<div class="box3">
<div class="box4">div>
div>
body>
html>
浏览器为在页面中没有样式时,也可以让页面有一个比较好的显示效果,所以为很多元素都设置了一些默认的margin和padding,它的这些默认样式,正常情况下我们是不需要使用的,所以我们往往在编写样式之前需要将浏览器中默认的样式统统去掉。
采用下面的代码可去除浏览器默认样式:
*{
matgin:0;
padding:0;
}
内联元素不能设置width和height。设置水平内边距,内联元素可以设置水平方向的内边距。内联元素可以设置边框,但是垂直的边框不会影响到页面布局。
内联元素支持水平方向的外边距。水平方向的外边距不会重叠。而是求和。内联元素不支持垂直外边距。
将一个内联元素变成块元素,通过display
样式可以修改元素的类型。
可选值:
inlien:可以将一个元素作为内联元素显示
block:可以将一个元素设置为块元素显示
inline-block:将一个元素转换为行内块元素显示
-可以使得一个元素既有行内元素特点又有块元素特点,既可以设置宽高,又不会独占一行。
none表示不显示元素,并且元素不会在页面中继续占有位置。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
a{
background-color:green;
display:inline-block;
width:200px;
height:200px;
}
style>
head>
<body>
<a href="#">我是一个大大的超链接a>
<span>哈哈span>
body>
html>
可以用来设置元素的隐藏和显示的状态
hidden 元素隐藏不显示,使用该元素隐藏的元素虽然不会在页面中显示,但是位置依然保存。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box{
width:100px;
height:100px;
background-color:red;
visibility: hidden;
}
style>
head>
<body>
<div class="box">div>
<p>哈哈p>
body>
html>
子元素是默认存在于父元素的内容区中,理论上讲子元素的最大可以等于父元素内容区大小,如果子元素的大小超过了父元素的内容区,则超过的大小在父元素以外的位置显示,超出父元素的内容,我们称为溢出的内容。
父元素默认将溢出内容,在父元素外边显示。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:200px;
height:200px;
background-color:red;
}
.box2{
width:100px;
height:500px;
background-color:yellow;
}
style>
head>
<body>
<div class="box1">
<div class="box2">div>
div>
body>
html>
效果:
通过overflow
可以设置父元素如何处理溢出内容。
可选值:
visible,默认值,不会对溢出的内容做任何改变。
hidden,溢出的内容会被修剪,不会显示。
scroll,会为父元素添加滚动条,通过拖动滚动条查看。该属性无论内容是否溢出都会添加水平和垂直方向的滚动条。
auto,会根据需求自动添加滚动条,需要水平就添加水平,需要垂直就添加垂直。
文档流处在网页的最底层,它表示的是一个页面中的位置,我们所创建的元素都默认处在文档流中。
元素在文档流中的特点
块元素
1.块元素在文档流中会独占一行,块元素会自上向下排列。
2.块元素在文档流中默认宽度是父元素的100%。
3.块元素在文档流中高度默认被内容区撑开。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
<div style="width:100px;height:100px;background-color:yellow;">div>
<div style="width:100px;height:100px;background-color:red;">div>
body>
html>
内联元素
1.内联元素在文档流中只占自身的大小,会默认从左向右排列。如果一行中不足以容纳所有的内联元素,则自动换到下一行,继续自左向右排列。
2.在文档流中,内联元素的宽度和高度默认都被内容撑开。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
style>
head>
<body>
我是一个spanspan>
我是一个spanspan>
我是一个spanspan>
我是一个spanspan>
我是一个spanspan>
body>
html>
在文档流中,块元素默认是垂直排列。
如果希望块元素在页面中水平排列,可以使得块元素脱离文档流。
使用float来使元素浮动,从而脱离文档流。
可选值
none,默认值,元素默认在文档流中排列
left,元素会立即脱离文档流,向页面的左侧浮动
right,元素会立即脱离文档流,向页面的右侧浮动
当为一个元素设置浮动以后(float属性是一个非none的值),元素会立即脱离文档流,元素脱离文档流以后会向上移动。
元素浮动以后,会尽量向页面的左上或右上漂浮,直到遇到父元素的边框或者其他浮动元素。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:200px;
height:200px;
background-color:red;
float:left;
}
.box2{
width:200px;
height:200px;
background-color:yellow;
float:left;
}
.box3{
width:200px;
height:200px;
background-color:blue;
float:left;
}
style>
head>
<body>
<div class="box1">div>
<div class="box2">div>
<div class="box3">div>
body>
html>
效果:
如果浮动元素上边是一个没有浮动的块元素,则浮动元素不会超过块元素。浮动的元素不会超过他上边的兄弟元素,最多一边对齐。
浮动的元素不会盖住文字,文字会自动环绕在浮动元素的周围,可以通过设置浮动文字环绕图片的效果。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
width:200px;
height:200px;
background-color:red;
float:left;
}
.p1{
background-color:yellow;
}
*{
margin:0;
padding:0;
}
style>
head>
<body>
<div class="box1">div>
<p class="p1">哔哩哔哩(bilibili)现为国内领先的年轻人文化社区,该网站于2009年6月26日创建,被粉丝们亲切的称为“B站”。
B站的特色是悬浮于视频上方的实时评论功能,爱好者称其为“弹幕”,这种独特的视频体验让基于互联网的弹幕能够超越时空限制,构建出一种奇妙的共时性的关系,形成一种虚拟的部落式观影氛围,让B站成为极具互动分享和二次创造的文化社区。B站目前也是众多网络热门词汇的发源地之一。p>
body>
html>
效果:
在文档流中,子元素的宽度默认占父元素全部。
当元素设置浮动以后,会完全脱离文档流。块元素脱离文档流以后,高度和宽度都被内容撑开。
内联元素脱离文档流以后会变成块元素,一旦脱离文档流都是块元素。
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
*{
margin:0;
padding:0;
}
.header{
width:1000px;
height:150px;
background-color:yellowgreen;
/* 居中 */
margin:0 auto;
}
.content{
width:1000px;
height:400px;
background-color:orange;
/* 居中 */
margin:10px auto;
}
.left{
width:200px;
height:100%;
background-color:skyblue;
float:left;
}
.center{
width:580px;
height:100%;
background-color:yellow;
float:left;
margin:0 10px;
}
.right{
width:200px;
height:100%;
background-color:pink;
float:left;
}
.footer{
width:1000px;
height:150px;
background-color:red;
margin:0 auto;
}
style>
head>
<body>
<div class="header">div>
<div class="content">
<div class="left">div>
<div class="center">div>
<div class="right">div>
div>
<div class="footer">div>
body>
html>
在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
border: 10px red solid;
}
.box2{
width:100px;
height:100px;
background-color:blue;
}
style>
head>
<body>
<div class="box1">
<div class="box2">div>
div>
body>
html>
结果:
在上面的基础上,为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。
在上面的例子中加入浮动:
.box2{
width:100px;
height:100px;
background-color:blue;
float: left;
}
高度塌陷效果:
由于父元素的高度塌陷了,则父元素下面的所有元素都会向上移动,这样将会导致布局混乱。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
border: 10px red solid;
}
.box2{
width:100px;
height:100px;
background-color:blue;
float: left;
}
.box3{
height:100px;
background-color:yellow;
}
style>
head>
<body>
<div class="box1">
<div class="box2">div>
div>
<div class="box3">div>
body>
html>
效果:
所以在开发中一定要避免出现高度塌陷问题,我们可以将父元素的高度写死,以避免塌陷问题,但是一旦高度写死,父元素的高度将不能自动适应子元素的高度,所以这种方式不推荐使用。
解决高度塌陷:
根据W3C标准,在页面中元素都有一个隐含的属性叫做Block Formatting Context,简称BFC,该属性可以设置打开或者关闭,默认是关闭的。
当开启元素的BFC以后,元素将会有如下的特性:
1.父元素的垂直外边距不会和子元素重叠
2.开启BFC的元素不会被浮动元素所覆盖
3.开启BFC的元素可以包含浮动的子元素
如何开启元素的BFC:
1.设置元素浮动
-使用这种方式开启,虽然可以撑开父元素,但是会导致父元素的宽度丢失,而且使用这种方式也会导致下边的元素上移,不能解决问题。
2.设置元素绝对定位
3.设置元素为inline-block
-可以解决问题,但是会导致宽度丢失,不推荐使用这种方式。
4.将元素的overflow设置为一个非visible的值
推荐方式是:将overflow
设置为hidden
是副作用最小的开启BFC的方式。
例子:
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
.box1{
border: 10px red solid;
overflow: hidden;
}
.box2{
width:100px;
height:100px;
background-color:blue;
float: left;
}
.box3{
height:100px;
background-color:yellow;
}
style>
head>
<body>
<div class="box1">
<div class="box2">div>
div>
<div class="box3">div>
body>
html>
<html>
<head>
<meta charset="utf-8">
<title>这是一个网页title>
<style type="text/css">
*{
margin:0;
padding:0;
}
/* 设置 ul*/
.nav{
list-style:none;
/* 为ul设置背景色 */
background-color:skyblue;
/* 设置一个高度 */
width:1000px;
/* 设置元素居中 */
margin:0 auto;
/*解决高度塌陷问题 */
overflow:hidden;
}
/* 设置li */
.nav li{
/* 设置li向左浮动 */
float: left;
}
.nav a{
display:block;
width:250px;
/* 设置文字居中 */
text-align: center;
/* 设置上下内边距 */
padding:5px 0;
/* 去除下划线 */
text-decoration: none;
/* 设置字体颜色 */
color:white;
/* 设置加粗 */
font-weight: bold;
}
.nav a:hover{
background-color:#c00;
}
style>
head>
<body>
<ul class='nav'>
<li><a href="http://www.baidu.com">首页a>li>
<li><a href="#">新闻a>li>
<li><a href="#">练习a>li>
<li><a href="#">关于a>li>
ul>
body>
html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
/*清除默认样式*/
*{
margin:0;
padding:0;
}
/*统一页面中的字体*/
body{
font:12px/1 宋体;
}
/*设置outer的大小*/
.outer{
width:300px;
/*height:473px;*/
/*background-color:#bfa;*/
margin:50px auto;
}
/*设置title的边框*/
.title{
/*设置上边框*/
border-top:2px #019e8b solid;
/*设置高度*/
height:36px;
background-color:#f5f5f5;
/*设置title的行高*/
line-height: 36px;
/*设置title的内边距*/
padding:0px 22px 0px 16px;
}
/*设置title中的超链接*/
.title a{
float: right;
/*设置字体颜色*/
color:red;
}
.title h3{
font:16px/36px "微软雅黑";
}
/*设置内容*/
.content{
border:1px solid #deddd9;
/*设置内边距*/
padding:0px 28px 0px 20px;
}
/*设置内容中的超链接*/
.content a{
color:black;
/*去除超链接的下划线*/
text-decoration: none;
font-size:12px;
}
.content a:hover{
color:red;
/*为超链接添加下划线*/
text-decoration: underline;
}
/*设置内容中的标题*/
.content h3{
margin-top:14px;
margin-bottom:16px;
}
/*
* 设置右侧的a的样式
*/
.content .right{
float: right;
}
/*设置ul的样式*/
.content ul{
/*去除项目符号*/
list-style:none;
/*为ul设置一个下边框*/
border-bottom:1px dashed #deddd9;
}
/*取消最后一个ul的边框*/
.content .no-border{
border: none;
}
/*设置内容中的红色字体*/
.content .red{
color:red;
font-weight: bold;
}
/*设置内容中li*/
.content li{
margin-bottom: 15px;
}
style>
head>
<body>
<div class="outer">
<div class="title">
<a href="">16年面授开班计划a>
<h3>近期开班h3>
div>
<div class="content">
<h3><a href="#">JavaEE+云计算-全程就业班a>h3>
<ul>
<li>
<a href="#">开班时间:<span class="red">2016-04-27span>a>
<a class="right" href="#"><span class="red">预约报名span>a>
li>
<li>
<a href="#">开班时间:<span class="red">2016-04-27span>a>
<a class="right" href="#"><span class="red">无座,名额爆满span>a>
li>
<li>
<a href="#">开班时间:2016-03-15a>
<a class="right" href="#">开班盛况a>
li>
<li>
<a href="#">开班时间:2016-02-25a>
<a class="right" href="#">开班盛况a>
li>
<li>
<a href="#">开班时间:2015-12-26a>
<a class="right" href="#">开班盛况a>
li>
ul>
<h3><a href="#">Android+人工智能-全程就业班a>h3>
<ul>
<li>
<a href="#">开班时间:<span class="red">2016-04-10span>a>
<a class="right" href="#"><span class="red">预约报名span>a>
li>
<li>
<a href="#">开班时间:2016-03-17a>
<a class="right" href="#">开班盛况a>
li>
<li>
<a href="#">开班时间:2016-02-20a>
<a class="right" href="#">开班盛况a>
li>
<li>
<a href="#">开班时间:2015-12-23a>
<a class="right" href="#">开班盛况a>
li>
ul>
<h3><a href="#">前端+HTML5-全程就业班a>h3>
<ul class="no-border">
<li>
<a href="#">开班时间:<span class="red">2016-05-10span>a>
<a class="right" href="#"><span class="red">预约报名span>a>
li>
<li>
<a href="#">开班时间:2016-03-16a>
<a class="right" href="#">开班盛况a>
li>
ul>
div>
div>
body>
html>
效果:
我们发现并没有达到目的,如果加上下面的代码,则能够实现:
.box3{
width:200px;
height: 200px;
background-color:yellowgreen;
margin-top:-200px;
}
这种方法比较麻烦,其实我们可以采用定位来实现。
定位:指的就是将指定的元素摆放到页面的任意位置。通过定位可以任意的摆放元素。
通过position
属性来设置元素的定位。
可选值:
static:默认值 元素没有开启定位
relative:开启元素的相对定位
absolute:开启元素的绝对定位
fixed:开启元素的固定定位(也是绝对定位的一种)
当开启了元素的相对定位以后,而不设置偏移量时,元素不会发生任何变化。
当开启元素定位时,可以通过left right top bottom四个属性来设置元素的偏移量。
left 元素相当于其定位位置的左侧偏移量
right 元素相对于其定位位置的右侧偏移量
top 元素相对于其定位位置的上边的偏移量
bottom 元素相对于其定位位置下边的偏移量
相对定位是相对于元素在文档流中原来位置进行定位。
采用相对定位实现上述效果:
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:200px;
height: 200px;
background-color:red;
}
.box2{
width:200px;
height: 200px;
background-color:yellow;
position: relative;
left:200px;
top:200px;
}
.box3{
width:200px;
height: 200px;
background-color:yellowgreen;
}
style>
head>
<body>
<div class="box1">div>
<div class="box2">div>
<div class="box3">div>
body>
html>
效果:
相对定位的元素不会脱离文档流,因此上述中有空白。
相对定位会使元素提升一个层级。
相对定位不会改变元素的性质,块还是块,内联还是内联。
当position
属性设置为absolute时,则开启元素的绝对定位。
绝对定位的特点:
1.开启绝对定位,会使元素脱离文档流
2.开启绝对定位,如果不设置偏移量,则元素的位置不会发生变化
3.绝对定位是相对于离他最近的开启了定位的祖先元素进行定位的。如果所有的祖先元素都没有开启定位,则会相对于浏览器窗口进行定位。
4.绝对定位会使元素提升一个层级
5.绝对定位会改变元素的性质
内联元素变成块元素
块元素的宽度和高度都被内容撑开
当元素的position
属性设置fixed时,则开启了元素的固定定位。固定定位也是一种绝对定位。它的大部分特点都和绝对定位一样。
不同的是:固定定位永远都会相对于浏览器窗口进行定位。固定定位会固定在浏览器窗口某个位置,不会随滚动条滚动。
如果定位层级是一样的,则下边的元素会盖住上边的。
例子:
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:200px;
height: 200px;
background-color:red;
position: relative;
}
.box2{
width:200px;
height: 200px;
background-color:yellow;
/*开启绝对定位*/
position: absolute;
top:100px;
left:100px;
}
.box3{
width:200px;
height: 200px;
background-color:yellowgreen;
position: relative;
}
style>
head>
<body>
<div class="box1">div>
<div class="box2">div>
<div class="box3">div>
body>
html>
通过z-index
属性可以用来设置元素的层级,可以为z-index
指定一个正整数作为值,该值将会作为当前元素的层级,层级越高,越优先显示。对于没有开启定位的元素不能使用z-index
。
例子:
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:200px;
height: 200px;
background-color:red;
position: relative;
z-index: 5;
}
.box2{
width:200px;
height: 200px;
background-color:yellow;
/*开启绝对定位*/
position: absolute;
top:100px;
left:100px;
z-index: 99;
}
.box3{
width:200px;
height: 200px;
background-color:yellowgreen;
position: relative;
z-index: 10;
}
style>
head>
<body>
<div class="box1">div>
<div class="box2">div>
<div class="box3">div>
body>
html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:200px;
height: 200px;
background-color:red;
position: relative;
z-index: 5;
}
.box2{
width:200px;
height: 200px;
background-color:yellow;
/*开启绝对定位*/
position: absolute;
top:100px;
left:100px;
z-index: 99;
}
.box3{
width:200px;
height: 200px;
background-color:yellowgreen;
position: relative;
z-index: 10;
}
.box4{
width:200px;
height: 200px;
background-color:orange;
position: relative;
z-index: 20;
}
.box5{
width:100px;
height: 100px;
background-color:skyblue;
position: absolute;
z-index: 10;
}
style>
head>
<body>
<div class="box1">div>
<div class="box2">div>
<div class="box3">div>
<div class="box4">
<div class="box5">div>
div>
body>
html>
设置元素的透明背景,需要一个0-1之间的值。
0 表示完全透明
1 表示完全不透明
0.5 表示半透明
例子:
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:200px;
height: 200px;
background-color:red;
position: relative;
z-index: 5;
}
.box2{
width:200px;
height: 200px;
background-color:yellow;
/*开启绝对定位*/
position: absolute;
top:100px;
left:100px;
z-index: 25;
}
.box3{
width:200px;
height: 200px;
background-color:yellowgreen;
position: absolute;
top:200px;
left:200px;
z-index: 30;
opacity: 0.5;
}
.box4{
width:200px;
height: 200px;
background-color:orange;
position: relative;
z-index: 20;
}
.box5{
width:100px;
height: 100px;
background-color:skyblue;
position: absolute;
z-index: 10;
}
style>
head>
<body>
<div class="box1">div>
<div class="box2">div>
<div class="box3">div>
<div class="box4">
<div class="box5">div>
div>
body>
html>
使用background-image
来设置背景图片。
语法:background-image:url(相对路径)
如果背景图片大于元素,默认会显示图片的左上角.
如果背景图片和元素一样大,则会将背景图片全部显示
显示全部的例子:
效果:
如果背景图片小于元素大小,则会默认将背景图片平铺以充满元素
可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色。一般情况下,设置背景图片时都会同时指定一个背景颜色。
background-repeat
用于设置背景图片的重复方式
可选值:
repeat,默认值,背景图片会双方向重复(平铺)
no-repeat,背景图片不会重复,有多大就显示多大
repeat-x,背景图片沿水平方向重复
repeat-y,背景图片沿垂直方向重复
背景图片不会重复的例子:
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:990px;
height: 32px;
background-color:lightskyblue;
margin:50PX auto;
/*设置为背景图片*/
background-image:url(img/3.gif);
background-repeat: repeat-x;
}
style>
head>
<body>
<div class="box1">div>
body>
html>
效果:
背景图片默认是贴着元素的左上角显示,通过background-position
可以调整背景图片在元素中的位置。
可选值:
该属性可以使用top right left bottom center中的两个值来指定一个背景图片的位置。
top left 左上
bottom right 右下
如果只给出一个值,则第二个默认值是center。
例子:让图片在元素正中间
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:468px;
height: 481px;
background-color:lightskyblue;
margin:0PX auto;
/*设置为背景图片*/
background-image:url(img/4.png);
background-repeat:no-repeat;
background-position:center center;
}
style>
head>
<body>
<div class="box1">div>
body>
html>
效果:
位置设置:
也可以直接指定两个偏移量,第一个是水平偏移量:
如果指定的是一个正值,则图片会向右移动指定的像素;
如果指定的是一个负值,则图片会向左移动指定的像素;
第二个是垂直偏移量:
如果指定的是一个正值,则图片向下移动指定的像素;
如果指定的是一个负值,则图片向上移动指定的像素。
设置格式:
background-position:200px 180px;
代码意义:将背景图片向右边移动200px,向下移动180px。
background-attachment
用来设置背景图片是否随页面一起滚动。
可选值:
scroll,默认值,背景图片随窗口滚动
fixed,背景图片会固定在某一位置,不随页面滚动,背景图片的定位永远相对于浏览器的窗口。不随窗口滚动的图片,我们一般都是设置给body,而不设置给其他元素。
通过background
属性可以同时设置所有背景相关的样式,该样式没有顺序要求,也没有数量的要求。
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
body{
background:#bfa url(img/4.png) center center no-repeat fixed;
}
style>
head>
<body>
body>
html>
表格在日常生活中使用的非常多,比如Excel就是专门用来创建表格的工具,表格就是用来表示一些格式化的数据的,比如:课程表、银行对账单。在网页中也可以来创建出不同的表格。
在HTML
中,使用Table
标签来创建一个表格。
用table标签创建一个表格,在table标签中,使用tr来表示表格中的一行,有几行就有几个tr,在tr中使用td来创建一个单元格,有几个单元格就有几个td。
例子:
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
style>
head>
<body>
<table border="1" width="40%">
<tr>
<td>A1td>
<td>A1td>
<td>A1td>
<td>A1td>
<td>A1td>
tr>
<tr>
<td>B1td>
<td>B1td>
<td>B1td>
<td>B1td>
<td>B1td>
tr>
<tr>
<td>C1td>
<td>C1td>
<td>C1td>
<td>C1td>
<td>C1td>
tr>
<tr>
<td>D1td>
<td>D1td>
<td>D1td>
<td>D1td>
<td>D1td>
tr>
table>
body>
html>
制作一个表格,隔行变色,且移动鼠标后变色。
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
/*
* 设置表格的宽度
*/
table{
width:300px;
/*居中*/
margin: 0 auto;
/*
* table和td边框之间默认有一个距离
* 通过border-spacing属性可以设置这个距离
*/
/*border-spacing:0px;*/
/*border-collapse可以用来设置表格的边框合并
* 如果设置了边框合并,则border-spacing自动失效
*/
border-collapse:collapse;
}
/*设置边框*/
td,th{
border:1px solid black;
}
/*设置隔行变色*/
tr:nth-child(odd){
background-color:yellowgreen;
}
/*鼠标移入后变色*/
tr:hover{
background-color:yellow;
}
style>
head>
<body>
<table>
<tr>
<th>学号th>
<th>姓名th>
<th>性别th>
<th>住址th>
tr>
<tr>
<td>1td>
<td>孙悟空td>
<td>男td>
<td>花果山td>
tr>
<tr>
<td>2td>
<td>猪八戒td>
<td>男td>
<td>高老庄td>
tr>
<tr>
<td>3td>
<td>沙和尚td>
<td>男td>
<td>流沙河td>
tr>
<tr>
<td>4td>
<td>唐僧td>
<td>男td>
<td>女儿国td>
tr>
table>
body>
html>
有一些情况下,表格是非常长的,这时就需要将表格分为三个部分,表头、表格的主体、表格底部。
在HTML中为我们提供了三个标签:
thead 表头,其中的内容永远会显示在表格的头部
tbody 表格主体,其中的内容永远会显示在表格的中间
tfoot 表格底部,其中的内容永远会显示在表格的底部
这三个标签的作用,就来区分表格的不同的部分,他们都是table的子标签,都需要直接写到table中,tr需要写在这些标签当中。thead中的内容,永远会显示在表格的头部。
如果表格中没有写tbody,浏览器会自动在表格中添加tbody,并且将所有的tr都放到tbody,所以注意tr并不是table的子元素,而是tbody的子元素,通过table > tr 无法选中行,需要通过tbody > tr。
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:300px;
height: 300px;
background-color:#bfa;
}
.box2{
width:200px;
height:200px;
background-color:yellow;
margin-top:100px;
}
style>
head>
<body>
<div class="box1">
<div class="box2">div>
div>
body>
html>
效果:
子元素和父元素相邻的垂直外边距会发生重叠,子元素的外边距会传递给父元素。
使用table
标签可以隔离父子元素的外边距,阻止外边距的重叠。
.box1:before{
content:"";
display:table;
}
效果:
既可以解决高度塌陷,又可以确保父元素和子元素的垂直外边距不会重叠。
.clearfix:before,
.clearfix:after{
content:"";
display:table;
clear:both;
}
例子:
上图存在高度塌陷问题和父元素和子元素的垂直外边距重叠,该如何解决。
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
.box1{
width:300px;
height: 300px;
background-color:#bfa;
}
.box2{
width:200px;
height:200px;
background-color:yellow;
margin-top:100px;
}
.box3{
border:10px red solid;
}
.box4{
width:100px;
height: 100px;
background-color:yellowgreen;
float:left;
}
.clearfix:before,
.clearfix:after{
content:"";
display:table;
clear:both;
}
style>
head>
<body>
<div class="box3 clearfix" >
<div class="box4">div>
div>
<div class="box1 clearfix">
<div class="box2">div>
div>
body>
html>
表单的作用就是用来将用户信息提交给服务器的,比如:百度的搜索框 注册 登录这些操作都需要填写表单。
使用form标签创建一个表单。
form标签中必须指定一个action属性,该属性指向的是一个服务器的地址,当我们提交表单时将会提交到action属性对应的地址。
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
style>
head>
<body>
<form action="target.html">
用户名<input type="text" name="username"/><br /><br />
密码<input type="password" name="password"/><br /><br />
<input type="submit" />
form>
body>
html>
单选按钮
1.使用input来创建一个单选按钮,它的type属性使用radio
2.单选按钮通过name属性进行分组,name属性相同是一组按钮
3.像这种需要用户选择但是不需要用户直接填写内容的表单项还必须指定一个value属性,这样被选中的表单项的value属性值将会最终提交给服务器。
性别<input type="radio" name="gender" value="male"/>男
<input type="radio" name="gender" value="female"/>女
<br /><br />
效果:
多选框:
使用input创建一个多选框,它的type属性使用checkbox
爱好足球
篮球
羽毛球
乒乓球
效果:
下拉列表:
使用select来创建一个下拉列表,下拉列表的name属性需要指定给select,而value属性需要指定给option。
例子:
你喜欢的明星
效果:
可以通过在option中添加selected="selected"来将选项设置为默认选中。
例子:默认选中赵本山
你喜欢的明星
效果:
当为select添加一个multiple=“multiple”,则下拉列表变为一个多选的下拉列表。
你喜欢的明星
效果:
在select中可以使用optgroup对选项进行分组,同一个optgroup中的选项是一组。然后可以通过label属性来指定分组的名字。
你喜欢的明星
创建多行文本域
使用texttarea创建一个文本域。
自我介绍
按钮:
使用input type=button,可以用来创建一个单纯的按钮,这个按钮没有任何功能,只能被点击。
除了使用input,也可以使用button标签来创建按钮。
框架集和内联框架的作用类似,都是用于在一个页面中引入其他的外部的页面。框架集可以同时引入多个页面,而内联框架只能引入一个,在h5标准中,推荐使用框架集,而不使用内联框架。
使用frameset来创建一个框架集,注意:frameset不能和body出现在同一个页面中,所以要使用框架集,页面中就不可以使用body标签。
属性:
rows,指定框架集中的所有的框架,一行一行的排列
cols,指定框架集中的所有页面,一列一列的排列
这两个属性frameset必须选择一个,并且需要在属性中指定每一部分所占的大小。
例子:
<html>
<head>
<meta charset="UTF-8">
<title>title>
head>
<frameset cols="30%,*,30%">
<frame src="01.表格.html"/>
<frame src="02.表格.html"/>
<frame src="03.表格.html"/>
frameset>
html>
效果:
frameset和iframe一样,它里边的内容都不会被搜索引擎所检索,所以如果搜索引擎检索到的页面是一个框架页面的话,它是不能去判断里边的内容的,使用框架集则意味着页面中不能有自己的内容,只能引入其他的页面,而我们每单独加载一个页面,浏览器都需要重新发送一次请求,引入几个页面就需要发送几次请求。用户体验比较差。如果非得使用,则建议使用frameset。