目录
11.3 如果想要设置的宽度直接就是元素的实际宽度,通过box-sizing 属性
12.3 Display(显示) 与 Visibility(可见性)
1、CSS概念
层叠样式表(英文全称:Cascading Style Sheets)
*层叠:多个样式可以作用在同一个html的元素上,同时生效
是一种用来表现HTML或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
- 样式定义如何显示 HTML 元素
- 样式通常存储在样式表中
- 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题
- 外部样式表可以极大提高工作效率
- 外部样式表通常存储在 CSS 文件中
- 多个样式定义可层叠为一个
2、CSS的优势
1.
功能强大
2.
将内容展示和样式控制分离
- 降低耦合度解耦
- 让分工协作更容易
- 提高开发效率
3、CSS的使用:CSS与html综合使用
根据定义
CSS
的位置不同,分为行内样式、内部样式和外部样式。
3.1 行内样式(内联样式)
直接在标签中编写样式,通过使用标签内部的
style
属性,
一般在测试的时候使用居多:
语法:
<html 标签 style = " 样式 1 :值 1; 样式 2 :值 2;.... 样式 N :值 N;" > hello my css </html 标签 >
案例:
<div
style
=
"color: red;"
>
hello my css
</div>
弊端:只能对当前的标签生效,没有做到内容和样式相分离,耦合度太高。
3.2 内部样式
定义在
head
标签内,通过
style
标签,该标签内容就是
CSS
代码
<!DOCTYPE html><html><head><meta charset = "UTF-8" ><title> 内部样式 </title><style>div {color : red ;}</style></head><body><div> hello my css </div></body></html>
3.3 外部样式
1
、提前定义
css
资源文件
2
、在
head
标签内,定义
link
标签引入外部样式文件。
lina.css 文件,放在与 html 页面同级的 css 文件夹中:div {color: red;}html 页面中的引入<!DOCTYPE html><html><head><meta charset = "UTF-8" ><title> 外部样式 </title><link rel = "stylesheet" href = "css/lina.css" /></head><body><div> hello my css </div></body></html>
作用域的范围
:
外部样式表
>
内部样式表
>
行内样式表
优先级
:外部样式表
<
内部样式表
<
行内样式表
;
- 同样的样式作用在同一个标签身上:就近原则
- 不同样式作用在同一个标签身上:叠加生效
4、CSS语法
基本格式:由两个主要的部分构成:选择器,以及一条或多条声明
:
选择器 {属性 1: 值 1;属性 2: 值 2;...}选择器 : 筛选具有相似特征的元素属性和属性值之间用冒号分割,不同的属性之间用分号隔开。
5、CSS注释
注释是用来解释你的代码,并且可以随意编辑它,浏览器会忽略它。
CSS
注释以
/*
开始
,
以
*/
结束
/*这是CSS的注释*/
div {
color: red; /*文字颜色是红色*/
}
6、基本选择器
6.1 id选择器
选择具有相同
id
属性值的元素,建议
html
页面中的
id
值唯一
- id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
- HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 "#" 来定义。
PS
:
ID
属性不要以数字开头
,数字开头的
ID
在
Mozilla/Firefox
浏览器中不起作用。
虽然多个元素可以使用同一个
id
选择器控制样式,但是不推荐。如果需要同样的样式对多个标签生效,
使用
class
选择器。
6.2 class选择器
选择具有相同的
class
属性值的元素。
- class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,class可以在多个元素中使用。
- class 选择器在HTML中以class属性表示, 在 CSS 中,类选择器以一个点"."号显示。
PS
:类名的第一个字符不能使用数字!它无法在
Mozilla
或
Firefox
中起作用。
6.3 元素选择器/标签选择器
选择具有相同标签名称的元素。
定义选择器语法:标签名称
{}
;
PS
:标签名称必须是
html
提供好的标签。
使用标签选择器:自动使用在所有的同名的标签上
7、优先级
7.1 选择器的优先级
ID选择器 > 类选择器 > 标签选择器
当多个选择器作用在同一个标签上的时候,如果属性冲突,看优先级;如果不冲突,样式叠加生效
7.2 样式表的优先级
行内样式 > 内部样式 >外部样式
同样,三个样式表中都有内容作用在同一个
html
标签的时候,如果属性冲突,看优先级;如果不冲突, 样式叠加生效。
8、CSS常用样式
8.1 color:字体颜色
跟颜色相关的取值分
3
种:
- 颜色的单词 red blue...
- rgb(红,绿,蓝)三色的取值范围是0-255 rgb(255,0,0)
- rgba(红,绿,蓝,透明度),透明度取值:0-1 0 全透明 1-不透明 0.5 半透明rgba(255,0,0,0.4)
- #值1值2值3 :值的范式是00-FF 十六进制数字组成的 例如:#FF0000
8.2 width height
PS
:只有块状元素可以设置宽高,行级元素设置不生效。
取值方式有
2
种:
1
:数值
绝对数字
单位是像素
PX
2
:百分比:占据父元素的比例
8.3 背景样式
8.4 文本样式
8.5 列表样式
8.6 边框样式
10、HTML&CSS调试利器
以谷歌浏览器为例说明。
快捷键
F12
或者工具条中的开发者工具调出以下内容。
在
elements
中可以看到当前页面的所有标签,在
styles
中可以看到
html
元素对应的样式。
11、盒子模型
11.1 概念
所有
HTML
元素可以看作盒子,在
CSS
中,
"box model"
这一术语是用来设计和布局时使用。
CSS
盒模型本质上是一个盒子,封装周围的
HTML
元素,它包括:边距,边框,填充,和实际内容。
盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
盒子模型说明图:
- Margin(外边距) - 清除边框外的区域,外边距是透明的。
- Border(边框) - 围绕在内边距和内容外的边框。
- Padding(内边距) - 清除内容周围的区域,内边距是透明的。
- Content(内容) - 盒子的内容,显示文本和图像。
11.2 盒子的宽度和高度
元素的实际宽度和高度:
当我们计算一个元素实际在页面占有的总宽度计算公式是这样的:
总元素宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
元素的总高度最终计算公式是这样的:
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距
11.3 如果想要设置的宽度直接就是元素的实际宽度,通过box-sizing 属性
12、补充样式
12.1 float浮动
12.1.1 什么是浮动
CSS
的
Float
(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。
Float
(浮动),往往是用于图像,但它在布局时一样非常有用。
12.1.2 元素怎样浮动
- 元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。
- 一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
- 浮动元素之后的元素将围绕它。
- 浮动元素之前的元素将不会受到影响。
12.1.3 彼此相邻的浮动元素
如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻。
12.1.4 clear——清除浮动
元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用
clear
属性。
clear
属性指定元素两侧不能出现浮动元素。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>浮动</title>
<style>
div{
width: 400px;
height: 200px;
margin-bottom: 10px;
}
</style>
</head>
<body>
<!--没有浮动属性的元素都属于常规文档流:从上往下从左往右依次显示
浮动的元素都脱离了常规文档流;
为了好理解:大家可以认为浮动元素属于一层,非浮动元素属于一层
如果想要非浮动元素不受浮动元素的影响,需要使用clear属性
-->
<div style="background: rgba(255,0,0,0.5); float: left;">
div1-左浮动,脱离常规文档流,紧贴父元素或者上一个同方向浮动
</div>
<div style="background: lawngreen; width: 600px; height: 350px; ">
div2-未浮动,常规文档流,
<br/>
PS:此时div1在div2的上方显示,因为div1和div2是不同文档流中的元素,显示互不影响
如果不想让div2被浮动元素影响,需要添加clear属性。
添加clear: left;之后div2就会忽略div1浮动的影响,在div1层后面显示,不会重叠
了,大家可以自己试验一下
</div>
<div style="background: lightblue; float: right; width: 1800px;">
div3-右浮动,脱离常规文档流,紧贴父元素或者上一个同方向浮动
</div>
<div style="background: lightcoral; width: 600px; height: 350px; ">
div4-未浮动,常规文档流,
<br/>
PS:此时div3在div4的上方显示,因为div3和div4是不同文档流中的元素,显示互不影响
如果不想让div4被浮动元素影响,需要添加clear属性。
添加clear: right;之后div4就会忽略div3浮动的影响,在div3层后面显示,不会重叠
了,大家可以自己试验一下
clear属性有三个取值:left、right、both;分别是取出左浮动、有浮动和所有浮动元素
的影响
</div>
<div style="background: lavender;">
div5-未浮动,常规文档流,
</div>
</body>
</html>
12.2 overflow
控制内容溢出元素框时显示的方式。
overflflow
属性有以下值:
注意:overflflow 属性只工作于指定高度的块元素上。
注意
:
在
OS X Lion ( Mac
系统
)
系统上,滚动条默认是隐藏的,使用的时候才会显示
(
设置
"overflflow:scroll"
也是一样的
)。
12.3 Display(显示) 与 Visibility(可见性)
12.3.1 两者的区别
- display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏。
- 隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。但是请注意, 这两种方法会产生不同的结果。
- visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。
- display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了, 而且该元素原本占用的空间也会从页面布局中消失。
12.3.2 display 改变元素的类型
CSS
样式有以下三个:
- display:block -- 显示为块级元素
- display:inline -- 显示为内联元素
- display:inline-block -- 显示为内联块元素,表现为同行显示并可修改宽高内外边距等属性
13、复合选择器
由两个或多个基础选择器,通过不同方式组合而成的。
可以更准确更精细的选择目标元素标签。
13.1 全局选择器
语法:
* {}
一般去掉标签的一些默认效果的时候使用,或者整站通用效果时使用。但是不推荐,一般将 * 替换为常用标签的名称,并用逗号分隔,其实就是使用并集选择器。
13.2 并集选择器
并集选择器(
CSS
选择器分组)是各个选择器通过
,
连接而成的,通常用于集体声明。
语法:选择器
1
,选择器
2
,
......
选择器
N{}
意思是多个选择器都是通用的样式。任何形式的选择器(包括标签选择器、
class
类选择器
id
选择器
等),都可以作为并集选择器的一部分。
13.3 交集选择器
条件:交集选择器由两个选择器构成,找到的标签必须满足:既有标签一的特点,也有标签二的特点。
语法:
h3.class{ color:red; }
其中第一个为标签选择器,第二个为
class
选择器,两个选择器之间
不能有空格
,例如
div.list
。
交集选择器是并且的意思。 即
...
又
...
的意思
例如: table.bg 选择的是: 类名为 .bg 的 表格标签,但用的相对来说比较少。
13.4 后代选择器
概念:后代选择器又称为包含选择器。
作用:用来选择元素或元素组的
子孙后代。
其写法就是把外层标签写在前面,内层标签写在后面,中间用
空格
分隔,先写父亲爷爷,在写儿子孙子。
格式:父级 子级{属性:属性值;属性:属性值;}
语法:
.class h3{color:red;font-size:16px;}
当标签发生嵌套时,内层标签就成为外层标签的后代。
子孙后代都可以这么选择。 或者说,它能选择任何包含在内的标签。
13.5 子元素选择器
作用:子元素选择器只能选择作为某元素
子元素
(
亲儿子
)
的元素。
其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个
>
进行连接。
语法:
.class>h3{color:red;font-size:14px;}
比如: .demo > h3 {color: red;} 说明 h3 一定是 demo 亲儿子。 demo 元素包含着 h3 。
13.6 伪类选择器
伪类选择器:和类选择器相区别类选择器是一个点 比如
.demo {}
而我们的伪类 用
2
个点 就是 冒号 比如 :link{}
。
作用:用于向某些选择器添加特殊的效果。比如给链接添加特殊效果, 比如可以选择 第
1
个,第
n
个元素。
因为伪类选择器很多,比如链接伪类,结构伪类等等。我们这里先给大家讲解链接伪类选择器。
- a:link /* 未访问的链接 */
- a:visited /* 已访问的链接 */
- a:hover /* 鼠标移动到链接上 */
- a:active /* 选定的链接*/
<!DOCTYPE html>
<html>
<head>
<meta
charset
=
"UTF-8"
>
<title>
伪类选择器
</title>
<style>
/*伪类选择器*/
a
:
link
{
color
:
red
;
/*
默认颜色是红色
*/
}
a
:
visited
{
color
:
blue
;
/*
访问过的页面是蓝色
*/
}
a
:
hover
{
color
:
green
;
/*
鼠标悬浮是绿色
*/
font-size
:
28px
;
}
a
:
active
{
color
:
gold
;
/*
按下鼠标不放手是金色
*/
font-family
:
"
微软雅黑
"
;
}
</style>
</head>
<body>
<a
href
=
"03-
常用样式
.html"
target
=
"_blank"
>
常用样式
</a>
<a
href
=
"04-
盒子模型
1.html"
target
=
"_blank"
>
盒子模型
</a>
<a
href
=
"05-
综合练习
.html"
target
=
"_blank"
>
综合练习
</a>
</body>
</html>
注意
**
写的时候,他们的顺序尽量不要颠倒 按照
lvha(
四类的首字母
)
的顺序。否则可能引起错误。
因为叫链接伪类,所以都是利用交集选择器
a:link a:hover
因为
a
链接浏览器具有默认样式,所以我们实际工作中都需要给链接单独指定样式。
实际开发中,我们很少写全四个状态,一般我们写法如下:
a
{
/* a
是标签选择器 所有的链接
*/
font-weight
:
700
;
font-size
:
16px
;
color
:
gray
;
}
a
:
hover
{
/* :hover
是链接伪类选择器 鼠标经过
*/
color
:
red
;
/*
鼠标经过的时候,由原来的 灰色 变成了红色
*/
}