回顾复习
什么是标签:标签由<tagName>
开始,到</tagName>
结束。
xml的标签基本都是自定义的
html的标签,基本都是规定好的。(可以使用自定义标签)浏览器对于规定好的标签,有特殊的解释方式(渲染方式)
<!doctype html>
告诉浏览器,以下的文档应该以HTML 5的方式来解析
<html></html>
根标签
<head></head>
头标签,主要负责设置页面的一些信息
<title></title>
页面标题标签
<body></body>
主体标签,需要在页面中显示的内容,放在body标签中。
<h1>-<h6>
:标题标签
<p>
段落标签
<br />
,<hr />
<img />
,<a href=""></a>
<ul>,<li>,<ol>,<dl>,<dt>,<dd>
表单:<form action="提交的目标地址" method="get|post"></form>
输入框:<input type="输入框的类型" name="输入框的名字" value="输入框的默认值" />
表格:<table></table>
块元素和内联元素:
块元素:div,p之类的能够自动换行的
内联元素:span,a之类的能够写在文字中间的,不会自动换行的。
css
为什么会有css
早期的web页面只有一些简单的段落标签,列表标签,标题标签等,然而,在当前的情况下,并不需要这么多的功能。随着社会的进步,网络的发展,人们对于互联网的要求也越来越高,就迫切需要HTML增加新的元素,完成特定的功能。
就出现了<font>
,<i>
,<s>
,<b>
等标签,导致HTML页面非常冗余,并且功能划分不明确
<!--早期的HTML页面对于文字的设置--><font size="26" color="red"><i><b>李白</b></i></font>
后来开发者觉得HTML应该只负责负面的内容,有其他的东西负责页面内容的样式渲染,w3c组织就开始发布了css
css的地位
现在整体的互联网前端页面共有三层
HTML 超文本标记语言 从语义的角度描述网页的结构
CSS 层叠样式表 从审美的角度负责页面的样式
JS JavaScript 从交互的角度描述页面的行为
CSS 又叫层叠样式表,现在最新的css版本是css3,我们首先学习的是css2.1,css3是在css2.1的基础上增加了很多的内容而已。
只用CSS2.1能不能够完成页面布局工作呢?可以,完全足够。css3对于css2.1来说,仅仅是可以更快的达到所想要完成的目标。
css的书写位置
内部样式表
写在<style></style>
标签中,style标签可以写在HTML页面的任何位置,因为HTML页面的加载顺序是逐行加载,如果要使用到已写的样式,那些使用的标签必须在该style标签的下面。
内部样式表推荐写在head中
<style>/* 内部样式表 */h1{color:red;}</style> <h1>李白乘舟将欲行</h1>
外部样式表
创建一个单独的以css为后缀名的文件,里面按照css的书写规则,编写css样式。
在HTML页面中,通过<link rel="stylesheet" href="demo01.css">
标签关联该css样式文件
/* 外部样式表 */h1{color:red;}
<head><meta charset="UTF-8"><title>Document</title><link rel="stylesheet" href="demo01.css"></head><body><h1>李白乘舟将欲行</h1></body>
link标签的书写位置遵循style标签的原则,
行内样式
在标签中的style属性里填写css属性
<h2 style="color:blue;">孤帆远隐碧空净</h2>
行内样式的权重最高,内部样式和外部样式的权重取决于link标签和style标签的书写位置,谁在下面,谁的权重高
ps:css整体的权重采取就近原则
css的基础选择器
标签选择器
所有的标签名都是标签选择器的名字,使用标签选择器后,整个页面的所有该标签都应用上所写的样式
标签名{}
ID选择器
在标签上增加ID属性,id选择器的名字为ID属性的值,在值前面添加#表示为ID选择器。
原则上每一个页面的ID名不能重复。
实际上在CSS中,相同名称的ID名都用应用统一的样式。
<style>#box1{color:red;}</style><h1 id="box1">孙悟空</h1>
class选择器
在标签上增加class属性,class选择器的名字为class属性的值,在值前面添加.表示为class选择器
<style>.box2{color:pink;}</style><h2 class="box2">猪悟净</h2>
在css的设置中,ID和class本质上没有区别,ID不能重复的原则不是因为css,而是因为js的需要,js要求每一个页面的id值不能重复
getElementById(“id名”)方法只能获取到一个对象,所以要求页面上的id值具有唯一性
三种基本选择器,到底该怎么使用?
在页面布局的时候,通常来说使用class选择器,尽量避免使用id选择器,在项目比较大的时候,class和Element选择器配合使用。
什么时候给标签增加ID值?只有在JS需要的时候或使用label的时候,才给标签增加ID值
通配符选择器
通配符选择器使用"*"来表示,可以指代所有的元素
*{padding:0;margin:0;}
高级选择器(复合选择器)
概念:两个或两个以上的基础选择器通过不同的方式连接在一起。
作用:缩小选择器的使用范围
交集选择器(即有…又有…)
特点:多个选择器同时使用,中间没有任何东西间隔。如果包含元素选择器,元素选择器必须是第一个
.box.class3{color:brown;font-size:24px;}
你的标签中记得有box这个class名,又得有class3这个class名,才能应用上这个样式
<style>#p1{color:red;}/* id选择器 */.c1{color:pink;}/* class选择器 */.c1#p1{color:blue;}/* 中间没有任何间隔,把两个或多个选择器写在一起的情况,叫做交集选择器 */p.c1#p1{color:green}/* 在交集选择器中,标签选择器只能放在第一个位置 */</style><p id="p1">飞流直下三千尺</p><p class="c1">疑是银河落九天</p><p>桃花潭水深千尺</p><p id="p1" class="c1">不及汪伦送我情</p>
并集选择器
特点:多个选择器,使用逗号分隔开,所有选择器使用同一个样式
多个选择器使用同一样式时,节省代码的写法
通常不会这么写,大多数是在reset.css的时候需要这么去写。在框架编写的时候,经常会用到这种写法
如:bootstrap,YUI,EASYui
<style>/* .c1{color:red;}.c2{color:red;}.c3{color:red;}.c4{color:red;} *//* 多个选择器应用同一种样式的时候,可以使用并集选择器,将多个选择器使用逗号分隔 */.c1,.c2,.c3,.c4{color:green;}</style><p class="c1">鹅鹅鹅</p><p class="c2">曲项向天歌</p><p class="c3">白毛浮绿水</p><p class="c4">红掌拨清波</p>
后代选择器
特点:涉及到父子标签时,父元素的选择器在前,子元素的选择器在后,中间以空格分开。
<style>.general1 .gen03{color:red;}/* 指代某一个标签后面的gen03标签 */.general2 .gen05{color:pink;}/* 后代选择器,目的是精确选择到某一个标签 */</style><div class="general1"><ul><li class="gen01">赵云</li><li class="gen02">孙尚香</li><li class="gen03">典韦</li><li class="gen04">吕布</li><li class="gen05">孙坚</li><li class="gen06">黄汉升</li><li class="gen07">太史子义</li><li class="gen08">周公瑾</li></ul></div><div class="general2"><ul><li class="gen01">白起</li><li class="gen02">韩信</li><li class="gen03">廉颇</li><li class="gen04">项羽</li><li class="gen05">王伯当</li><li class="gen06">张清</li><li class="gen07">李逵</li><li class="gen08">林冲</li></ul></div>
中间不管隔多少层,中间是否有其他元素,都能被渲染上
<div><div><div><div><div><div><div><div><div><div><div><div><p class="class1">床前明月光</p><p class="class2">疑是地上霜</p><p class="class3">举头望明月</p><p class="class4">低头思故乡</p></div></div></div></div></div></div></div></div></div></div></div></div>
练习题:根据以下CSS样式写出对应的HTML结构
/*1*/div.div1 ul.box li,div.div1 p{color:red;}/*2*/div.box p.p1,div.box div.div1 p,p{color:pink;}
基本选择器的优先级
!important > id选择器 > class选择器 > Element选择器
权重最高的选择器为!important
复合选择器的优先级
复合选择器权重的计算方式:每一种选择器都有一个数值来计算
标签选择器的权重计算数值为 0,0,1
class选择器的权重计算数值为 0,1,0
id选择器的权重计算数值为 1,0,0
<style>#i1{color:darkblue}/* 1,0,0 */.c1{color:yellow;}/* 0,1,0 */li{color:red;}/* 权重是:0,0,1 */</style>
行内样式不参与权重计算,因为行内样式的权重最好,唯有!important;比行内的权重高
CSS的继承性和层叠性
继承性:后代元素可以继承父元素的某一些样式
哪些属性能够被继承?
color,text-开头的,line-开头的,font-开头的
关于盒子的、定位的、布局的属性都不能被继承
层叠性:就是CSS处理样式冲突的能力。具体标签使用哪一个样式,需要进行权重计算,才能得到。
简单来说,层叠性就是覆盖,权重低的样式被权重高的样式所覆盖。
css常用属性
四种颜色的取值方式
color:darkgreen;/* 使用英文单词取值 */color:#db855a;/* 按照16进制取值方法取值,前两位代表红色,中间两位代表绿色,最后面两位代表蓝色 ,最大取值为ff ff=255 */color:rgb(45,61,71)/* 使用rgb取值,三个数字,每一个代表一个颜色,最大值255 */color:rgba(255,0,0,.5); /* 最后一个数值为透明度 */
background属性可以单独只写颜色,也可以单独只写背景图片
盒子模型
每一个div,或者说每一个标签都是一个盒子
盒子模型包含5个属性:width(宽),height(高),border(边框),padding(内边距),mragin(外边距)
基础的盒子模型主要研究的是盒子的宽高计算
设置盒子内容(content)的宽度
<style>.div1{/* css中每一行结尾都必须有分号 */width:600px;height:400px;} </style><div class="div1">一个div就是一个盒子</div>
将div设置成600px
高,400px宽,表示div内容(content)的宽高为600×400
设置盒子边框(border)的宽度
设置盒子的边框
盒子包含border-width
,border-style
,border-color
三个属性
单独写border-width或border-color,是不会有边框的,必须写border-style才会显示边框。
如果只写border-style
,border-width和border-color将会取默认值,3像素和black
<style>.div1{width:300px;height:200px;border-width:5px;/* 边框线的宽度 */border-style: solid;/* 边框的线型 */border-color: blue;} </style><div class="div1">一个div就是一个盒子</div>
盒子包含border-top
,border-right
,border-bottom
,border-left
四个方向
只需要设置border-style即可显示边框,默认color为黑色,默认width为3像素
<style>.div1{width:300px;height:200px;/* 每一个方向都可以给不同的颜色,宽度,样式 */border-top-style: solid;border-left-style: dashed;border-right-style: double;border-bottom-style: dotted;} </style><div class="div1">一个div就是一个盒子</div>
border合写属性:border:1px solid black;
<style>.div1{width:300px;height:200px;/* 合写属性 *//* border:7px double pink; */border-top: 7px solid pink;border-right: 11px double pink;border-bottom: 5px dashed pink;border-left: 9px dotted pink;} </style><div class="div1">一个div就是一个盒子</div>
快速简单写法 border:solid;
padding
盒子的内边距:边框到内容的距离
如果设置了内边距,盒子的实际宽高将被改变
盒子的距离设定不能有负数
margin
用于设置盒子边框到另一个盒子边框的距离
如果在标准文档流中上面的盒子设置margin-bottom:20px;下面盒子设置margin-top:20px;两个盒子上下距离20像素
如果浮动之后左边盒子设置margin-right:20px;右边盒子margin-left:20px;两个盒子左右距离40px
margin的设置不会对盒子本身的大小有改变