CSS发展历程
从HTML被发明开始, 样式就以各种形式存在 不同的浏览器结合他们各自的样式语言为用户提供页面效果的控制 最初的HTML只包含很少的显示属性
随着HTML的成长 为了满足页面设计者的要求 HTML 添加了很多显示功能 但是随着这些功能的增加 HTML变得越来越杂乱 而且HTML页面也会越来越臃肿 于是CSS便诞生了 CSS版本有 2.0 和 3.0 我们都会讲到 CSS3因为有兼容性问题 所以讲到CSS3样式的时候 我会特殊标明
CSS页面的美容师
css的出现 拯救了混乱的HTML 当然更加拯救了我们 Web 开发者 让我们的网页更加丰富多彩
CSS的最大的贡献就是 让HTML 从样式中解脱苦海 实现了HTML 专注去做结构呈现 而样式交给CSS后 你完全可以放心的早点洗洗睡了
而且 …CSS做的很出色 如果 JavaScript 是网页的魔法师 那么CSS就是页面的美容师 不信你看 :
ps : 你跟Angelababy只差了一个妆容的距离
来个更直观的认识吧 :
有人说 没有不漂亮的女友 只有不会打扮的女人
我想说 没有不好看的页面 只有不会CSS的前端
网页添加 CSS 和不添加 CSS 的对比
带有CSS 的页面
没有CSS 的页面
CSS初识
CSS (Cascading Style Sheets)
CSS通常称为CSS样式表或层叠样式表(级联样式表) 主要用于设置HTML页面中的文本内容 ( 字体 大小 对齐方式等 ) 图片的外形 ( 宽高 边框样式 边距等 ) 以及版面的布局等外观显示样式
CSS以HTML为基础 提供了丰富的功能 如 字体 颜色 背景的控制以及整体排版等 而且针对不同改的浏览器设置不同的样式
CSS样式规则
使用HTML 时 需要遵循一定的规范 CSS亦是如此 要想熟练的使用CSS对网页进行修饰 首先需要了解CSS样式规则
在上面的样式规则中:
1. 选择器用于指定CSS样式作用的HTML对象 花括号内是对该对象设置的具体样式
2. 属性和属性值以"键值对"的形式出现 key = value
3. 属性是对指定的对象设置的样式属性 例如字体大小 文本颜色等
4. 属性和属性值之间用英文":"链接
5. 多个"键值对"之间用英文的";"进行区分
可以用段落 和 表格的对齐演示
CSS字体样式属性
font-size : 字号大小
font-size属性用于设置字号 该属性的值可以使用相对长度单位 也可以使用绝对长度单位 其中 相对长度单位比较常用 推荐使用像素单位 px 绝对长度单位使用较少 具体如下 :
font-family : 字体
font-family属性用于设置字体 网页中常用的字体有宋体 微软雅黑 黑体等 例如将网页中所有段落文本的字体设置为微软雅黑 可以使用如下CSS样式代码:
p{ font-family : "微软雅黑"}
可以同时制定多个字体 中间用逗号隔开 表示如果浏览器不支持第一个字体 则会尝试下一个 直到找到合适的字体
使用技巧 :
1. 现在网页中普遍使用 14px+
2. 尽量使用偶数的数字字号. ie6等老浏览器支持奇数会有bug
3. 各种字体之间必须使用英文状态下的逗号隔开
4. 中文字体需要加英文状态下的引号,英文字体一般不需要加引号 当需要设置英文字体时 英文字体必须位于中文字体名 之前
5. 如果字体名中包含空格、#、$等符号 则该字体必须加英文状态下的单引号或双引号 如 font-family:"Times New Riman";
6. 尽量使用系统默认字体 保证在任何用户的浏览器中都能正确显示
CSS Unicode字体
在CSS中设置字体名称 直接写中文是可以的 但是在文件编码(GB2312、UTF-8等)不匹配时会产生乱码错误 XP系统不支持 类似微软雅黑的中文
方案一: 可以使用英文来代替 如 font-family: “Microsoft Yahei”
方案二: 在CSS直接使用Unicode编码来写字体名称可以避免这些错误 使用Unicode写中文字体名称可以避免这些错误 使用Unicode写中文字体名称 浏览器是可以正确的解析的
font-family:"\5FAE\8F6F\96C5\9ED1" 表示设置字体为"微软雅黑"
可以通过escape() 来测试属于什么字体
我们以后尽量只写unicode字体 写宋体和微软雅黑
font-weight:字体粗细
字体加粗除了用b 和 strong 标签之外 可以使用CSS 来实现 但是CSS 没有语义
font-weight属性用于定义字体的粗细 其可用属性值: normal bold bolder lighter 100-900(100的整数倍)
小技巧
数字400等价于 normal 而700等价于 bold 但是我们更喜欢用数字来表示
font-style: 字体风格
字体倾斜除了用 i 和 em 标签之外 可以使用css来实现 但是css是没有语义的
font-style属性用于定义字体风格 如设置斜体 倾斜 或正常字体 其可用属性值如下
normal : 默认值 浏览器会显示标准的字体样式
italic: 浏览器会显示斜体的字体样式
oblique: 浏览器会显示倾斜的字体样式
小技巧:
平时我们很少给文字加斜体 反而喜欢给斜体标签(em i)改为普通模式
font:综合设置字体样式(重点)
font属性用于对字体样式进行综合设置 基本语法格式如下:
选择器{font: font-style font-weight font` size/line-height font-family}
使用font属性时 必须按上面语法格式中的书写顺序 不能更换顺序 各属性用空格隔开
注意: 其中不需要设置的属性可以省略(取默认值)但必须保留font-size和font-family属性 否则将不起作用
CSS注释
css规则时使用 /*需要注释的内容*/ 进行注释的 在需要注释的内容前使用"/*"标记开始注释在内容结尾使用"*/"结束
例如
p {
font-size : 14px /*所有字体是14像素大小*/
}
开发者工具 (chrome)
此工具是我们的必备工具 以后代码出了问题 我们首先第一反应是 :
“按F12” 或者是 “shift+ctrl+i” 打开 开发者工具
小技巧 :
- ctrl+滚轮 可以 放大开发者工具代码大小
- 左边是HTML元素结构 右边是CSS样式
- 右边CSS样式可以改动数值和颜色查看更改后的效果
选择器(重点)
要想将CSS样式应用于特定的HTML元素 首先需要找到该目标元素 在CSS中 执行这一任务的样式规则部分被称为选择器(选择符).
如上图所示 要把里面的小黄人分为3组 最快的方法怎么办?
很多 比如一只眼睛的一组 两只眼睛的一组 剩下的一组
这就用到了基础选择器组:
标签选择器(元素选择器)
标签选择器是指用HTML标签名称作为选择器 按标签名称分类 为页面中某一类标签指定统一的CSS样式 其基本语法如下
标签名{属性1:属性值1;属性2:属性值2;属性3:属性值3;} 或者
元素名{属性1:属性值1;属性2:属性值2;属性3:属性值3;}
标签选择器最大的优点是能快速为页面中同类型的标签统一样式,同时这也是他的缺点 不能设计差异化样式
类选择器
类选择器使用 “.” (英文点号) 进行标识 后面紧跟类名 其基本语法格式如下:
.类名 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
标签调用的时候用 class="类名" 即可
类选择器最大的优势是可以为元素对象定义单独或相同的样式
小技巧
1.长名称或词组可以使用中横线来为选择器命名
2.不建议使用"_"下划线来命名CSS选择器
输入的时候少按一个shift键;
浏览器兼容问题(比如使用_tips的选择器命名, 在IE6是无效的)
能良好区分JavaScript变量命名( JS 变量命名用 “_”)
3.不要纯粹数字 中文等命名 尽量使用英文字母来表示
命名是我们通俗约定的
课堂案例:
多类名选择器
我们可以给标签指定多个类名 从而达到更多的选择目的
注意 :
1. 样式显示效果跟HTML元素中的类名先后顺序没有关系 受CSS样式书写的上下顺序有关
2. 个各类名中间用空格隔开
多类名选择器在后期布局比较复杂的情况下 还是较多使用的
id选择器
id选择器使用"#"进行标识 后面紧跟 id 名 其基本语法格式如下 :
#id名{属性1: 属性值1; 属性2: 属性值2; 属性3: 属性值3;}
该语法中 id名即为HTML元素的ID值 大多数HTML元素都可以定义ID属性 元素的ID值是唯一的 只能对应文档中某一个具体的元素 用法基本和类选择器相同
id选择器和类选择器的区别
W3C标准规定 在同一个页面内 不允许有相同名字的id对象出现 但是允许相同名字的 class
类选择器(class) 好比人名 是可以多次重复使用的 比如 张伟 王伟 李伟 等
id选择器就好比是人的身份证号码 全中国是唯一的 不可重复 只能用一次
通配符选择器
通配符选择器用"*"号表示 他是所有选择器中作用范围最广的 能匹配页面中所有的元素 基本语法如下 :
* {属性1: 属性值1; 属性2: 属性值2; 属性3: 属性值3;}
例如下面的代码 使用通配符选择器定义CSS样式 清楚所有HTML标记的默认边距
* {
margin: 0; /*定义外边距*/
padding: 0; /*定义内边距*/
}
注意 :
这个通配符选择器, 就像我们的电影明星中的梦中情人 想想它就好了 但是它不会和你过日子
伪类选择器
首先 这也是一个选择器 伪类选择器用于向某些选择器添加特殊效果 比如给链接添加特殊效果 比如可以选择第一个 第n个元素
为了和我们刚才学的类选择器相区别 类选择器是一个点 比如 .deom{} 而我们的伪类用两个点就是冒号比如 :link{}
链接伪类选择器
:link /* 未访问的连接 */
:visited /* 已访问的连接 */
:hover /* 鼠标移动到连接上 */
:active /* 选定的连接 */
注意写的时候 他们的顺序尽量不要颠倒 按照 lvha 的顺序 lv包包 非常 hao
实际工作中 我们简单写链接伪元素选择器就好了
结构(位置)伪类选择器(CSS3)
:first-child: 选取属于其父元素的首个子元素指定选择器
:last-child: 选取属于其父元素的最后一个子元素的指定选择器
:nth-child(n): 匹配属于其父元素的第N个子元素 不论元素的类型,多选就中间用,隔开
:nth-last-child(n): 选择器匹配属于其元素的第N个子元素的每个元素 不论元素的类型 从最后一个子元素开始计数
n可以是数字、关键词或公式
目标伪类选择器
:target 目标伪类选择器 : 选择器可用于选取当前活动的目标元素
CSS注释
css规则是使用 /* 需要注释的内容 */ 进行注释的 即在需要注释的内容前使用"/*"标记开始注释,在内容的结尾使用"*/"结束
例如
p {
font-size: 14px; /* 所有的字体是14像素大小 */
}
CSS外观属性
color: 文本颜色
color属性用于定义文本的颜色 其取值方式有如下3种:
-
预定义的颜色值 如 red green blue 等
-
十六进制, 如#FF0000 = #F00, #FF6600 #F60, #29D794等 实际工作中 十六进制是最常用的定义颜色的方式
-
RGB代码 如容色可以表示为 rgb(255,0,0) 或者 rgb(100%,0%,0%)
需要注意的是 使用RGB代码百分颜色值 取值为0时也不能省略百分号 必须写为0%
line-height: 行间距
line-height 属性用于设置行间距 就是行与行之间的距离 即字符的垂直间距 一般称为行高 line-height常用的属性单位有三种,分别为像素px 相对值rem 百分比% 实际工作中使用最多的是像素px
text-align: 水平对齐方式
text-align:属性用于设置文本内容的水平对齐 相当于html中的align对齐属性 其可用属性值如下 :
left : 左对齐(默认值)
right : 右对齐
center : 居中对齐
text-indent : 首行缩进
text-indent属性用于设置首行文本的缩进 其属性值可为不同单位的数值 em字符宽度的倍数 或相对于浏览器窗口宽度的百分比% 允许使用负值 建议使用em作为设置单位
1em 就是一个字的宽度 如果是汉字的段落 1em就是一个汉字的宽度
letter-spacing : 字间距
letter-spacing属性用于定义字间距 所谓字间距就是字符与字符之间的空白 其属性值可谓不同单位的数值 允许使用负值 默认为 normal
word-spacing : 单词间距
word-spacing属性用于定义英语单词之间的间距 对中文字符无效 和 letter-spacing一样 其属性值可为不同单位的数值 允许使用负值 默认为 normal
word-spacing和letter-spacing均可对英文进行设置 不同的是letter-spacing定义的为字母之间的间距 而word-spacing定义的为英文单词之间的间距
word-break: 自动换行
normal 使用浏览器默认的换行规则
break-all 允许在单词内换行
keep-all 只能在半角或连字符处换行
颜色半透明(CSS3)
文字颜色到了CSS3我们可以采取半透明的格式了 语法格式如下 :
color: rgba(r,g,b,a) a是alpha 透明的意思 取值范围 0~1 color: rgba(0,0,0,3)
文字阴影(CSS3)
以后我们可以给我们的文字添加阴影效果 Shadow 影子
text-shadow: 水平位置 垂直位置 模糊距离 阴影颜色
前两项是必须要写的 后两项可以选写
引入CSS样式表(书写位置)
CSS可以写到哪个位置? 是不是一定要写到html文件里面呢?
内部样式表
内嵌式是将CSS代码集中写在HTML文档的head头部标签中 并且用style标签定义 其基本语法格式如下:
<head>
<style type="text/CSS">
选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
</style>
</head>
语法中, style标签一般位于head标签中title标签之后,也可以把他放在HTML文档的任何位置
type="text/CSS"在 html5 中可以省略不写 写上也比较符合规范 所以这个地方可以写也可以省略
行内式(内联样式)
内联样式 又有人称行内样式 行间样式 内嵌样式 是通过标签的style属性来设置元素的样式 语法如下:
<标签名 style="属性1:属性值1; 属性2:属性值2;"> 内容 </标签名>
语法中style是标签的属性 实际上任何HTML标签都拥有style属性 用来设置行内式 其中属性和值的书写规范与CSS样式规则相同 行内式只对其所在的标签及嵌套在其中的子标签起作用
外部样式表(外链式)
链入式是将所有的样式放在一个或多个以 .css 为扩展名的外部样式表文件中 通过link标签将外部样式表文件链接到HTML文档中,其基本语法格式如下:
<head>
<link href="css文件的路径" type="text/CSS" rel="stylesheet" />
</head>
注意: link是单标签哦~~~~
该语法中,link标签需要放在head头部标签中 并且必须指定link标签的三个属性 , 具体如下:
href: 定义所链接外部样式表文件的URL,可以是相对路径 也可以是绝对路径
type: 定义所链接文档的类型, 在这里需要指定为"text/css",表示链接的外部文件为css样式表
rel : 定义当前文档与被链接文档之间的关系,在这里需要指定为"stylesheet"表示被链接的文档是一个样式表文件
三种样式表总结 :
标签显示模式 (display)
非洲黑人 : 皮肤内黑色素含量高 以吸收阳光中的紫外线 保护皮肤内部结构免遭损害 头发象羊毛一样卷曲 使每根卷发周围都有许多缝隙
欧洲白人 : 生活在汉代或者是说常年温度较低的地缘 加上年日照时间少 身体黑色素沉淀比较少 所以出现皮肤 发色 瞳晕都呈现浅色
最重要的总结 : 是为了更好的适应环境而完成的自然选择
同理 我们网页的标签非常多 在不同地方会用到不同类型的标签 已便更好的完成我们的网页
标签的类型(显示模式)
HTML标签一般分为块标签和行内标签两种类型 他们也称块元素和行内元素 具体如下 :
块级元素(block-level)
每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度 高度 对齐等属性 常用网页布局和网页结构的搭建
常见块元素有<h1>~<h6> <p> <div> <ul> <ol> <li>等,其中<div>标签是最典型的块元素
块级元素的特点 :
-
总是从新行开始
-
高度 行高 外边距以及内边距都可以控制
-
宽度默认是容器的100%
-
可以容纳内联元素和其他块元素
行内元素 (inline-level)
行内元素(内联元素)不占有独立的区域 仅仅靠自身的字体大小和图像尺寸来支撑结构 一般不可以设置宽度 高度 对齐等属性 常用于控制页面中文本的样式
常见的行内元素有<a> <strong> <b> <em> <i> <del> <s> <ins> <u> <span> 等 其中<span>标签最典型的行内元素
行内元素的特点:
-
和相邻行内元素在一行
-
宽 高 无效 但水平方向的padding和margin可以设置 垂直方向的无效
-
默认宽度就是他本是内容的宽度
-
行内元素只能容纳文本或其他行内元素 (a特殊)
注意 :
-
只有文字才能组成段落 因此 p 里面不能放块级元素 同理还有这些标签 h1~h6 dt 他们都是文字类块级标签 里面不能放其他块级元素
-
链接里面不能在放链接
块级元素与行内元素区别
块级元素的特点:
1. 总是从新行开始
2. 高度, 行高 外边距以及内边距都可以控制
3. 宽度默认是容器的100%
4. 可以容纳内联元素和其他块元素
行内元素的特点
1. 和相邻行内元素在一行上
2. 高 宽无效 但水平方向的padding和margin可以设置 垂直方向的无效
3. 默认宽度就是他本身内容的宽度
4. 行内元素只能容纳文本或其他行内元素
行内块元素(inline-block)
在行内元素中有几个特殊的标签--<img /> <input /> <td> 可以对他们设置宽高和对齐属性 有些资料可能会称他们为行内块元素
行内块元素的特点 :
1. 和相邻行内元素(行内块)在一行上 但是之间会有空白缝隙
2. 默认宽度就是他们本身内容的宽度
3. 高度 行高 内外边距可以以控制
标签显示模式转换 display
块转行内 : display: inline;
行内转块 : display: block;
块、行内元素转换为行内块 : display : inline-block;
此阶段, 我们只需要这三个 其他的是我们后面的工作
CSS复合选择器
复合选择器是由两个或多个基础选择器 通过不同的方式组合而成的 目的是为了可以选择更精准更精细的目标元素标签
交际选择器
交际选择器由两个选择器构成 其中第一个为标签选择器 第二个为 class 选择器 两个选择器之间不能有空格 如 h2.special
交集选择器是并且的意思 即 …又…的意思
比如: p.one 选择的是: 类名为 .one 的段落
用的相对来说比较少 不太建议使用
并集选择器
并集选择器(css选择器分组)是各个选择器通过逗号链接而成 任何形式的选择器(包括标签选择器,class类选择器id选择器等),都可以作为并集选择器的一部分 如果某些选择器定义的样式完全相同 或 部分相同 就可以利用并集选择器为他们定义相同的CSS样式
记忆技巧 :
并集选择器 和 的意思 就是说 只要逗号隔开的 所有选择器都会执行后面的样式
比如 .one,p,#test {color:#foo;}表示 .one p #test 这三个都会执行颜色为红色 通常用于集体声明
后代选择器
后代选择器又称为包含选择器 用来选择元素或元素组的后代 其写法就是把外层标签写在前面 内层标签写在后面 中间用空格分隔 当标签发生嵌套时 内层标签就称为外层标签的后代
子孙后代都可以这么选择 或者说 他能选择任何包含在内的标签
子元素选择器
子元素选择器只能选择作为某元素子元素的元素 其写法就是把父级标签写在前面 子级标签写在后面 中间跟一个 > 进行连接 注意 符号左右两侧各保留一个空格!!!
白话: 这里的子 指的是亲儿子 不包含孙子 重孙子之类
比如: .deom > h3 {color: red;} 说明 h3 一定是deoom 亲儿子 demo 包含着h3
测试题
<div class="nav"> <!--主导航栏-->
<ul>
<li><a href="#">公司首页</a></li>
<li><a href="#">公司简介</a></li>
<li><a href="#">公司产品</a></li>
<li>
<a href="#">联系我们</a>
<ul>
<li><a href="#">公司邮箱</a></li>
<li><a href="#">公司电话</a></li>
</ul>
</li>
</ul>
<div class="sitenav"> <!--侧导航栏-->
<div class="site-l">左侧导航栏</div>
<div class="site-r"><a href="#">登录</a></div>
</div>
</div>
在不修改代码的前提下 完成以下任务
- 链接 登录 的颜色为红色 同时主导航栏里面的所有的连接改为蓝色 (简单)
- 主导航栏和测导航栏里面文字都是14像素 并且是微软雅黑 (中等)
- 主导航栏里面的一级菜单链接文字颜色为绿色 (难)
属性选择器
伪元素选择器
- E::first-letter 文本的第一个单词或字 (如 中文 日文 韩文等)
- E::first-line 文本第一行
- E::selection 可改变选中文本的样式
p::first-letter {
font-size: 20px;
color: hotpink;
}
/* 首行特殊样式 */
p::first-line {
color: skyblue;
}
p::selection {
/* font-size: 50px; */
color: orange;
}
- E::before和E::after
在E元素内部的开始位置和结束位置创建一个元素 该元素为行内元素 并且需要结合content属性使用
div::before {
content:"开始";
}
div::after {
content:"结束";
}
E:after E:before在旧版本中是伪元素 CSS3的规范里":"用来表示伪类 "::"用来表示伪元素 但是在高板浏览器下E:after E:before会被自动识别为 E::after E::before 这样做的目的是用来做兼容处理
E:after E:before 后面的联系中会反复用到 目前只需要有个大致的了解
":“与”::"区别在于区分未来和伪元素
CSS书写规范
开始就形成一个良好的书写规范 是你专业化的开始
空格规范
[ 强制 ] 选择器与 { 之间必须包含空格
示例 : .selector {}
[ 强制 ] 属性名 与之后的 : 之间不允许包含空格 : 与属性值之间 必须要包含空格
示例 : font-size: 12px;
选择器规范
[ 强制 ] 当一个 rule 包含多个 selector 时 每个选择器声明必须独占一行
示例 :
/* good */
.post,
.page
.comment {
line-height: 1.5;
}
/* bad */
.post, .page, .comment {
line-height: 1.5;
}
[ 建议 ] 选择器的嵌套层级应不大于 3 级 位置靠后的限定条件应尽可能精确
示例 :
/* good */
#username input {}
.comment .avatar {}
/* bad */
.page .header .login #username input {}
,comment div * {}
属性规范
[ 强制 ] 属性定义必须另起一行
示例 :
/* good */
.selector {
margin: 0;
padding: 0;
}
/* bad */
.selector { margin: 0; padding: 0;}
[ 强制 ] 属性定义后必须以分号结尾
示例:
/* good */
.selector {
padding: 0;
}
/* bad */
.selector {
margin: 0;
}
CSS背景(background)
css可以添加背景颜色和背景图片 以及来进行图片设置
背景图片(image)
语法: background-image: url(图片的路径)
背景平铺(repeat)
语法: background-repeat: no-repeat; /* 不平铺 */ 查手册
背景位置(position)
语法:
background-position : length || length
background-position : position || position
参数:
length : 百分数 | 由浮点数字和单位标识符组成的长度值 请参阅长度单位
position : top | center | bottom | left |center | right
说明:
- position后面是X坐标和Y坐标 可以使用方位名词或者精确单位
- 如果和精确单位和方位名字混合使用 则必须是X坐标在前面 Y坐标在后面 比如 background-position: 15px top; 则 15px 一定是 X坐标 top 是Y坐标
实际工作中使用最多的就是图片居中对齐了
背景附着
语法:
background-attachment : scroll | fixed
参数:
scroll : 背景图像是随对象内容滚动
fixed : 背景图像固定
说明 :
设置或检索背景图像是随对象内容滚动还是固定的
背景简写
background属性的值的书写顺序官方并没有强制标准的 为了可读性 建议大家如下写:
background : 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置
background: transparent url(image.jpg) repeat-y scroll 50% 0;
背景透明(CSS3)
background: rgba(0,0,0,0.3);
最后一个参数是alpha透明度 取值范围 0~1 之间
注意 : 背景半透明是指盒子背景半透明 盒子里面的内容不受影响
同样 可以给文字和边框透明 都是用 rgba的格式来写
背景缩放(CSS3)
通过background-size设置背景图片的尺寸 就像我们设置img的尺寸一样 在移动Web开发中做屏幕适配应用非常广泛 其参数设置如下 :
a) 可以设置长度单位(px)或百分比(设置百分比时, 参照盒子的宽高)
b) 设置为cover时 会自动调整缩放比例 保证图片始终填充满背景区域 如有溢出部分则会被隐藏
c) 设置为 contain 会自动调整缩放比例 保证图片始终完整显示在背景区域
background-image: url('images/gyt.jpg');
background-size: 300px 100px;
/* background-size: contain; */
/* background-size: cover; */
多背景(CSS3)
以逗号分隔可以设置多背景 可用于自适应布局
background-iamge: url('images/gyt.jpg'),url('images/robot,png');
凹凸文字
body {
background-color: gray;
font: bold 6em "microsoft yahei";
}
div {
margin: 30px;
color: gray;
}
.to {
text-shadow: -1px -1px white,1px 1px #000;
}
.ao {
text-shadow: -1px -1px #000, 1px 1px white;
}
文本的装饰
text-decoration 通常我们用于给链接修改装饰效果