css-css3
概述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
由来
略…
特点
CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS在Web设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。
总体来说,CSS具有以下特点:
丰富的样式定义
CSS提供了丰富的文档样式外观,以及设置文本和背景属性的能力;允许为任何元素创建边框,以及元素边框与其他元素间的距离,以及元素边框与元素内容间的距离;允许随意改变文本的大小写方式、修饰方式以及其他页面效果。
易于使用和修改
CSS可以将样式定义在HTML元素的style属性中,也可以将其定义在HTML文档的header部分,也可以将样式声明在一个专门的CSS文件中,以供HTML页面引用。总之,CSS样式表可以将所有的样式声明统一存放,进行统一管理。
另外,可以将相同样式的元素进行归类,使用同一个样式进行定义,也可以将某个样式应用到所有同名的HTML标签中,也可以将一个CSS样式指定到某个页面元素中。如果要修改样式,我们只需要在样式列表中找到相应的样式声明进行修改。
多页面应用
CSS样式表可以单独存放在一个CSS文件中,这样我们就可以在多个页面中使用同一个CSS样式表。CSS样式表理论上不属于任何页面文件,在任何页面文件中都可以将其引用。这样就可以实现多个页面风格的统一。
层叠
简单的说,层叠就是对一个元素多次设置同一个样式,这将使用最后一次设置的属性值。例如对一个站点中的多个页面使用了同一套CSS样式表,而某些页面中的某些元素想使用其他样式,就可以针对这些样式单独定义一个样式表应用到页面中。这些后来定义的样式将对前面的样式设置进行重写,在浏览器中看到的将是最后面设置的样式效果。
页面压缩
在使用HTML定义页面效果的网站中,往往需要大量或重复的表格和font元素形成各种规格的文字样式,这样做的后果就是会产生大量的HTML标签,从而使页面文件的大小增加。而将样式的声明单独放到CSS样式表中,可以大大的减小页面的体积,这样在加载页面时使用的时间也会大大的减少。另外,CSS样式表的复用更大程度的缩减了页面的体积,减少下载的时间。 [8]
工作原理
CSS是一种定义样式结构如字体、颜色、位置等的语言,被用于描述网页上的信息格式化和显示的方式。CSS样式可以直接存储于HTML网页或者单独的样式单文件。无论哪一种方式,样式单包含将样式应用到指定类型的元素的规则。外部使用时,样式单规则被放置在一个带有文件扩展名_css的外部样式单文档中。
样式规则是可应用于网页中元素,如文本段落或链接的格式化指令。样式规则由一个或多个样式属性及其值组成。内部样式单直接放在网页中,外部样式单保存在独立的文档中,网页通过一个特殊标签链接外部样式单。
名称CSS中的“层叠(cascading)”表示样式单规则应用于HTML文档元素的方式。具体地说,CSS样式单中的样式形成一个层次结构,更具体的样式覆盖通用样式。样式规则的优先级由CSS根据这个层次结构决定,从而实现级联效果。
语言基础
属性和属性值
属性
属性的名字是一个合法的标识符,它们是CSS语法中的关键字。一种属性规定了格式修饰的一个方面。例如:color是文本的颜色属性,而text-indent则规定了段落的缩进。
要掌握一个属性的用法,有六个方面需要了解。具体叙述如下:
①该属性的合法属性值(legal value)。显然段落缩进属性text-indent只能赋给一个表示长度的值,而表示背景图案的background.image属性则应该取一个表示图片位置链接的值或者是关键字none表示不用背景图案。
②该属性的默认值(initial value)。当在样式表单中没有规定该属性,而且该属性不能从它的父级元素那儿继承的时候,则浏览器将认为该属性取它的默认值。
③该属性所适用的元素(Applies to)。有的属性只适用于某些个别的元素,比如white-space属性就只适用于块级元素。white-space属性可以取normal、pre和nowrap三个值。当取normal的时候,浏览器将忽略掉连续的空白字符,而只显示一个空白字符。当取pre的时候,则保留连续的空白字符。而取nowrap的时候,连续的空白字符被忽略,而且不自动换行。
④该属性的值是否被下一级继承(inherited)。
⑤如果该属性能取百分值(percentage),那么该百分值将如何解释。也就是百分值所相对的标准是什么。如margin属性可以取百分值,它是相对于margin所存元素的容器的宽度。
⑥该属性所属的媒介类型组(media groups)。
属性值
①整数和实数
这和普通意义上的整数和实数没有多大区别。在CSS中只能使用浮点小数,而不能像其他编程语言那样使用科学记数法表示实数,即1.2E3在CSS中将是不合法的。下面是几个正确的例子,整数:128、-313,实数:12.20、1415、-12.03。
②长度量
一个长度量由整数或实数加上相应的长度单位组成。长度量常用来对元素定位。而定位分为绝对定位和相对定位,因而长度单位也分为相对长度单位和绝对长度单位。
相对长度单位有:em——当前字体的高度,也就是font.size属性的值;ex——当前字体中小写字母x的高度;Dx——一个像素的长度,其实际的长度由显示器的设置决定。
另一一点值得注意的是,子级元素不继承父级元素的相对长度值,只继承它们的实际计算值。
③百分数量(percentages)
百分数量就是数字加上百分号。显然,百分数量总是相对的,所以和相对长度量一样,百分数量不被子级元素继承。 [10]
选择器(选择器 {key: value})
简单选择器
\1. 元素选择器
\2. Class类选择器
\3. Id选择器
\4. 通配符选择器 (*)
复杂选择器
\1. 后代选择器
\2. 子选择器
\3. 并集选择器
\4. 伪类选择器(:hover)
Css3 新属性 (i8不支持)
\5. 属性选择器([key=value])
\6. 结构伪类选择器 first-child last-child nth-child(n) fiset-of-typ last-of-type nth-of-type(n)
\7. 伪元素选择器 ::before ::after(属于内行元素,文档中找不到,必须有content)
Css样式
定义
内行,内部,外行
使用
Cssi8 样式(及以上支持)
-
字体样式 font-style, font-weight, font-size, font-family (继承性)
-
文本样式 color, text-align,text-index,text-decoration,line-heght (继承性)
-
背景样式 background-color,background-images:url(src),background-repeat,background-position,background-attachment
-
链接样式 :hover(鼠标指针位于元素的上方)
-
模式样式 display(black,line-block,line,none)
-
列表样式 list-style-type,list-style-image,list-style-position
-
表格样式 border-collapse
-
轮郭样式 outline-color,outline-style,outline-width
-
盒子样式 border,padding,margin,width,height
-
浮动样式 float clear
-
伪元素样式 :before :after
-
滚动条 overflow scroll/hidden/auto
-
定位样式 position: static/realtive/absolute/fixed
-
鼠标样式 cursor: default/pointer/move/text/not-allowed
-
vertical-align样式: middle/top/button
-
溢出处理 text-overflow
Css3 样式(i9及以上支持)
-
圆角边框 border-radius
-
图片边框 border-images
-
盒子阴影 box-shadow: h-shadow v-shadow blur spread color inset;
-
文字阴影 text-shadow:h-shadow v-shadow blur color;
-
Z-index样式 关于z抽的设置
-
盒子样式 box-sizing
-
滤镜**样式 filter (不支持ie)
-
calc样式函数
-
调整尺寸 resize
-
外形修饰outline-offset
-
Css3 字体 @font-face
-
过度 transition 属性 所花时间 运动曲线 何时开始
-
2d旋转 transform translate rotate(transform-origin) scale
-
动画 1. @keyframes name{(动画序列) 0% {} 100% {} } animation
-
3d旋转 transform translate3d rotate3d
-
透视样式 prespective 作用父类 单位像素
-
3d呈现样式 transfrom-style 作用父类 flat,preserve-3d,是否开启3d样式呈现
-
背景样式 background-size , background-origin, background-clip
-
渐变样式 background-images: linear gradient/radial gradient
-
透明样式 opacity filter:Alpha(opacity=) (继承性)
-
多列样式 column-count,column-gap,column-rule-style,column-rule-width
column-rule-color,column-span,column-width
-
多媒体查询样式 @media mediatype and/not/only (expressions) { CSS 代码…;}
调式
浏览器调式工具f12
Emmet快捷
\1. Html
\2. Css
\3. 代码的格式化
Css特性
继承父元素的样式后权重性为零,!Important 权重性最高
注: 复杂选择器权重性叠加
继承(*), 权重 0
元素选择器,伪元素选择器 权重 1
类选择器,伪类选择器, 属性选择器,结构伪类选择器 权重 10
id选择器 权重 100
行内选择器 1000
!Importanc 权重 最大
问题
-
清除内外边距
-
设置margin样式出现的外边距溢出
-
块级元素,行内元素,行内块元素的特点问题
-
行内元素尽量不要设置上下内外边距问题
-
Css三大特性问题
-
浮动特点问题
-
浮动的高度塌陷问题
-
定位的特点
-
精灵图运用
-
字体图标
-
图形的制作
-
图片底部空白间隙的问题
-
文字溢出省略号问题
-
Margin负值的问题
-
文字围绕浮动效果
-
Border 的运用
-
垂直居中问题
-
Transfrom
-
Animation
-
a标签的问题
-
样式前缀问题
-
css引入媒体样式 media=**”mediatype and|not|only (media feature)”
高度坍塌
成因
- 父元素 div 未设置高度
- 子元素全部设置浮动(float: left | right;),浮动元素 脱离文档流 且 不占页面空间
- 由于父元素为设置高度,高度靠内部子元素撑开,而今子元素全部脱离文档流,所以此时父元素的高度为 0,给父元素和子元素设置 边框(border: 1px solid #000;)或者 显示父元素轮廓(outline: 1px solid #000;),会出现子元素超出了父元素的区域范围,即为:高度坍塌现象
解决方法
2.1 根据子元素的最大高度为父元素设置高度
- 前提是要知道子元素高度
2.2 父元素也设置为浮动
- 会影响父元素的兄弟元素,可能破坏原有的页面布局
2.3 父元素设置 overflow: auto | hidden; 属性
- 只要溢出的内容一律都会被隐藏,可能会隐藏不想被隐藏的部分
2.4 为父元素增加伪元素(推荐)
外边距溢出
- 成因
- 父元素 div 未设置边框
- 第一个子元素设置了上外边距(margin-top: 10rem;)或者 最后一个子元素设置了下外边距(margin-bottom: 10rem;)
- 导致父元素与子元素一起发生相应的偏移的现象,即为:外边距溢出现象
- 解决方法
- 为父元素增加伪元素(推荐)
浮动会脱离标准流
如果一个元素按照正常的标准流来显示,会在html中所属的位置上占位,后面的元素会紧跟着它,但是浮动脱离了标准流,以后我们在看到浮动的元素之后,不能以正常的标准流里进行判断
浮动的元素会影响下面的元素,不会影响上面的元素
浮动会影响元素的显示方式
不管元素是行内元素还是块级元素,设置浮动后,将来显示的时候会在同一行内显示,除非一行放不下了,才会在第二行依次显示浮动后的元素是可以设置宽高
Css布局
传统布局(pc) (i8都支持)
标准流/普通流/文档流
浮动(非文档流)
定位
注:两栏布局,三栏布局(经典)
移动端布局
Css书写规范
布局定位样式
自身样式
文本样式
Css3样式