文章目录
- Day 2
Day 2
2019年6月16日。
这是我学习前端的第二天。
这一天,我学到了以下的知识。
初识CSS
定义
CSS(Cascading Style Sheet),层叠样式表。
表现HTML文件格式的语言,包括对字体、颜色、边距、高度、宽度、背景图片、网页定位等设定。
CSS的发展历史
1996年 CSS1.0
1998年 CSS2.0
融入了DIV+CSS的概念,提出了HTML结构与CSS样式表的分离
2004年 CSS2.1
融入了更多高级的用法,如浮动,定位等。
2010年 CSS3.0
它包括了CSS2.1下的所有功能,是目前最新的版本,它向着模块化的趋势发展,又加了很多使用的新技术,如字体、多背景、圆角、阴影、动画等高级属性,但是它需要高级浏览器的支持。由于现在IE 6、IE 7使用比例已经很少,对市场企业进行调研发现使用CSS3的频率大幅增加,学习CSS3已经成为一种趋势。
CSS的优势
- 内容与表现分离
- 网页的表现统一 , 容易修改
- 丰富的样式,使得页面布局更加灵活
- 减少网页的代码量 , 增加网页的浏览速度,节省网络带宽
- 运用独立于页面的CSS , 有利于网页被搜索引擎收录
CSS的基础语法
注意:CSS的最后一条声明后的“;”可写可不写,但是,基于W3C标准规范考虑,建议最后一条声明的结束“;” 都要写上
Style标签
Style 标签在HTML文档中的位置 , 在 <head.> 和 </head.> 之间
引入CSS的方式
- 行内样式:使用style属性引入CSS样式
- 内部样式表:CSS代码写在<head.>的<style.>标签中
- 外部样式表:通过外部文件(css文件)来导入样式表
链接式:使用<link.>标签导入css文件
1.Style.css
2.Html页面
导入式:使用@import语句导入css文件
1.Style.css
2.Html页面
链接式与导入式的区别
- <link./>标签属于XHTML,@import是属于CSS2.1
- 使用<link./>链接的CSS文件先加载到网页当中,再进行编译显示
- 使用@import导入的CSS文件,客户端显示HTML结构,再把CSS文件加载到网页当中
- @import是属于CSS2.1特有的,对不兼容CSS2.1的浏览器是无效的
CSS样式优先级(就近原则)
示例如下(Style.css在上面列举过):
选择器
要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器,HTML页面中的元素就是通过CSS选择器进行控制的。
选择器分为基础选择器和高级选择器。
- 基础选择器
1.标签选择器:用HTML标签来作为标签选择器的名称
示意图如下: - 示例如下:
2.标签选择器:用类名称来作为类选择器的名称
示意图如下:
示例如下:
3.id选择器:用id来作为id选择器的名称
示意图如下:
示例如下:
4.总结
(1)标签选择器直接应用于HTML标签
(2)类选择器可在页面中多次使用
(3)选择器在同一个页面中只能使用一次
(4)基本选择器的优先级:ID选择器>类选择器>标签选择器,且基本选择器不遵循 “ 就近原则 ”
示例如下
- 高级选择器
1.层次选择器:可以选择作为某元素后代的元素
层次选择器的种类如下: - (1)后代选择器:两个选择符之间必须要以空格隔开,示意图如下:
- (2)子选择器:示意图如下:
- (3)相邻兄弟选择器:示意图如下:
- (4)通用兄弟选择器:示意图如下:
- 四种层次选择器的综合示例如下:
2.结构伪类选择器:通过文档树结构的相互关系来匹配特定的元素,可以减少HTML文档对ID或类名的定义
结构伪类选择器的种类如下:
结构伪类选择器的综合示例如下:
运行示意图如下:
3.属性选择器:可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性(推荐使用)
属性选择器的种类如下:
示例如下:
CSS美化网页
为什么使用CSS
- 有效的传递页面信息
- 使用CSS美化过的页面文本,漂亮,美观,可以吸引用户
- 可以很好的突出页面的主题内容,使用户第一眼可以看到页面主要内容
- 具有良好的用户体验
span 和 div
- span标签:能让某几个文字或者某个词语凸显出来,是行内元素
- div标签:是块级元素
字体样式
文本样式
示例如下:
1.Style2.css
2.Html页面
文本阴影
text-shadow属性在CSS2.0中出现,但迟迟未被各大浏览器所支持,因此在CSS2.1中被废弃,如今在CSS3中得到了各大浏览器的支持
超链接伪类
设置伪类的顺序:a:link->a:visited->a:hover->a:active
示例如下:
1.Style3.css
2.Html页面
列表样式
为list-style开头的一串属性,用于设置列表的样式,常见的属性值有list-style-type(设置列表标记的类型)、list-style*(设置列表的列表项目标记)
示例如下:
1.Style4.css
2.Html页面
网页背景
为background开头的一串属性,用于设置网页的背景,常见的属性值有background-color(设置背景颜色)、background-image(设置背景图片)、background-position(设置背景定位)、background-repeat(设置背景重复方式)、background(设置背景的简写)
示例如下:
1.Style5.css
2.Html页面
背景尺寸
使用background-size来设置背景的尺寸,其属性值如下:
CSS3渐变
渐变分为两种:线性渐变和径向渐变
- 线性渐变:颜色沿着一条直线过渡:从左到右、从右到左、从上到下等
- 径向渐变:圆形或椭圆形渐变,颜色不再沿着一条直线变化,而是从一个起点朝所有方向混合
并不是所有浏览器都支持渐变,浏览器的兼容表如下:
若需要浏览器支持渐变,则需要添加相关属性值,如下所示:
在这里,重点介绍线性渐变的使用方法,语法如下所示:
若需要兼容Webkit内核的浏览器,则添加相应的属性值,如下所示:
盒子模型
什么是盒子模型
所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。
CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。
盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
下面的图片说明了盒子模型(Box Model):
不同部分的说明:
- Margin(外边距) - 清除边框外的区域,外边距是透明的。
- Border(边框) - 围绕在内边距和内容外的边框。
- Padding(内边距) - 清除内容周围的区域,内边距是透明的。
- Content(内容) - 盒子的内容,显示文本和图像。
边框
1.border-color:边框颜色
2.border-width:边框粗细,属性值可为thin(细的)、medium(标准的)、thick(粗的)、以及像素值
3.border-style:边框样式,属性值可为none(无)、dotted(点)、以及solid(实线)等
4.边框简写:可以同时设置边框的颜色,粗细和样式
外边距(margin)
外边距具有以下属性值:
- margin-top:设置上外边距
- margin-right:设置右外边距
- margin-bottom:设置下外边距
- margin-left:设置左外边距
另外,可以使用
来设置网页居对齐(对齐的必要元素:块元素、固定宽度)
内边距(padding)
外边距具有以下属性值:
- padding-top:设置上内边距
- padding-right:设置右内边距
- padding-bottom:设置下内边距
- padding-left:设置左内边距
盒子模型尺寸
圆角边框
设置的四个属性值按顺时针排列
盒子阴影
浮动
标准文档流
组成元素:块级元素和内联元素。
- 块级元素(block):h1~h6、p、div、列表
- 内联云阿苏(inlline):span、a、img、strong
内联标签可以包含于块级标签中,成为它的子元素,而反过来则不成立
display属性
属性值如下:
display作用如下:
- 块级元素与行级元素的转变(block、inline)
- 控制块元素排到一行 (inline-block)
- 控制元素的显示和隐藏(none)
块元素排在一行的方法
- 使用inline-block属性
- 使用float属性
浮动
float属性值如下:
inline-block和float的区别
- display:inline-block
- 可以让元素排在一行,并且支持宽度和高度,代码实现起来方便
- 位置方向不可控制,会解析空格
- IE 6、IE 7上不支持 - float
- 可以让元素排在一行并且支持宽度和高度,可以决定排列方向
- float 浮动以后元素脱离文档流,会对周围元素产生影响,必须在它的父级上添加清除浮动的样式
边框塌陷
作用如下:
- 浮动元素脱离标准文档流
- 清除浮动
其中,与边框塌陷有关的clear属性值如下:
解决父类边框塌陷的方法
- 浮动元素后面加空div:简单,空div会造成HTML代码冗余
- 设置父元素的高度:简单,元素固定高会降低扩展性
- 父级添加overflow属性:简单,下拉列表框的场景不能用
- 父级添加伪类after:写法稍微复杂,但是没有副作用,推荐使用
溢出处理
Overflow属性值如下:
定位网页元素
定位
Overflow属性值如下:
- static:默认值,没有定位
- relative:相对定位
- absolute:绝对定位
- fixed:固定定位
相对定位
特性:
- 相对于自己的初始位置来定位
- 元素位置发生偏移后,它原来的位置会被保留下来
- 层级提高,可以把标准文档流中的元素及浮动元素盖在下边
- 使用场景:相对定位一般情况下很少自己单独使用,都是配合绝对定位使用,为绝对定位创造定位父级而又不设置偏移量
绝对定位
特性:
- 绝对定位是相对于它的定位父级的位置来定位,如果没有设置定位父级,则相对浏览器窗口来定位
- 元素位置发生偏移后,原来的位置不会被保留
- 层级提高,可以把标准文档流中的元素及浮动元素盖在下边
- 设置绝对定位的元素脱离文档流
- 使用场景:一般情况下,绝对定位用在下拉菜单、焦点图轮播、弹出数字气泡、特别花边等场景
固定定位
特性:
- 相对浏览器窗口来定位
- 偏移量不会随滚动条的移动而移动
- 使用场景:一般在网页中被用在窗口左右两边的固定广告、返回顶部图标、吸顶导航栏等
z-index属性
z-index属性,可以调整元素定位时重叠层的上下位置,特性:
- z-index属性值:整数,默认值为0
- 设置了position属性时,z-index属性可以设置各元素之间的重叠高低关系
- z-index值大的层位于其值小的层上方
示意图如下:
网页元素透明度
CSS制作网页动画
CSS3属性制作动画
关于制作动画,有三个要素需要实现:
- 动态图片
- Flash(CSS3变形、CSS3过渡、CSS3动画)
- JavaSctipt
CSS3变形
CSS3变形是一些效果的集合,如平移、旋转、缩放、倾斜效果。每个效果都可以成为变形(transform),它们可以分别操控元素发生平移、旋转、缩放、倾斜等变化。
变形函数
- translate():平移函数,基于X、Y坐标重新定位元素的位置
- scale():缩放函数,可以使任意元素对象尺寸发生变化
- rotate():旋转函数,取值是一个度数值
- skew():倾斜函数,取值是一个度数值
2D位移
语法:
示意图:
一个方向上的偏移如下所示:
- translateX(tx):表示只设置X轴的位移
transform:translate(100px,0) <=> transform:translateX(100px) - translateY(ty):表示只设置Y轴的位移
transform:translate(0,100px) <=> transform:translateY(100px)
2D缩放
语法:
特性:
- scale()函数可以只接收一个值,也可以接收两个值,只有一个值时,第二个值默认和第一个值相等
- scaleX(sx):表示只设置X轴的缩放
transform:scale(2,0) <=> ttransform:scaleX(2) - scaleY(sy):表示只设置Y轴的缩放
transform:scale(0,2) <=> transform:scaleY(2)
2D倾斜
语法:
特性:
- 可以仅设置沿着X轴或Y轴方向倾斜
- skewX(ax):表示只设置X轴的倾斜
- skewY(ay):表示只设置Y轴的倾斜 - skew( )函数是倾斜,元素不会旋转,会改变元素的形状
2D旋转
语法:
特性:
- 参数a单位使用deg表示
- 参数a取正值时元素相对原来中心顺时针旋转
- rotate( )函数只是旋转,而不会改变元素的形状
示意图:
CSS3过渡
transition呈现的是一种过渡,是一种动画转换的过程,如渐现、渐弱、动画快慢等
CSS3 transition的过渡功能更像是一种“黄油”,通过一些CSS的简单动作触发样式平滑过渡
语法:
过渡的触发机制:
- 伪类触发
-hover
- active
- focus
- checked - 媒体查询:通过@media属性判断设备的尺寸,方向等
- JavaScript触发:用JavaScript脚本触发
CSS3动画
animation实现动画主要由两个部分组成:
- 通过类似Flash动画的关键帧来声明一个动画
- 在animation属性中调用关键帧声明的动画实现一个更为复杂的动画效果
支持CSS3动画的浏览器版本如下: