表现CSS
2020-04-29 15:52:28 10 举报
AI智能生成
个人前端学习
作者其他创作
大纲/内容
CSS3:级联样式表(层级样式表)
新增选择器。<br>权重:<br>行内(1000) > id(100) > 类,伪类(10) >元素 ,伪元素(1) > *(0)<br>
子元素选择器(直接后代选择器):父元素>子元素,选中直接后代。只会选中下一代不会选中更后代
兄弟元素选择器 :兄弟元素 + 兄弟元素,选中前一个兄弟元素遇到的第一个要找的兄弟元素,就是只改第一个兄弟
通用兄弟选择器:兄弟元素 ~ 兄弟元素,选中前一个兄的后面的所有要找的兄弟,就是改所有兄弟
伪类选择器:
动态伪类(锚点伪类、用户行为伪类):这些伪类并不存在于HTML中,只有当用户和网站交互的时候才能体现出来
a.锚点伪类 :link :visited
a:link {color: #FF0000} /* 未访问的链接 */
a:visited {color: #00FF00} /* 已访问的链接 */
b.用户行为伪类 :hover :active :focus
a:hover {color: #FF00FF} /* 当有鼠标悬停在链接上 */
a:active {color: #0000FF} /* 被选择的链接 */
a:focus {color: #0000FF} /* 获得焦点后的改变 */ <br>
UL元素状态伪类: IE9 以上才兼容
:enabled 可输入状态,选择器匹配每个已启用的元素(大多用在表单元素上)
:disabled 不可输入的,选择器匹配每个被禁用的元素(大多用在表单元素上)。
:checked 选中的,选择器匹配每个已被选中的 input 元素(只用于单选按钮和复选框)
css3结构类
:first-child 结构上第一个元素的子类元素
:last-child 结构上最后一个元素的子类元素
:nth-child 结构上第n个子类元素
:nth-child(n)参数:<br><br>1.n从0开始计算。<br><br>2.奇数:odd=2n+1、偶数:even=2n<br><br>3.也可以是3n+1表示相隔3被选中,以此类推。<br><br>4.当为n+数字,则表示从这个数值开始后面的所有都被选中。<br><br>
Element:nth-last-child(N)<br><br>概念<br><br>匹配属于其元素的第N个子元素的每个元素,不论元素的类型,从最后一个子元素开始计数。(从1开始计数)
Element:only-child(当它是独生子才生效)<br><br>概念<br><br>:only-child选择器匹配属于其父元素的唯一子元素的每个元素(唯一对应元素)<br><br>
Element:nth-of-type(N)<br><br>概念<br><br>:nth-of-type(N)选择器匹配属于父元素的特定类型的第N个子元素的每个元素<br>
Element:nth-last-of-type(N)<br><br>概念<br><br>匹配属于父元素的特定类型的第N个子元素的每个元素,从最后一个子元素开始计数<br>
Element:first-of-type<br><br>概念<br><br>:first-of-type选择器匹配属于其父元素的特定类型的首个子元素的每个元素<br>
Element:last-of-type<br><br>概念<br><br>:last-of-type选择器匹配属于其父元素的特定类型的最后一个子元素的每个元素<br>
Element:only-child(它是独生子才生效)<br><br>概念<br><br>:only-child选择器匹配属于其父元素的唯一子元素的每个元素(唯一对应元素)
Element:only-of-type (它是父元素的唯一类型才生效)<br>概念<br><br>:only-of-type选择器匹配属于其父元素的特定类型的唯一子元素的每个元素
:empty:匹配没有子元素(包括文本节点)、没有内容的每个元素
否定选择器:not(Element/Selecter)选择器匹配非指定元素/选择器的每个元素
伪元素<br><br>用于向某些选择器设置特殊效果<br>
::first-line 对元素的第一行文本进行格式化 ,只对块级元素起作用
::first-letter 向文本的首字母设置特殊样式,只能用于块级元素
::before 在元素的内容前面插入新内容,常用“content”配合使用
特点:1.第一个子元素,2.行级元素 3.内容通过content写入 4.标签中找不到对应的标签
::after <br><br>在元素的 内容后面插入新的内容,必须搭配 content 使用。 <br>
特性: 1.常用于清除浮动,给要清除浮动元素的父级元素设置。 2.插入小图标。 <br>
列如:div::after{ display: block; content:""; clear: both;}<br><br>清除浮动三个样式 缺一不可。
ELement::selection<br><br>概念<br><br>用于设置在浏览器中选中文本后的背景与前景色
属性选择器
1.选择所有带有attribute属性元素<br><br>element[attribute] <br><br>2.选择所有使用attribute="value"的元素<br><br>element[attribute="value"]<br><br>3.选择attribute属性包含单词“value”的元素<br><br>element[attribute~="value"](一般用于class类选择器 常用)<br><br>4.选择attribute属性值以“value”开头的所有元素<br><br>element[attribute^="value"]<br><br>5.选择attribute属性值以“value”结尾的所有元素<br><br>element[attribute$="value"]<br><br>6.选择attribute属性值包含"value"的所有元素<br><br>element[attribute*="value"] <br><br>(常用,只要包含"value"的都可以,例如<p class="twos"></p>,p[class*=s]{}也可以指定"twos",这里是"value"=s,"value"不再是单词,可以是单词里面的一个字母)<br><br>7.选择attribute属性值为“value”或以“value-”开头的元素<br><br>element[attribute|="value"] (常用于js中id选择器)
CSS3 圆角:<br><br>border-radius属性:一个最多可指定四个border-*-radius属性的 符合属性 ,这个属性允许你为元素添加圆角边框!
border-top-left-radius:定义了左上角的弧度
border-top-right-radius:定义了右上角的弧度
border-bottom-left-radius:定义了右下角的弧度
border-bottom-right-radius:定义了左下角的弧度
多值:<br><br>border-radius(四个值):左上角 右上角 右下角 左下角<br><br>border-radius(三个值):左上角 右上角和左下角 右下角<br><br>border-radius(两个值):左上角和右下角 右上角和左下角<br><br>border-radius(一个值):四个圆角值相同
border-radius属性一个角分为水平方向和垂直方向。所以当使用boder-radius属性合在一起写的时候,一个角的两个方向都包括了。如果要设置不一样的值,需要用/隔开。
CSS3盒阴影 box-shadow
h-shadow(水平位置偏移量)允许负值。必写;
v-shadow(处置位置偏移量)允许负值。必写;<br>
blur(模糊距离)可选;
spread(阴影尺寸)可选;
color(阴影颜色)可选;
inset(内部阴影)可选;扩展属性,正值缩小,负值增大
box-shadow: 10px(横向,正值往右,负值往左) 10px(纵向,正值往下,负值网上) 10px(模糊,从边框到内容,完成渐变模糊) 10px(扩展,四周边界往外扩展10px) yellow(阴影颜色)
可以写内外两个阴影用逗号隔开
---- CSS3边界图片 ----<br><br>border-image
border-image-source属性<br><br>border-image-source属性指定要使用的图像,而不是由border-style属性设置的边框样式<br><br>语法<br><br>border-image-source:none;<br><br>border-image-source:url("...");
border-image-slice属性<br><br>border-image-slice属性指定图像的边界向内偏移<br><br>语法<br><br>border-image-slice:number | % | fill;
border-image-width属性<br><br>brder-image-width属性指定图像边界的宽度<br><br>语法<br><br>border-image-width:number | % | auto;
border-image-outset属性<br><br>border-image-outset用于指定在边框外部绘制border-image-area的量<br><br>语法<br><br>border-image-outset:length | number;
border-image-repeat属性<br><br>该属性用于图像边界是否重复(repeated)、拉伸(stretched)或铺满(rounded)<br><br>语法<br><br>border-image-repeat:stretch | repeat | round | initial | inherit;
CSS3背景图像区域 <br>
<br>borderground-clip属性:指背景绘制区域
border-box:背景被裁减到边框盒
padding-box:背景被裁剪到内边距框
content-box:背景被裁剪到内容框
transparent,透明
*backgroung-origin设置元素背景图片的原始起始位置<br><br>*这个属性要配合background-position属性使用,才会在水平和垂直方向进行偏移<br>
background-origin:content-box;背景图像相对于内容框来定位。
background-origin:padding-box;背景图片相对于内边距啦定位。
background-origin:border-box;背景图片相对于边框来定位。
背景图像大小<br><br>background-size:length | percentage | cover | contain;
cover:即将背景图片等比缩放以填满整个容器,做到不留白
contain:即将背景图片等比缩放至某一边紧贴容器边缘为止,要么宽度100%,要么高度100%,取决于图片大小
---css3多重背景图像---<br><br>css允许设置使用多个背景图像<br><br>background-image:url(2),url(1);<br><br>元素引用多个背景图片,前面图片依次覆盖后面图
CSS3 背景属性整合<br><br>背景缩写属性可以在一个声明中设置所有背景属性
语法:<br><br>background:<br><br>1、color 颜色<br><br>2、position 位置<br><br>3、size 大小<br><br>4、repeat 重复与否<br><br>5、origin 定位<br><br>6、clip 区域<br><br>7、attachment 状态是否滚屏<br><br>8、image url
CSS3渐变
CSS3线性渐变(开头记得-webkit)
线性渐变-从上到下(默认)<br><br>background: linear-gradient(color-stop1,color-stop2,...);
.线性渐变-从左到右(direction方向:left/right):<br><br>background: -webkit-linear-gradient(begin-direction,color-stop1,color-stop2,...);<br><br>background: -moz-linear-gradient(end-direction,color-stop1,color-stop2,...);<br><br>background: -o-linear-gradient(end-direction,color-stop1,color-stop2,...);<br><br>标准写法background: linear-gradient(to end-direction,color-stop1,color-stop2,...);<br>
.线性渐变-对角(level 水平方向:left/right,vertical竖直方向:top/bottom):<br><br>background: -webkit-linear-gradient(begin-level begin-vertical,color-stop1,color-stop2,...);<br><br>background: -moz-linear-gradient(end-level end-vertical,color-stop1,color-stop2,...);<br><br>background: -o-linear-gradient(end-level end-vertical,color-stop1,color-stop2,...);<br><br>标准写法background: linear-gradient(to end-level end-vertical,color-stop1,color-stop2,...);<br>
线性渐变-使用角度(angle角度:left/right):<br><br>background: linear-gradient(angle,color-stop1,color-stop2,...);<br><br>角度说明:0deg将创建一个从上到下的渐变,90deg将创建一个从左到右的渐变。
linear-gradient:角度<br><br>-webkit内核浏览器使用角度规则与标准不同。<br><br>-webkit内核浏览器开始角度(0度)在水平线方向,以逆时针方向。(上图)<br><br>标准的开始角度(0度)则是垂直线方向,以顺时针方向。(下图)主要区别在0度和90度上
-颜色结点<br><br>语法<br><br>background:linear-gradient(color1 length percentage,color2 length percentage,...);<br><br>用百分比控制颜色的结点<br><br>1.最后一个不写,默认100%;<br><br>2.第一个不写,默认0%;
重复线性渐变 repeating-linear-gradient(color length/percent,color)。就是不要写满100%
css3径向渐变
径向渐变-设置形状<br><br>background:radial-gradient(shape,color-stop1,color-stop2,...);<br><br>形状:circle,ellipse(,默认椭圆)
径向渐变-尺寸大小关键字<br><br>background:radial-gradient(size,color-stop1,color-stop2,...);<br><br>形状和尺寸不用逗号“,”隔开<br><br>关键字说明:<br><br>closest-side:最近边<br><br>farthest-side:最远边<br><br>closest-corner:最近角<br><br>farthest-corner:最远角
CSS 径向渐变--重复渐变(不要写满100%)<br><br>语法:<br><br>background:repeating-radial-gradient(color1 length | percentage,<br><br>color2 length | percentage,
其他渐变
---- IE浏览器渐变(IE6-IE8) ----<br><br>语法:<br><br>filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='startColor',endColorstr='endColor',GradientType=0);<br><br>*startColor和endColor必须为十六进制<br><br>*GradientType为渐变类型,可以是0、1、2三种渐变
CSS3文本属性
CSS3文本阴影
语法:<br><br>text-sgadow:h-shadow v-shadow blur color;<br><br>h-shadow:第一个属性值,表示水平阴影的位置,可以是负值<br><br>v-shadow:第二个属性值,表示垂直阴影的位置,可以是负值<br><br>blur:第三个属性值,表示模糊的距离,设置为负值时,没有模糊的效果<br><br>color:第四个属性值,表示阴影的颜色,也可以用rgba设置为透明颜色
CSS3换行
word-break属性<br><br>规定自动换行的处理方法<br><br>word-break:normal | break-all | keep-all
normal:正常左边对齐
break-all:表示只要到该换行的地方都换行(强制换行)
keep-all表示在半角空格或连字符地方换行。(与normall效果差不多)
word-wrap属性
word-wrap属性<br><br>允许长单词,URL地址换行到下一行。<br><br>word-wrap:normal | break-word
normall 默认值,文本自动换行。
break-word 断开
CSS3新的文本属性
text-align-last属性<br><br>规定如何对齐文本的最后一行<br><br>text-align-last:auto | left | right | center | justify | start | end | initial | inherit
前提!!!text-overflow属性起作用需设置overflow:hidden<br><br>text-overflow属性<br><br>规定当文本溢出包含元素时发生时的事情<br><br>text-overflow:clip(溢出裁剪)|ellipsis(溢出显示省略号)|string(可自行设置显示效果,只有火狐兼容);<br><br><br><br>
CSS3字体
@font-face的语法规则<br><br>网页嵌入特殊字体,网页加载的同时,也加载字体样式。<br><br>@font-face{<br><br>font-family:<字体名称><br><br>src:<字体路径>(可添加多个)<br><br>font-weight<字体粗细>(可选填)<br><br>font-style<字体样式>(可选填)<br><br>}
CSS3 @font-face的取值说明<br><br>YourWebFontName:自定义的字体名称,他将被引用到web元素中的font-family<br><br>source:自定义的字体的存放路径,可以是相对路径也可以是绝对路径(建议相对路径)<br><br>format:自定义字体的格式,主要用来帮助浏览器识别<br><br>weight和style:weight定义字体是否为粗体,style主要定义字体样式,如斜体
format类型
1、TrueType(.ttf)格式:<br><br>.ttf字体是Windows和Mac的最常见的字体,是一种RAW(写入式)格式,因此它不为网站优化。 <br>
2、OpenType(.otf)格式:<br><br>.otf字体被认为是一种原始的字体格式,其内置在TrueType的基础上,所以也提供了更多的功能。(IE浏览器不兼容) <br>
3、(最好的)Web Open Font Format(.woff)格式:<br><br>.woff字体是Web字体中最佳格式,它是一个开放的TrueType/OpenType的压缩版,同时也支持元数据包的分离 <br>
4、Embedded Open Type(.eot)格式:<br><br>.eot字体是IE专用字体,可以从TrueType创建此格式字体<br><br>兼容性:IE4+ <br>
5、SVG(.svg)格式:<br><br>.svg字体是基于SVG字体渲染的一种格式
css3 @font-face字体通用模板:<br><br>@font-face {<br><br>font-family: 'YourWebFontName';/* 给字体起的名字 */<br><br>src: url("YourWebFontName.eot");/* 兼容IE9以上的浏览器 */<br><br>src: url("YourWebFontName.eot?#iefix")format("embedded-opentype"),/* 兼容IE6-IE8浏览器 */<br><br>url("YourWebFontName.ttf")format("truetype"),/* 兼容手机端,Safari,Android,iOS*/<br><br>url("YourWebFontName.woff")format("woff"),/* 兼容所有浏览器 */<br><br>url("YourWebFontName.svg#YourWebFontName")format("svg");;/* 针对IOS开发 */<br><br>}
CSS3 转换
CSS3 2D转换
CSS3 Transform
rotate()----->旋转<br><br>通过指定的角度参数对原元素指定一个2D rotation(2D旋转)。<br><br>语法:transform:rotate(<angle>);<br><br>参数说明:angle指旋转角度,正数表示顺时针旋转,负数表示逆时针旋转。
移动 translate<br>value值可为具体值px、em、百分比等。百分比指的是自身<br>translate()方法,根据向右(X轴)和顶部向下(Y轴)位置给定的参数,从当前元素位置移动。
translateX(x)仅水平方向移动(X轴移动);
translateY(Y)仅垂直方向移动(Y轴移动);
translate(x,y)同时移动
transform:translate(x,y)中,y值为可选参数。<br><br>若不写y值则默认为0,表示在X轴平移。<br><br>x值为必写值,若只想在y轴垂直方向移动,则需写x=0.
scale缩放<br><br>transform:scale(number)---整体缩放倍数(缩小、扩大),1为基准100%,不需要单位
transform:scaleX(x)--坐标原点在水平方向中心点上
transform:scaleY(y)--坐标原点在垂直方向中心点上
transform:scale(x,y)--坐标原点在图片的正中心<br><br>y为可选值,若y不写则默认为与x值相同,保证图片等比例缩小或放大,不会变形。不需要单位
扭曲skew<br>中心点为几何中心。<br>transform : skew / skewX / skewY(角度)
skewX(deg)水平方向:角度正值--逆时针斜切,角度负值--顺时针斜切。<br><br>角度为:底边与高的夹角。
skewY(deg):角度正值--顺时针斜切,角度负值--逆时针斜切<br><br>角度为:底边与宽的夹角。
skew(x,y):y为选填,当y值不填,默认为0。x必填。<br><br>有效值为:-90度到正的90度。
CSS3 3D转换
CSS3 Transform
3D转换角度--transform:rotate
rotateX(deg)--围绕着几何中心X轴旋转
rotateY(deg)--围绕着几何中心Y轴旋转
rotateZ(deg)--围绕着几何中心Z轴旋转(效果类似于rotate() )
transform:rotate(x,y,z,角度)--x,y,z表示旋转的方向,第四个参数表示旋转的角度,参数不允许省略。rotate(1,1,1,45deg)三个叠加效果。x,y,z值在0~1,0表示此方向不旋转,1表示旋转45deg。
4个数值其中某个为负值,表示逆时针旋转
CSS3的translate3d()----->3d移动<br><br>
(1)transform:translateZ(<translation-value>);----->指定对象Z轴的平移(常用于遮罩里面);
2)transform:translate3d(x,y,z);----->指定对象的3D位移;<br><br>参数说明:第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略。
3D缩放scale
(1)transform:scaleZ(<number>);----->指定对象Z轴的缩放;<br><br>参数说明:参数对应Z轴,不允许省略。
2)transform:scale3d(x,y,z);----->指定对象的3D缩放;<br><br>参数说明:第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略。
CSS3 Transform与坐标系统
其实就是更改transform的中心点
transform-origin:x y z; 更改转换元素的参考中心点;可以省略z,表示2D坐标。<br><br>xy可以用关键词来标注,如left和right等。
CSS3矩阵
矩阵书写:matrix() 是元素2D平面的移动变换,2D变换矩阵为3*3<br><br>matrix3d()是元素3D的移动变换,3D变换则是4*4的矩阵<br><br>transform:matrix(a,b,c,d,tx,ty); 注意书写方向是竖直方向
假设x=0,y=0,transform:matrix(1,0,0,1,x,y)等同于translate(x,y)
矩阵matrix缩放:<br><br>transform:matrix(sx,0,0,sy,0,0)——等同于scale(sx,sy);
矩阵matrix旋转:<br><br>transform:matrix(cos0,sin0,-sin0,cos0,0,0)——rotate(0deg);
矩阵matrix拉伸:<br><br>transform:matrix(1,tan0y,tan0x,1,0,0)——skew(0xdeg,0ydeg);
transform:matrix3d(sx,sy,sz,)等同于scale3d中的sx,sy,sz,其他没任何区别~~~~~
CSS3 扩展属性
transform-style属性:<br><br>指定嵌套元素是怎样在三维空间中呈现。
语法:<br><br>transform-style: flat|preserve-3d;<br><br>*flat为默认值;preserve-3d为3D环绕效果;该属性给父级添加。
给父元素加上transform-style:preserve-3d就能实现3d环绕
perspective:number<br><br>观察视角与z平面的距离,透视效果
perspective:origin属性<br><br>默认值:perspective-origin :50% 50%;<br><br>观察的位置,类似主视图俯视图左视图切换视角<br><br>若值为bottom,表示从下往上看<br><br>center表示平视<br><br>若值为top,表示从上往下看
backface-visibility : visible / hidden<br><br>指定元素背面面向客户时内容是否可见,默认为可见
CSS3过渡(用来写动画)
过渡(transition)<br><br>允许css的属性值在一定的时间内平滑地过渡;<br><br>在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑的以动画效果改变css的属性值。
语法<br><br>transition-property:none | all | property(具体名称)<br><br>参数说明:<br><br>none (没有属性改变)<br><br>all(所有属性改变),默认值<br><br>property(元素属性名)
--- CSS3过渡(transition)属性 ----(必须有的!过渡动画不可缺少的属性)<br><br>transition-duration(过渡时间)<br><br>属性:检索或设置对象过渡的持续时间。<br><br>语法:transition-duration: time;<br><br>参数说明:<br><br>time----->规定完成过渡效果需要花费的时间(以秒或毫秒计),默认值是0s。
transition-timing-function属性<br><br>— 检索或设置对象中过渡额动画类型。<br><br>语法:<br><br>transition-timing-function:ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end | steps-(<integer>[,[start | end ] ] >) | cubic-bezier(<number>,<number>,<number>,<number>);<br><br>只能使用一个属性。
- linear:线性过渡。等同于贝塞尔曲线(0.0,0.0,1.0,1.0)【匀速运动】<br><br>- ease:平滑过渡。等同于贝塞尔曲线(0.25,0.1,0.25,0.1)【结束比较生硬】<br><br>- ease-in:由慢到快。等同于贝塞尔曲线(0.42,0.0,1.0,1.0)【结束比较生硬】<br><br>- ease-out:由快到慢。等同于贝塞尔曲线(0.0,0.0,0.58,1.0)<br><br>-ease-in-out由慢到快再到慢。等同于贝塞尔曲线(0.42,0.0,0.58,1.0)【比较人性化】<br><br>- step-start:等同于steps(1,start)<br><br>- step-end:等同于steps(1,end)
transition-delay(延迟)属性<br>属性:检索或设置对象延迟过渡的时间。<br><br>语法:transition-delay: time;<br><br>参数说明:<br><br>指定秒或毫秒数之前要等待切换开始,单位为秒(s),默认值为0 <br>
--- CSS3过渡(transition)属性简写 ----<br><br>transition属性:复合属性,检索或设置对象变换时的过渡。<br><br>语法:transition: property duration timing-function delay;<br><br>*语法顺序不能错
css3的animation和transition有什么区别<br><br>1、animation多两个参数 循环和动画方式<br><br>2、transition 不能自行触发,通过hover等动作,或者结合js进行触发。animation可以自行运行<br><br>3、transition可控性相对较弱,只能够指定起始和结束的状态,而animation可以定义多个关键帧<br><br>4、动画在运行结束之后,需要回到初始状态<br><br>5、transition的作用,可以用一句话来概括“平滑改变CSS值”<br><br>
CSS3 动画
引入动画名:@keyframes 动画名
动画属性
animation-name属性:检索或设置对象所应用的动画名称<br><br>语法:<br><br>animation-name:keyframename | none(默认);
animationname 必需。定义动画的名称。<br><br>keyframes-selector <br><br>必需。动画时长的百分比。<br><br>合法的值:<br><br>0-100%<br><br>from(与 0% 相同)<br><br>to(与 100% 相同)<br><br>css-styles 必需。一个或多个合法的 CSS 样式属性。
animation-duration<br><br>属性:检索或设置对象动画的持续时间。<br><br>语法:animation-duration: time;<br><br>参数说明:<br><br>time----->指定动画播放完成花费的时间。默认值为0,意味着没有动画效果。
animation-timing-function 动画过渡属性参数<br><br>1. linear 线性过渡<br><br>2. ease 平滑过渡<br><br>3. ease-in 由慢到快<br><br>4. ease-out 由快到慢<br><br>5. ease-in-out 由慢到快,再慢。
animation-delay<br><br>属性:检索或设置对象动画的延迟时间。<br><br>语法:animation-delay: time;<br><br>参数说明:<br><br>可选。定义动画开始前等待的时间,以秒或毫秒计算。默认值为0。
annimation-delay是动画之外的属性,不管设置多少秒,都不会影响动画本身的循环。
CSS3 动画循环次数<br><br>animation-iteration-count : infinite(无限)/ number ( 默认为1 )。<br><br>例子中动画10s后接着运行,而非每个循环完毕后,停顿两秒。
animation-direction属性<br><br>检索或设置动画在循环中是否反向运动。<br><br>语法:<br><br>animation-direction:normal | reverse | alternate | alternate-reverse | initial | inherit; <br>
参数说明:<br><br>normal:正常方向;<br><br>reverse:反方向运行;<br><br>alternate:动画先正常运行再反方向运行,并持续交替运行;<br><br>alternate-reverse:动画先反方向运行再正方向运行,并持续交替运行。<br><br>【后两个值必须配合循环属性才能实现效果】
animation-fill-mode属性<br><br>规定当动画不播放时(当动画完成或当动画有延迟为开始播放时),要应用到元素的样式。<br><br>语法:<br><br>animation-fill-mode:none | forwards | backwards | both | initial | inherit;
参数说明:<br><br>none:默认值。不设置对象动画之外的状态;<br><br>forwards:设置对象状态为动画结束时的状态;<br><br>backwards:设置对象状态为动画开始时的状态;<br><br>both:设置对象状态为动画结束或开始的状态。
animation-play-state<br><br>属性:指定动画是否正在运行或已暂停。<br><br>语法:animation-play-state: paused丨running;
paused----->指定暂停动画。<br><br>running----->默认值,指定正在运行的动画。
animation 整合写法 : <br><br>1. 动画名称(name),<br><br>2. 持续时间(duration), <br><br>3.过渡方式(timing-function) <br><br>4. 动画延时(delay) <br><br>6. 动画反向运动(iteration-count )<br><br>7. 动画不播放时应用到的样式(direction )<br><br>8.动画 运行 或 暂停(fill-mode play-staye );<br><br>备注:name和duration必须有,如果里面有两个时间,第一个时间默认为duration,除name为第一个,其余属性不要求顺序
动画性能优化
--- CSS3动画(will-change)原理 ----<br><br>怎么样让动画显示的更流畅:<br><br>1、position-fixed 代替 background-attachment<br><br>2、带图片的元素放在伪元素中<br><br>3、巧用will-change<br><br>-------------------------------------------------<br><br>目标:增强页面渲染性能
CPU和GPU<br><br>CPU即中央处理器,解释计算机指令以及处理计算机软件中的数据。<br><br>GPU即图形处理器,专门处理和绘制图形相关的硬件。GPU是专为执行复杂的数学和几何计算而设计的,有了它,CPU就从图像处理的任务中解放出来,可以执行其他更多的系统任务。
现状:<br><br>CSS的动画、变形、渐变并不会自动触发GPU加速,而是使用浏览器稍慢的软件渲染引擎。<br><br>在transition,transform和anumation的世界里,应该卸载进程到GPU以加快速度。<br><br>只有3D变形会有自己的layer,2D变形不会。
硬件加速:<br><br>在计算机中把计算量非常大的工作分配给专门的硬件来处理,减轻CPU的工作量。
translateZ()(or translate3d()) Hack<br><br>为元素添加没有变化的3D变形,骗取浏览器触发硬件加速。
代价:<br><br>这种情况通过向它自己的层叠加元素,占用PAM和GPU存储空间。
--- CSS3动画(will-change)应用 ----<br><br>will-change:<br><br>属性:提前通知浏览器元素将要做什么动画,让浏览器提前准备合适的优化设置。<br><br>语法:will-chang: auto | scroll-position | contents | <custom-ident> | <animateable-feature>;
关键词说明:<br><br>auto:此关键字表示没有特定的意图,适用于它通常所做的任何启发式和优化。<br><br>scroll-position:表示将要改变元素的滚动位置。<br><br>contents:表示将要改变元素的内容。<br><br><custom-ident>:明确指定将要改变的属性与给定的名称。<br><br><animateable-feature>:可动画的一些特征值,比如left、top、margin等。<br><br><br>!!!使用注意(勿滥用、提前声明、remove)
CSS变量与继承
http://file.mukewang.com/class/assist/276/3661251/CSS3%E6%A1%88%E4%BE%8B%E6%95%99%E8%BE%85.pdf
CSS:层叠样式表。网页的样式,对页面美化<br>
基本写法和语法。优先级:行内样式>内部样式>外部样式 外部样式和链入外部样式依照先后顺序来看。总之就是权值相同,就近原则;权值不同,哪个权值高,就用哪个<br>
行内样式: style="color:red",优先级最高<br>
内部样式:在head内 <style type="text/css">h1{font-size:20px; color:red}</style>
链入外部样式:在head内使用<link ref="stylesheet" href="css.css" type="text/css"/>。页面加载同时会加载样式
导入外部样式: 在style标签内@import "css.css"或者url(css.css)。页面加载后才加载样式<br>
权值和选择器<br>
(权重值为0),通配选择器 ,* {},所有的标签元素<br>
(权重值1),标签选择器 , 标签名{} ,所有对应标签
(权重值10),class选择器, .class名{} ,找到所有拥有该class值的标签
(权重值100),id选择器,#id值,找到所有id对应的标签。同一个html里id是唯一的不能相同
(权重值1000),内联样式,写在标签的style属性里
(权重值无穷大)!important,描述在某个CSS样式属性值后面
后代选择器, 选择器1 选择器2{样式描述},中间用空格隔开
-群组选择器:集体统一设置样式。选择器之间用逗号隔开。标签选择器,类选择器,ID选择器都适用
文本相关CSS
color颜色。颜色单词,#色号,rgb
text-align。设置文本水平对齐方式,只对块级元素生效。属性center/left/right/justify。justify 两端对齐
line-height设置行高。Xpx,Xem,一般默认16px
white-space设置是换行。nowarp不换行,normal正常
overflow文本溢出隐藏。属性hidden隐藏
text-overflow隐藏样式。属性ellipsis省略号
text-spacing设置字间距。Xpx
vertical-align,运用到行内标签和单元格元素起作用,默认值是baseline。
baseline (基线对齐)默认值
middle(中线对齐)
sub(上标)
super(下标)
top(行元素顶端对齐)
bottom(行元素底端对齐)
text-top(文字顶端对齐)
text-bottom(文字底端对齐)
长度 | 百分比 (+上移 -下移)
文本样式其他属性
word-spacing:设置元素内单词之间间距,单词的判断以空格为准
letter-spacing:设置元素内字母之间间距
text-transform设置英文大小写。属性capitalize首字母大写,lowercase小写,uppercase大写,none无效果
text-decoration设置删除线。属性underline上划线 | overline下划线 | line-though贯穿线 | blink闪烁效果 none没有任何效果|<br>
段落首行缩进:text-indent:,单位1em为1字符
字体相关CSS
font-size字体大小,一般最小为12px,默认为16px。1.5em就是父元素的1.5倍,larger就是比父元素大
font-family,字体类型,多个字体则用逗号隔开
font-weight,控制加粗的,norml和bold 和bolder和lighter更细,数值可以100-1000,400是normal。700是bold<br>
font-style,italic倾斜,oblique倾斜,normal不倾斜
font-variant(字体变形):<br><br>normal;(默认)<br><br>small-caps;(将小写英文字母转换为小型的大写字母)
列表相关CSS
list-style:none去除列表前面的点
list-style-type规定点的类型,有circle空心圆,desc实心圆点
list-style-image点的类型变成图片,用url指定
list-style-position点放在外面还是里面
轮廓,边框,阴影CSS
border-collapse表格风格效果。属性collapse合并,separate分离
vertical-align单元格垂直方向,top/middle/bottom
outline轮廓。outline-width,outline-color,outline-style
box-shadow边框阴影。六个参数:横向偏移 纵向偏移 阴影模糊距离 阴影大小 颜色 inset或者outset阴影,可以写内外两个阴影用逗号隔开
display属性控制内容展示,隐藏起来则不占位置
none不展示
display:block块元素,宽高有效
display:inline行内元素,宽高无效
display:inline-block行内块元素,宽高有效
visible是否隐藏:visible/hidden,只是看不见,但是还占位置
opacity透明度:0-1
伪类<br>
伪类
:link未访问的链接
:hover鼠标悬停的时候
:active鼠标点击的时候
:visited访问过的链接
:link > :visited > :hover > :active<br><br>说明:<br><br>1.a:hover 必须置于 a:link和a:visited之后,才有效<br><br>2.a:active必须置于a:hover之后,才有效<br><br>3.伪类名称对大小写不敏感
盒子模型
border边框
多边定义
值
宽度: x px
类型:solid实线,dotted点,dashed虚线
颜色。单词,#,rgb(r,g,b)
单边定义
border-left:特指左边的边,border-top:特指上面的边
设置元素边框颜色<br><br>border-color:颜色 | transparent
border-style:none|solid实线|dashed虚线|dotted点状|double双边|等等
可以四个不同方面来表示(上、下、左、右)<br><br>表示:<br><br>1) border-[left | right | top | bottom]-width<br><br>2)border-[left | right | top | bottom]-color<br><br>3)border-[left | right | top | bottom]-style
宽度
宽度<br><br>width:长度值|百分比|auto<br><br>最大宽度<br><br>max-width:长度值|百分比|auto<br><br>最小宽度<br><br>min-width:长度值|百分比|auto
高度
height:长度值|百分比|auto<br><br>max-height:长度值|百分比|auto<br><br>min-height:长度值|百分比|auto
可以设置宽高的元素
1、块级元素
2.替换元素<br><br>浏览器根据其标签的元素与属性来判断显示的具体内容<br><br><img>、<input>、<textarea>等
内边距padding
padding填充属性(内边距)<br><br>设置元素的内容与边框之间的距离(内边距或填充),分四个方向(上,右,下,左)<br><br>1.padding-top:长度值 | 百分比<br><br>2.padding-right:长度值 | 百分比<br><br>3.padding-bottom:长度值 | 百分比<br><br>4.padding-left:长度值 | 百分比
内边距属性缩写<br><br>1.padding:值1;<br><br>2.padding:值1 值2;(上下=值1,左右=值2)<br><br>3.padding:值1 值2 值3 (上=值1 左右=值2 下=值3)<br><br>4.padding:值1 值2 值3 值4(上=值1 右=值2 下=值3 左=值4
外边距margin
设置元素与元素之间的距离(外边距),四个方向(上,右,下,左)<br><br>1.margin-top:长度值 | 百分比 | auto<br><br>2.margin-right:长度值 | 百分比 | auto<br><br>3.margin-botton:长度值 | 百分比 | auto<br><br>4.margin-left:长度值 | 百分比 | auto
外边距缩写<br><br>1.margin:值1;(四个方向都为值1)<br><br>2.margin:值1 值2;(上下=值1,左右=值2)<br><br>3.margin:值1 值2 值3 (上=值1 左右=值2 下=值3)<br><br>4.margin:值1 值2 值3 值4(上=值1 右=值2 下=值3 左=值4)
!!!!!!垂直方向,两个相邻元素都设置外边距,外边距会发生合并。合并后外边距高度=两个发生合并外边距的高度中最大值
盒子模型计算<br><br>1)标准盒子模型<br><br>1.盒子在页面中所占的宽度是由左边距+左边框+左填充+内容宽度+右填充+右边框+右边距组成<br><br>2.盒子在页面中占据的高度是由上边距+上边框+上填充+内容高度+下填充+下边框+下边距组成
display属性
inline<br><br>元素将显示为内联元素,元素前后没有换行符
block<br><br>元素将显示为块级元素,元素前后会带有换行符
inline-block<br><br>行内块元素,元素呈现为inline,具有块级相应特性
none<br><br>此元素不会被显示
行内元素之间的缝隙如何解决??????<br><br>1)标签之间不添加任何换行或空格<br><br>2)给它一个父元素,设置父元素的style:font-size:0px,并给子元素单独设置字体大小
背景样式
背景颜色background-color:颜色|transparent(默认)<br><br>1.transparent是全透明黑色(black)的速记法,类似rgba(0,0,0,0)这样的值<br><br>2.颜色值(颜色名 | RGB | 十六进制)<br><br>3.背景区包括内容、内边距(padding)和边框、不包含外边距(margin)<br><br>4.如果不给边框设置颜色,那边框颜色默认=文本的颜色
用图片填充背景background-image:URL | none<br><br>1.URL地址可以是相对地址也可以是绝对地址<br><br>2.元素的背景占据了元素的全部尺寸,包括内边距和边框,但不包括外边框<br><br>3.默认地,背景图像位于元素的左上角,并在水平和垂直方向上重复
背景图片重复:background-repeat 是设置背景图片的重复方式<br><br>repeat是默认的重复,全部重复;<br><br>no-repeat是不重复;<br><br>repeat-x是水平重复,repeat-y是垂直重复
-----背景图片定位-----<br><br>background-position:百分比|值 top|right|bottom|left|center
background-position:百分比|值 top|right|bottom|left|center<br><br>-值:1.长度值(x y)第一个值水平位置,第二个值垂直位置,左上角0 0<br><br>注:只写一个参数的话,第二个默认为居中;<br><br>2.百分比(x%y%)第一个值水平位置的百分比,第二个值垂直位置百分比<br><br>左上角0%0%,右下角100%100%。如果仅规定了一个值,另一个值将是50%。<br><br>注:只写一个参数,第二个默认居中;<br><br>3.top:顶部显示,相当于垂直方向0;只有一个参数的话,第二个默认居中;<br><br>4.right:右边显示,相当于水平方向100%;只有一个参数的话,第二个默认居中;<br><br>5.left:左边显示,相当于水平方向0;只有一个参数的话,第二个默认居中;<br><br>6.bottom:底部显示,相当于垂直方向100%;只有一个参数的话,第二个默认居中;<br><br>7.center:居中显示,相当于水平方向50%或者垂直方向50%;水平、垂直方向都居中
设置元素的背景图片的显示方式<br><br>background-attachment:scroll | fixed
scroll:默认值,背景图片随滚动条滚动【即一开始图片在整个页面什么地方,滚动条滚动时它还是在那个地方】<br><br>fixed:当页面的其余部分滚动时,背景图片不会移动【即一开始图片在窗口什么地方,滚动条滚动时,图片还在窗口的什么地方,也就是其余部分滚动时图片不会移动】
列表样式
无序列表 list-style-type<br><br>none无标记 | disc 实心的圆点 | circle空心的圆点 | square 实心的方块
有序列表 list-style-type<br><br>none无标记 | decimal 从1开始的整数 | lower-roman小写罗马数字 | upper-roman大写罗马数字 | lower-alpha小写英文字母 | upper-alpha大写英文字母|hiragana 平假名
【list-style-image】使用图片来设置列表项的标记<br><br>list-style-image:url(.......)或者none
list-style-position:inside | outside<br><br>inside:列表项目标记位置在文本以内,且环绕文本根据标记对齐<br><br>outside:默认值,列表项目标记放置在文本以外,且环绕文本不根据标记对齐
列表样式缩写:list-style-type<br><br>list-style-position<br><br>list-style-image<br><br>说明 1.值之间用空格分隔<br><br>2.顺序不固定<br><br>3.list-style-image会覆盖list-style-type的设置
浮动
CSS定位机制<br><br>普通流(标准流) 浮动 绝对定位<br><br>普通流(标准流):<br><br>默认状态,元素自动从左往右,从上往下的排列 <br>
css float(浮动)的基础知识<br><br>基本语法:<br><br>float:left 靠左浮动<br><br>float:right 靠右浮动<br><br>float:none 不使用浮动
第一个浮动的盒子会根据 父元素进行排列,之后的盒子当找到前一个浮动元素时就会停下。<br><br>给元素添加上浮动之后,会脱离文档流。之后的元素会占用浮动div 的位置<br><br>-----使用浮动后产生的问题-----<br><br>-浮动溢出:元素使用浮动后会脱离普通流,出现“高度塌陷”;
clear:left左侧抗浮动,只影响自身,不影响其他相邻元素<br><br>clear:right右侧抗浮动,只影响自身,不影响其他相邻元素<br><br>clear:both 左右两侧抗浮动,只影响自身,不影响其他相邻元素
清除浮动的方法:<br><br>第一种:浮动元素后边使用一个空元素<br><br><div class="clear"></div><br><br>clear:both;<br><br>第二种 给浮动元素的容器(父元素)添加overflow:hidden;可以再写zoom:1来兼容低版本的IE<br><br>第三种:使用css3的:after伪类、<br><br>.class名:after{<br><br>content:".";<br><br>display:block;<br><br>height:0;<br><br>visibility:hidden;<br><br>clear:both;<br><br>}
position属性
static(静态定位 常规定位 自然定位)
relative 相对定位<br><br>1)相对自己常规流的位置进行定位,top/right/bottom/left。<br><br>2)自己原来的常规流位置保留,不会脱离文档流<br><br>3)任何元素都可以设置为relative,它的绝对定位的后代相对它进行绝对定位
absolute 绝对定位<br><br>1)脱离常规流<br><br>2)父元素设置为相对定位relative 子元素设置为绝对定位absolute,子元素的位置可以根据父元素定位。如果没有最近position为relative的祖先元素,默认为body。<br><br>3)当margin为auto auto时,lrtb如果设置为0,元素居中显示。lrtb如果设置为auto,元素将被打回原形。 <br>
fixed 固定定位<br><br>1)跟absolute有啥区别?相对于谁做绝对定位<br><br>2)不会 随着窗口滚动而滚动。<br><br>3)继承absolute特点
-position:sticky<br><br>磁贴定位|粘性定位|吸附定位<br><br>作用:relactive与fixed的完美结合,制造出吸附效果<br><br>特点:(1)如果产生偏移,原位置还会在常规流中<br><br>(2)如果他的最近祖先元素有滚动,那么他的偏移标尺就是最近祖先元素<br><br>(3)它有一个定位矩形,如果最近祖先元素没有滚动(overflow:scroll),那么他的偏移标尺是窗口<br><br>(4)上下左右的偏移规则
个人理解:用top、bottom、left、right控制它存在于窗口的哪里,父元素有overflow:scroll就会跟着窗口移动,总之就是有一个定位矩形控制它
居中技巧
定位:过元素的位置移动来改变出现在网页的相对位置<br><br>元素居中:left:50%; right:50%; margin-left:元素宽的一半(负值);margin-top:元素高的一半(负值);
布局
经典的行布局<br><br>-基础行布局<br><br>-行布局自适应<br><br>-行布局自适应限制最大宽<br><br>-行布局垂直水平居中
给header设置了fixed定位以后,header会脱离文档流,banner会自动往上走,这样会导致header会浮在banner上面,覆盖banner的一部分。<br><br>这时可以给banner设置padding-top:Xpx(等于header的高度),来撑开父元素,让banner显示的时候看起来在header的下方。
【经典的列布局】<br><br>1.两列布局固定<br><br>2.两列布局自适应
【经典的列布局】1.三列布局固定2.三列布局自适应
混合布局<br><br>浮动定位会脱离常规流,后面的元素会被遮挡,要设置父元素高度可以避免。
【圣杯布局试是一种经典的三列布局】<br><br>1.中间宽度自适应,两边定宽。中间用百分比,两边用固定数值<br><br>2.中间栏目要在浏览器中优先展示渲染(在写div框架的时候先写中间栏目)<br><br>3.允许任意列的高度最高<br><br>4.用最简单的CSS,最少的HACK语句
双飞翼布局与圣杯布局区别:<br><br>1.双飞翼的左侧和右侧不放在主体div中,而是放在后面。(同级)<br><br>2.双飞翼布局不需要使用position:relative布局.当双飞翼使用margin-left的负值时,参照对象则变成了浏览器。<br><br>3.双飞翼方法是主体设置margin外边距。<1.左翼同样使用margin-left:-100%,到最左侧。<br><br>2.右翼则是margin:-右侧自身的宽度(或大于),到最右侧。><br><br>4.左右两侧自身的宽度不能小于margin外边距值,否则将出现空隙或无法移动到两侧。
0 条评论
下一页