css3基础知识
复习一下css3一些常用的姿势
css3
- css3是css2的升级版本,主流浏览器已经支持大部分的功能了,ie10后也开始全面支持css3了
- css3前缀:在编写css3样式的时候,不同的浏览器可能需要不同的前缀,这是为了兼容各个版本的浏览器Chrome和Safari前缀为-webkit,Firefox为-moz,IE为-ms,Opera为-o
css3初级知识
- border-radius:圆角
- border-shadow:x轴偏移量 y轴偏移量 阴影模糊半径 阴影拓展半径 阴影颜色 投影方式 —盒子阴影,可以加多个阴影,通过逗号隔开
- text-shadow:x-offset y-offset blur(模糊程度) color
- 背景颜色渐变gradient
- 线性渐变 linear-gradient([direction],color[percent],color[percent],…)
- 径向渐变 radial-gradient(shape r at position,color[percent],color[percent],…)
其中shape可以为circle也可以为ellipse,position为圆心位置,r为半径,椭圆的时候该位置为x和y,为长轴和短轴
- word-wrap:normal|bread-word;—文字边界换行
- font-face:例子如下,其中引用多个不同格式的字体是为了兼容 有一个比较全的兼容版本如下
1
2
3
4
5
6
7
8@font-face{
font-family:'myFont';
src:url('sansation_Lifht.ttf'),
url('sansation_Lifht.eot') format('eot');
}
p{
font-family:'myFont';
}1
2
3
4
5
6
7
8@font-face{
font-family:'diyfont';
src:url('diyfont.eot')/*ie9+*/
src:url('diyfont.eot?#iefix') format('embedded-opentype'),/*ie6-ie8*/
url('diyfont.woff') format('woff'),/*chrome,firefox*/
url('diyfont.ttf') format('truetype'),/*chrome,firefox,opera,safari,android,ios4.2+*/
url('diyfont.svg#fontname') format('svg');/*ios4.1-*/
} - border-image:边框应用背景 如上,number为截取指定图片四周的宽度为border的背景填充部分,最后一个参数为展示方式,stretch为拉伸,repeat为平铺(从中间开始),round为铺满(中间的平铺,如果大于某个极限值的时候,就会进行复制,有点像响应式布局中的随宽度进行改变,像裂变一样),在计算的时候会把引用的图片切成九宫格,最后一个就为十字部分的展开方式,number为四个角的部分的宽和高
1
border-image:url(xxx.png) number stretch|repeat|round
- background-origin:border-box|padding-box|content-box; 背景图片的起始位置,默认从padding区域开始
- background-clip:border-box|padding-box|content-box|no-clip
其中webkit可以做文字的clip需要配合text-fill-color属性1
2
3
4
5div{
text-fill-color:-webkit-background-clip;
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;
} - background-size:auto|长度值|百分比|cover|contain
其中cover为铺满背景,超过部分截断,contain为尽量纯在一整张图片 — 设置背景图片大小
css3选择器
- 属性选择器
- E[att^=’val’] 选择匹配的元素E,E定义了属性att,以val开头
- E[att$=’val’] 选择匹配的元素E,E定义了属性att,以val结尾
- E[att*=’val’] 选择匹配的元素E,E定义了属性att,属性的任意位置出现了val
- 伪类选择器
- root 根标签选择器
- not 否定选择器
- empty 空标签选择器
- target 目标元素选择器,用来匹配location.hash选中的元素
- first-child|last-child|nth-child()|nth-last-child() 子元素选择器,如果当前位置元素不是前面所修饰的元素,无效(必须位置与元素相同)
- first-of-type|last-of-type|nth-of-type()|nth-last-of-type() 该种选择器与第5种的不同就是实在元素类型中位置为选中的元素
- only-child|only-of-type 这两个的区别于56的区别相同,是查找唯一子元素选择器
- enabled|disabled 可用|不可用的元素,如复选框等,可以通过伪类进行选择
- checked 选择框被选中的状态
- read-only|read-write 选中只读|非只读的元素,配合标签上的readonly使用
这些伪类选择器在使用的时候需要在前面加’:’
- 伪元素选择器
添加了first-letter first-line before after selection(匹配突出显示的文本),selection中有个属性user-select:none;就是无法被选中的 - 伪元素和伪类的区别
伪元素效果是需要通过添加一个实际的元素才能达到的
伪类则是选择一类,多个元素 - 条件选择
- > 直接子元素
- + 后面紧挨着的兄弟节点
- ~ 后面的兄弟节点
css3进阶
transform形状变换
- rotate() 旋转默认为z轴方向,有rotateX|Y|3d
- scale() 缩放,可以接收两个参数,为x轴和y轴方向上的缩放倍数,如果没有第二个参数,默认使用第一个参数,还可以分解成scaleX()/Y/Z,还有一个scale3d() 其中就可以填写xyz的缩放倍数
- skew() 扭曲,同scale一样,为两个参数,但是只能分解成skewX()/Y,在只有一个参数的时候y轴默认为0
- translate() 移动,相对于自身进行移动,默认有两个参数可以分解为translateX|Y|Z,还有translate3d()
- 特殊的是transform-origin 作用是变换圆点,默认为中央的位置,可以通过百分比,或者关键字进行修改
transition过渡动画
- 它是一个复合属性,有以下几个子属性
- transition-property 过渡的css属性
- transition-duration 过渡所需时间
- transition-timing-function 过渡函数
- transition-delay 延迟时间
animation动画
- 它也是一个复合属性,主要有以下的子元素
- animation-name 执行动画的keyframe名,其中keyframe如下定义,如果只有0%和100%两个关键帧,可以用from to 代替
1
2
3
4
5@keyframes move{
0%{...}
10%{...}
100%{...}
} - animation-duration 动画执行时间
- animation-timing-function 过渡函数速率
- animation-delay 延迟时间
- animation-iteration-count 定义播放次数
- animation-direction 定义播放方向 有normal(默认值)reverse(反向播放)alternate(奇数次正向,偶数次反向)alternate-reverse(奇数次反向,偶数次正向)
- animation-play-state 播放状态 running(播放)paused(暂停)
- animation-fill-mode 表示在结束时发生的操作 none(默认值)forwards(停留在最后关键帧的位置)backwards(开始的时候应用初始帧的位置)both(同时具有forwards和backwars效果)
columns多列布局
- 主要应用在文本的多列布局,类似报纸杂志的那种布局方式
- columns:[column-width] [column-count],也是复合属性,可以分解,column-width为每一类的宽度,根据容器宽度自适应(最小宽度);column-count为规定列数,不要两个一起使用
- column-gap 设置列与列之间的宽度,没有的时候会按浏览器的font-size来定
- column-rule 与border类似,是缝的样式,有width,style,color
- column-span 设置多列布局元素内的子元素,标题只有1|all两个可选的值,1为在第一列,all为在所有列的上面中间
弹性盒子flex布局
可以观看阮一峰大佬博客中关于弹性盒子的描述,非常详细,而且有图—阮一峰flex布局
- 设置方式 display:flex
- 在子元素上设置的属性
- flex-grow 根据设置的比例分配盒子剩余的空间
- flex-shrink 根据设置的比例承担超出盒子部分的大小
- flex-basis 伸缩基准值,和width一样,但是如果设置该属性,会覆盖width属性的值
- flex 前三个的复合体
- order 排序,从小到大排序
- align-self 对齐方式,允许单个子元素和其他的不同,可覆盖align-items属性,有以下的值可以填 auto|flex-start|flex-end|center|baseline|stretch auto表示继承父元素的align-items属性,如果没有父元素,等同于stretch
- 在父元素上设置的属性
- flex-direction 设置主轴方向 row|row-reverse|column|column-reverse
- flex-wrap 设置换行 nowrap|wrap|wrap-reverse
- flex-flow 是前两个的复合体
- justify-content 元素在主轴上的对齐方式 flex-start(默认值,左对齐)flex-end(右对齐)center(居中)space-between(两端对齐,项目之间的间隔相等)space-around(项目之间两侧的间隔相等)
- align-items 设置在侧轴上的对齐方式 flex-start|flex-end|center|baseline|stretch
- align-content 设置多根轴线的对齐方式 flex-start|flex-end|center|space-between|space-around|stretch