第五课 CSS3 and H5 知识点
概要:CSS3美化样式、自定义字体图标、滤镜设置、CSS3选择器、transform2D转换、新增表单控件、vaild表单验证、表单样式美化等。
属性选择器:
E[attr]只使用属性名,但没有确定任何属性值
E[attr="value"]指定属性名,并指定了该属性的属性值
E[attr~="value"]指定属性名,并且具有属性值,此属性值是一个词列表,并且以空格隔开,其中词列表中包含了一个value词,而且等号前面的“〜”不能不写
E[attr^="value"]指定了属性名,并且有属性值,属性值是以value开头的
E[attr$="value"]指定了属性名,并且有属性值,而且属性值是以value结束的
E[attr*="value"]指定了属性名,并且有属性值,而且属值中包含了value
E[attr|="value"]指定了属性名,并且属性值是value或者以“value-”开头的值(比如说zh-cn)
自定义字体:
格式:
@font-face { font-family: 'miaov'; src: url('../fonts/glyphicons-halflings-regular.eot'); src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); }
转换字体格式生生成兼容代码:https://www.fontsquirrel.com/tools/webfont-generator
滤镜:
0 ~ 1
0% ~ 100%
灰度 -webkit-filter:grayscale(1);
棕色调 -webkit-filter:sepia(1);
饱和度 -webkit-filter:saturate(0.5);
色相旋转 -webkit-filter:hue-rotate(90deg);
反色 -webkit-filter:invert(1);
透明度 -webkit-filter:opacity(0.2);
亮度 -webkit-filter:brightness(0.5);
对比度 -webkit-filter:contrast(2);
模糊 -webkit-filter:blur(3px);
阴影 -webkit-filter:drop-shadow(5px 5px 5px #ccc);
注意:需要加前缀才能生效。
H5新增表单元素:
表单控件:
<form action="">
<input type="email" />
<input type="submit" />
</form>
email : 电子邮箱文本框,跟普通的没什么区别
当输入不是邮箱的时候,验证通不过
移动端的键盘会有变化
tel : 电话号码
url : 网页的URL
search : 搜索引擎
chrome下输入文字后,会多出一个关闭的X
range : 特定范围内的数值选择器
min、max、step( 步数 )
number : 只能包含数字的输入框
color : 颜色选择器
datetime-local : 显示完整日期,不含时区
time : 显示时间,不含时区
date : 显示日期
week : 显示周
month : 显示月
表单的特性和函数:
placeholder : 输入框提示信息
autocomplete : 是否保存用户输入值
默认为on,关闭提示选择off
autofocus : 指定表单获取输入焦点
list和datalist : 为输入框构造一个选择列表
list值为datalist标签的id
required : 此项必填,不能为空
Pattern : 正则验证 pattern="\d{1,5}“
Formaction 在submit里定义提交地址
表单选择器:
E:target 表示当前的URL片段的元素类型,这个元素必须是E,例子:实现tab切换
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .tab-control a{ display: inline-block; text-decoration: none; color: #fff; height: 20px; width: 40px; text-align: center; line-height: 20px; background-color: pink; } .tabs{ border: 1px solid red; height: 200px; width: 200px; /*overflow: hidden;*/ overflow: auto; } .tabs div{ width: 100%; height: 100%; } :target{ display: block; } </style> <!-- E:target 表示当前的URL片段的元素类型,这个元素必须是E --> </head> <body> <div class="tab-control"> <a href="#tab1">tab1</a> <a href="#tab2">tab2</a> <a href="#tab3">tab3</a> </div> <div class="tabs"> <div id="tab1">tab1</div> <div id="tab2">tab2</div> <div id="tab3">tab3</div> </div> </body> </html>
E:disabled 表示不可点击的表单控件
E:enabled 表示可点击的表单控件
E:checked 表示已选中的checkbox或radio
E:first-line 表示E元素中的第一行
E:first-letter 表示E元素中的第一个字符
E::selection表示E元素在用户选中文字时
E::before 生成内容在E元素前
旋转:
transform
rotate(90deg) 旋转函数 取值度数
deg 度数
transform-origin:x y 旋转的基点
倾斜:
skew(90deg) 倾斜函数 取值度数
skewX()
skewY()
缩放:
scale(2) 缩放函数 取值 正数、负数和小数
scaleX()
scaleY()
位移:
translate() 位移函数
translateX()
translateY()
矩阵:
matrix(a,b,c,d,e,f) 矩阵函数
通过矩阵实现缩放
x轴缩放 a=x*a c=x*c e=x*e;
y轴缩放 b=y*b d=y*d f=y*f;
通过矩阵实现位移
x轴位移: e=e+x
y轴位移: f=f+y
通过矩阵实现倾斜
x轴倾斜: c=Math.tan(xDeg/180*Math.PI)
y轴倾斜: b=Math.tan(yDeg/180*Math.PI)
通过矩阵实现旋转
a=Math.cos(deg/180*Math.PI);
b=Math.sin(deg/180*Math.PI);
c=-Math.sin(deg/180*Math.PI);
d=Math.cos(deg/180*Math.PI);
变换兼容IE9以下IE版本只能通过矩阵来实现
filter: progid:DXImageTransform.Microsoft.Matrix( M11= 1, M12= 0, M21= 0 , M22=1,SizingMethod='auto expand');
IE下的矩阵没有E和F两个参数 M11==a; M12==c; M21==b; M22==d
矩阵使用如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> div{ width: 100px; height: 100px; background-color: pink; transition: 3s; margin: 100px auto; } </style> <script> window.onload = function() { var box = document.getElementById("box"); box.onclick = function() { var a = 1, b = 0, c = 0, d = 1, e = 0, f = 0; var deg = 60; a=Math.cos(deg/180*Math.PI); b=Math.sin(deg/180*Math.PI); c=-Math.sin(deg/180*Math.PI); d=Math.cos(deg/180*Math.PI); box.style.transform = "matrix("+a+","+b+","+c+","+d+","+e+","+f+")" box.style.filter = "progid:DXImageTransform.Microsoft.Matrix( M11= "+a+", M12= "+c+", M21= "+b+" , M22= "+d+",SizingMethod='auto expand')"; } } </script> </head> <body> <div id="box"></div> </body> </html>