孔子曰:学而不思则罔,思而不学则殆。
废话不多说,直接上。
浅谈兼容
css相较于js html来说,兼容性问题最不是事,CSS在最初设计时,就有一个协议:如果不能识别选择器属性,那么就默认不处理,不报错。这个也是CSS得以发展的非常重要的特征。
下面是各个浏览器私有前缀:
IE -ms-
Chrome -webkit-
Firefox -moz-
Safari -webkit-
Opera -o-
CSS3中的两种兼容性策略:
渐进增强:先写浏览器都支持的属性,以保证低版本的浏览器的基本功能,然后再添加新浏览器中新增的属性。(向上兼容)
优雅降级:首先针对高版本浏览器写CSS,然后向低版本浏览器做兼容。(向下兼容)
CSS3选择器
选择器,也叫选择符,就是用来选择DOM元素的符号。
CSS2.1选择器
复习一下之前学习的七种选择器:
|
选择器 |
说明 |
|
* |
通配符选择器 |
|
p |
标签选择器 |
|
.box |
类选择器 |
|
#box |
ID选择器 |
|
div span |
后代选择器 |
|
div, p |
分组选择器 |
|
div.box |
交集选择器 |
|
:hover |
鼠标悬停时 |
CSS3属性选择器
按照元素的属性进行选择。img标签里面alt属性, input里面的type属性......
|
选择器 |
说明 |
|
input[title] |
选择具有title的input元素 |
|
input[title=”bz”] |
选择具有title属性,具属性值为”bz” |
|
input[title *= “bz”] |
选择具有title属性,且属性值中包含有”bz” |
|
input[title ^= “bz”] |
选择具有title属性,且属性值中以”bz”开头 |
|
input[title $= “bz”] |
选择具有title属性,且属性值中以”bz”结束 |
|
input[title ~= “bz”] |
选择具有title属性,且属性值中”bz”是以空格分隔的独立部分 |
|
input[title |= “bz”] |
选择具有title属性,且属性值中以”bz-”开头 |
注意点:属性选择器,是从IE7才开始支持的。
CSS3 关系选择器
|
选择器 |
说明 |
|
section div |
选择section后面所有的div,是所有后代 |
|
section>div |
选择seciton后面儿子,不是所有后代 |
|
div+span |
选择div后面紧挨着的第一个span |
|
div~span |
选择div后面所有的span |
CSS3 伪类选择器
|
选择器 |
说明 |
|
:root |
根元素选择器 |
|
:nth-child(n) |
选中第n个孩子 |
|
:first-child |
选中第一个孩纸 |
|
:last-child |
选中最后一个孩纸 |
|
:nth-last-child(n) |
选中倒数第n个孩子 |
|
:only-child |
独生子女 |
|
:nth-child(2n) :nth-child(even) |
选中排行偶数的孩纸 |
|
:nth-child(2n+1) :nth-child(odd) |
选中排行奇数的孩纸 |
|
:nth-child(-n+5) |
选中排行前5的孩纸 |
|
:nth-of-type(n) |
选择其父母下的排行第n的同类孩子 |
|
:first-of-type |
选择同类中的第一个孩子 |
|
:last-of-type |
选择同类中的最后一个孩子 |
|
:nth-of-type(2n) :nth-of-type(even) |
选择同类中排行偶数的孩子 |
|
:nth-of-type(2n+1) :nth-of-type(odd) |
选择同类中排行奇数的孩子 |
|
:nth-of-type(-n+2) |
选择同类中排行同两个的孩子 |
|
:only-of-type |
选择同类中唯一一个的孩子 |
|
:nth-last-of-type(n) |
选择同类中倒数第n个孩子 |
|
:hover |
任意元素都可以使用,鼠标在元素上盘旋时 |
|
:active |
任意元素都可以使用,元素处于激活时 |
|
:focus |
当表单处于焦点时 |
|
:checked |
当表单元素处于选中状态时 |
|
:disabled |
当表单元素处处于不可用时 |
|
:enabled |
当表单元素处于可用时 |
|
:lang() |
表单元素处于某种语言时 |
|
:empty |
选择空元素 |
|
:not(selector) |
取非 |
|
:target |
当锚点处于当前状态时 |
:nth-child 和 :nth-of-type 的区别:
参考张鑫旭:www.zhangxinxu.com/wordpress/2…
CSS3 伪元素选择器
|
选择器 |
说明 |
|
:before |
在当前元素的内部最前面插入一个伪元素 |
|
:after |
在当前元素的内部最后面插入一个伪元素 |
|
:first-letter |
选中元素的第一个字符 |
|
:first-line |
选中元素的第一行 |
|
::selection |
选中的元素 |
注意::before里面有一个content属性,这个属性必须要写,如果没有内容,就写空串。
::selection选择器注意点:必须保证容器没有被接受一个属性,叫user-select: none;如果接受了这个属性,那么该元素的文字不可选,样式永远不可能生效。
CSS3新属性
颜色表示法
在CSS3中,又新增了几种颜色表示法:
|
颜色表示法 |
说明 |
|
RGBA |
A是透明度(0~1) |
|
HSL |
说明如下 |
|
HSLA |
说明如下 |
H:Hue(色调)。0(或360)表示红色,120表示绿色,240表示蓝色,也可取其他数值来指定颜色。取值为:0 - 360
S: Saturation(饱和度)。取值为:0.0% - 100.0%
L: Lightness(亮度)。取值为:0.0% - 100.0%
圆角属性
|
属性 |
说明 |
|
border-radius |
|
|
border-top-left-radius |
左上角 |
|
border-top-right-radius |
右上角 |
|
border-bottom-left-radius |
左下角 |
|
border-bottom-right-radius |
右下角 |
阴影属性
格式:box-shadow: 右 下 羽化值 延展 颜色 inset
注意细节
1,前两个参数为0时,可以去模拟发光效果。
2,如果需要设置内阴影,那么需要给box-shadow添加上inset值就可以。
3,可以给盒子设置多个阴影,只需要在多个阴影之间以逗号分隔就可以。
4,从IE9开始支持盒子阴影。
格式:text-shadow: 右 下 羽化值 颜色
注意细节:
1,文字阴影没有延展,没有inset, 其它和盒子阴影一样
2,它是从IE10开始支持
背景起点
背景起点就是研究背景是相对于谁进行定位的。默认的,它是相对于盒子的padding进行定位的。
background-origin:padding-box | border-box | content-box
background-origin的默认值是padding-box
背景裁切
background-clip: border-box | padding-box | content-box
|
背景裁切属性 |
说明 |
|
border-box |
表示背景图片是按照边框盒进行裁切 |
|
padding-box |
表示背景图片是按照内边距框进行裁切 |
|
content-box |
表示背景图片是按照内容框进行裁切 |
背景大小
|
背景图大小取值 |
说明 |
|
background-size:auto auto |
默认情况 |
|
background-size:100px 100px |
背景图片被设置成100px * 100px |
|
background-size:100% 100% |
背景图的宽高与盒子等宽高 |
|
background-size:100% auto |
宽度与盒子等宽,高度自动等比缩放 |
|
background-size: auto 100% |
高度与盒子等高,宽度自动等比缩放 |
|
background-size: cover |
缩放背景图到刚好覆盖盒子为止 |
|
background-size: contain |
在保证背景图完整显示的情况下,尽可能的缩放背景图到等高或等宽 |
背景渐变
背景渐变是指背景图,而不是指背景色,用到的属性是background-image, 不是background-color。
liear-gradient(开始的位置,颜色值1, 颜色值2.....)
有两种坐标系(W3C和WHATWG)
w3c:
background-image: linear-gradient(90deg,red,black)whatwg:
background-image: -webkit-linear-gradient(0deg,red,black)
效果才是一样的。
背景图与插入图片区别
1,插入的图片可以拖拽,背景图片不能拖拽
2,插入图片占位,背景图片不占位
3,插入图片语义较高,可以被搜索引擎收录到,背景图片语义低,不能被搜索引擎收录到
4,背景图片非常容易控制,相关的属性比较多......
5,插入的图片有一个bug, 图片下方默认会出一个白边, 这个白边是一个bug, 大约有10px
过渡动画
transition: 要发生变化的属性名 动画时长 缓冲曲线 等待时间
transition-property: 要发生变化的属性名
transition-duration: 动画时长
transition-timing-funciton: 缓冲曲线
transition-delay:等待时间
变型
2D 转换
translate()方法:
通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数。
值 translate(50px,100px) 把元素从左侧移动 50 像素,从顶端移动 100 像素。
rotate()方法
通过 rotate() 方法,元素顺时针旋转给定的角度。允许负值,元素将逆时针旋转。
值 rotate(30deg) 把元素顺时针旋转 30 度。
scale() 方法
通过 scale() 方法,元素的尺寸会增加或减少,根据给定的宽度(X 轴)和高度(Y 轴)参数
值 scale(2,4) 把宽度转换为原始尺寸的 2 倍,把高度转换为原始高度的 4 倍。
skew() 方法
transform:skew(y轴向x轴靠拢的度数,x轴向y轴靠拢的度数)
3D 转换
rotateX() 方法
通过 rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转。
注意:如果度数为正值,那么是后仰,如果是负值,是前顷。
rotateY() 旋转
通过 rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转。
注意:如果度数为正值,那么是往X轴正方向旋转,如果是负值,是往X轴负方向旋转。
这些属性,大家知道就行,用到时,再翻看。会不定期添加哦!