http://blog.poetries.top/2016/10/19/HTML5+CSS3%E5%9F%BA%E7%A1%80%E5%9B%9E%E9%A1%BE%20/
这篇文章主要总结H5的一些新增的功能以及一些基础归纳,这里只是一个提纲,并不是很详细,后面会一直完善补充新的内容,本文是一些笔记记录,放在这里供自己参考也供他人学习!

HTML5 是新一代的 HTMLDTD声明改变 <!DOCTYPE html>





small 这个元素表示边栏评论,如附属细则cite这个元素可用于显示作品标题(图书、电影、诗歌等)adress这个元素显示article或整个文档的合同信息,且位于footer这个元素之中time显示人和机器可读的日期和时间,而且机器可读的时间戳是属性datetime的值第二个可选的是pubtime用于表示出版日期值HTML标签basefontbigcenterfontsstrikettuframeframesetnoframes
acronymappletisindexdir重新定义的HTML标签
<b> 代表内联文本,通常是粗体,没有传递表示重要的意思<i> 代表内联文本,通常是斜体,没有传递表示重要的意思<dd> 可以同details与figure一同使用,定义包含文本,ialog也可用<dt> 可以同details与figure一同使用,汇总细节,dialog也可用<hr>表示主题结束,而不是水平线,虽然显示相同<menu> 重新定义用户界面的菜单,配合commond或者menuitem使用<small> 表示小字体,例如打印注释或者法律条款<strong> 表示重要性而不是强调符号崭新新的页面布局




input表单type属性值
type="text" 单行文本输入框type="password" 密码(maxlength="")type="radio" 单项选择(checked="checked")type="checkbox" 多项选择type="button" 按钮type="submit" 提交type="file" 上传文件type="reset" 重置input表单type属性值:
type = "email" 限制用户输入必须为Email类型type="url" 限制用户输入必须为URL类型type="date" 限制用户输入必须为日期类型type="datetime" 显示完整日期 含时区type="datetime-local" 显示完整日期 不含时区type="time" 限制用户输入必须为时间类型type="month" 限制用户输入必须为月类型type="week" 限制用户输入必须为周类型type="number" 限制用户输入必须为数字类型type="range" 生成一个滑动条type="search" 具有搜索意义的表单results="n"属性type="color" 生成一个颜色选择表单type="tel" 显示电话号码HTML5 拥有多个可供选取日期和时间的新输入类型:date 选取日、月、年month 选取月、年week 选取周和年time 选取时间(小时和分钟)
以下两个没有作用
datetime 选取时间、日、月、年(UTC 时间)datetime-local 选取时间、日、月、年(本地时间)required: required内容不能为空placeholder: 表单提示信息autofocus:自动聚焦pattern: 正则表达式 输入的内容必须匹配到指定正则范围autocomplete:是否保存用户输入值
on,关闭提示选择offformaction: 在submit里定义提交地址datalist: 输入框选择列表配合list使用 list值为datalist的id值output: 计算或脚本输出validity对象,通过下面的valid可以查看验证是否通过,如果八种验证都返回true,一种验证失败返回false
oText.addEventListener("invalid",fn1,false)ev.preventDefault(): 阻止默认事件valueMissing: 当输入值为空的时候,返回truetypeMismatch: 控件值与预期不吻合,返回truepatternMismatch: 输入值不满足pattern正则,返回truecusomError
setCustomValidity()

CSS3发展史简介
HTML的诞生 20世纪90年代初1996年底, CSS第一版诞生1998年5月 CSS2正式发布2004年 CSS2.1发布CSS3的发布 2002 2003 2004 2005 2007 2009 2010模块化开发
CSS1 中定义了网页的基本属性:
CSS2中在CSS1的基础上添加了高级功能
CSS3遵循的是模块化开发。发布时间并不是一个时间点,而是一个时间段CSS选择器复习
* 选择到所有的元素> 选择到元素的直接后代+选择到紧随目标元素后的第一个元素~选择到紧随其后的所有兄弟元素::first-line 匹配文本块的首行::first-letter 选择文本块的首字母:before,:after在元素内容前面、后面添加内容(相当于行内元素)
Css3 属性选择器
CSS3伪类选择器
UI伪类选择器:
:enabled选择启用状态元素:disabled 选择禁用状态元素:checked选择被选中的input元素(单选按钮或复选框):default 选择默认元素:valid、invalid 根据输入验证选择有效或无效的input元素:in-range、out-of-range选择指定范围之内或者之外受限的元素:required、optional根据是否允许:required属性选择input元素动态伪类选择器:
:link选择链接元素:visited 选择用户以访问的元素:hover 鼠标悬停其上的元素:active鼠标点击时触发的事件:focus 当前获取焦点的元素其他伪类选择器:
:not(<选择器>)对括号内选择器的选择取反:lang(<目标语言>) 基于lang全局属性的元素:target url片段标识符指向的元素
:empty选择内容为空的元素:selection鼠标光标选择元素内容CSS文本属性复习
white-space:对象内空格的处理方式
nowrap 控制文本不换行
pre 空白会被浏览器保留
pre-line 合并空白 保留换行符
pre-wrap 保留空白 正常换行
direction:文本流的方向
ltr 文本从左向右rtl 文本从右往左unicode-bidi:用于同一个页面里存在从不同方向读进的文本显示。与direction属性一起使用
CSS3新增文本属性
color:rgba();text-overflow:是否使用一个省略标记(…)标示对象内文本的溢出text-align:文本的对齐方式text-transform:文字的大小写text-decoration:文本的装饰线,复合属性text-shadow:文本阴影text-fill-color:文字填充颜色text-stroke:复合属性。设置文字的描边tab-size:制表符的长度word-wrap:当前行超过指定容器的边界时是否断开转行word-break:规定自动换行的处理方法text-overflow:是否使用一个省略标记(...)标示对象内文本的溢出
clip: 默认值 无省略号ellipsis:当对象内文本溢出时显示省略标记(...)。over-flow:hidden属性(超出处理)还有 white-space:nowrap(禁止换行)配合使用,否则无法看到效果text-align:文本的对齐方式
css1left:默认值 左对齐right:右对齐center:居中justify: 内容两端对齐。css3start:开始边界对齐end:结束边界对齐text-transform:文字的大小写
css1
none: 默认值 无转换capitalize: 将每个单词的第一个字母转换成大写uppercase: 转换成大写lowercase: 转换成小写css3
full-width: 将左右字符设为全角形式。不支持full-size-kana:将所有小假名字符转换为普通假名。不支持
text-decoration:文本的装饰线,复合属性(只火狐支持)
text-decoration-line:
CSS1时的text-decoration属性text-decoration-style :
text-decoration-color:
blink: 指定文字的装饰是闪烁。 opera和firefoxtext-decoration : #F00 double overline CSS3实例text-shadow:文本阴影
x y blur color,……
x 横向偏移y 纵向偏移blur 模糊距离(灰度)color 阴影颜色text-fill-color:文字填充颜色
text-stroke:复合属性。设置文字的描边
text-stroke-width:文字的描边厚度text-stroke-color:文字的描边颜色tab-size:制表符的长度
8(一个tab键的空格字节长度),在 pre标签之内才会有显示word-wrap:当前行超过指定容器的边界时是否断开转行
normal: 默认值break-word:
CSS3弹性盒模型
flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-content属性详解
flex-direction: row | row-reverse | column | column-reverse;flex-wrap: nowrap | wrap | wrap-reverse;flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap
flex-flow: <flex-direction> || <flex-wrap>;justify-content属性定义了项目在主轴上的对齐方式。
justify-content: flex-start | flex-end | center | space-between | space-around;align-items属性定义项目在交叉轴上如何对齐。
align-items: flex-start | flex-end | center | baseline | stretch;align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
align-content: flex-start | flex-end | center | space-between | space-around | stretch;以下6个属性设置在项目上
orderflex-growflex-shrinkflex-basisflexalign-self属性详解
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
align-self: auto | flex-start | flex-end | center | baseline | stretch;
CSS背景属性复习
background:
background-color:背景颜色background-image:背景图片background-repeat:背景重复background-position:背景定位background-attachment:背景固定(scroll/fixed)CSS3新增背景属性
background-size 背景尺寸
background-size:x y 水平 垂直方向的尺寸,像素/百分比/auto/…background-size:100% 100%background-size:cover 比例放大background-size:contain 包含(图片不溢出)多背景
background-image:url(1.jpg),url(2.jpg);background-origin 背景区域定位
border-box: 从border区域开始显示背景。padding-box: 从padding区域开始显示背景。content-box: 从content内容区域开始显示背background-clip 背景绘制区域
border-box: 从border区域向外裁剪背景。padding-box: 从padding区域向外裁剪背景。content-box: 从content区域向外裁剪背景。text:背景填充文本
no-clip: 从border区域向外裁剪背景颜色渐变
线性渐变:linear-gradient(起点/角度,颜色 位置,…,)
left/top/right/bottom/left top......默认top0-360度red 50%, blue 100%(红色从50%渐变到100%为蓝色)repeating-linear-gradient 线性渐变重复平铺
IE低版本渐变(滤镜):filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=‘#ffffff‘,endColorstr=‘#ff0000‘,GradientType=‘1‘);径向渐变:radial-gradient(起点(圆心位置), 形状/半径/大小,颜色1,颜色2)
left/top/right/bottom或具体值/百分比ellipse(椭圆)、circle(正圆)closest-side(最近端), closest-corner最近角), farthest-side(最远端), farthest-corner(最远角), contain(包含) ,cover(覆盖));CSS颜色属性复习
color name 颜色英文名称命名HEX方式 十六进制方式rgb方式 三原色配色方式CSS3新增颜色属性
rgba()| 名称 | 颜色 | 颜色 | 取值 |
|---|---|---|---|
| r | red | 红色 | 0-255 |
| g | green | 绿色 | 0-255 |
| b | blue | 蓝色 | 0-255 |
| a | alpha | 透明 | 0-1 |
HSL模式 HSLA模式
H: Hue(色调)。
0 - 360S:Saturation(饱和度)。取值为:0.0% - 100.0%L: Lightness(亮度)。取值为:0.0% - 100.0%A: alpha 透明度 0~1之间
语法:HSLA(H,S,L,A)
HSL色轮

透明颜色:transparent
border实现三角箭头、风车等透明度:
opacity0-1之间IE浏览器不兼容,需用IE浏览器的滤镜实现相同效果,filter:alpha(opacity=50)-moz-opacity边框圆角
CSS2中添加圆角矩形需要技巧。我们必须为每个圆角使用不同的图片CSS3中,创建圆角是非常容易的CSS3中,border-radius属性用于创建圆角border-radius边框圆角写法
border-radius: 2em 1em 4em / 0.5em 3em;|
1
2
3
4
|
border-top-left-radius: 2em 0.5em;
border-top-right-radius: 1em 3em;
border-bottom-right-radius: 4em 0.5em;
border-bottom-left-radius: 1em 3em;
|
box-shadow方框添加阴影
语法:box-shadow:x-shadow y-shadow blur spread color inset;
box-shadow的API
x-shadow 必需。水平阴影的位置。允许负值。y-shadow 必需。垂直阴影的位置。允许负值。blur 可选。模糊距离。spread 可选。阴影的尺寸。color 可选。阴影的颜色。请参阅 CSS颜色值inset 可选。将外部阴影 (outset) 改为内部阴影box-shadow:10px 10px 5px 5px #888888;border-image语法| 属性 | 版本 | 简介 |
|---|---|---|
| border-image | CSS3 | 设置或检索对象的边框使用图像来填充 |
| border-image-source | CSS3 | 设置或检索对象的边框是否用图像定义样式或图像来源路径 |
| border-image-slice | CSS3 | 设置或检索对象的边框背景图的分割方式 |
| border-image-width | CSS3 | 设置或检索对象的边框厚度 |
| border-image-outset | CSS3 | 设置或检索对象的边框背景图的扩展 |
| border-image-repeat | CSS3 | 设置或检索对象的边框图像的平铺方式 |
border-image-slice

border-image-repeat
stretch: 指定用拉伸方式来填充边框背景图。 *默认的repeat: 指定用平铺方式来填充边框背景图。当图片碰到边界时,如果超过则被截断。round: 指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态调整图片的大小 直至正好可以铺满整个边框。写本文档时仅Firefox能看到该效果过渡:给改变添加过程
transition 过渡属性
transition: property duration timing-function delay;
transition-property:过渡属性的名称
none 没有过渡属性all 所有属性都过渡(默认值)property 具体属性名称(property1,property2…)transition-duration:过渡属性花费的时间
time 秒或毫秒transition-timing-function:过渡效果速度曲线
time 秒或毫秒transition-delay:过渡效果延迟时间transition-timing-function:过渡效果速度曲线
linear:规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。ease:规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。ease-in:规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。ease-out :规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。ease-in-out :规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。cubic-bezier(n,n,n,n):在 cubic-bezier 函数中定义自己的值。可能的值是 0至 1 之间的数值。过渡完成事件
Webkit内核:
|
1
|
obj.addEventListener(‘webkitTransitionEnd‘,function(){})
|
标准:
|
1
|
obj.addEventListener(‘transitionend‘,function(){})
|
什么是CSS3 动画?
CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript动画接口
| 属性 | 描述 |
|---|---|
| @keyframes | 规定动画。 |
| animation | 所有动画属性的简写属性,除了 animation-play-state 属性。 |
| animation-name | 规定 @keyframes 动画的名称。 |
| animation-duration | 规定动画完成一个周期所花费的秒或毫秒。 |
| animation-timing-function | 规定动画的速度曲线。 |
| animation-delay | 规定动画何时开始。 |
| animation-iteration-count | 规定动画被播放的次数。 |
| animation-direction | 规定动画是否在下一周期逆向地播放。 |
| animation-play-state | 规定动画是否正在运行或暂停。 |
| animation-fill-mode | 规定对象动画时间之外的状态。 |
| 值 | 描述 |
|---|---|
| linear | 动画从头到尾的速度是相同的。 |
| ease | 默认。动画以低速开始,然后加快,在结束前变慢。 |
| ease-in | 动画以低速开始。 |
| ease-out | 动画以低速结束。 |
| ease-in-out | 动画以低速开始和结束。 |
| cubic-bezier(n,n,n,n) | 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。 |
在谷歌浏览器里面需要加上-webkit-IE6,7,8,9不支持css3运动
拓展阅读
CSS3盒模型阴影
box-shadow:inset x y blur spread colorinset:投影方式inset:内投影outset:外投影 默认(不能设置)x、y:阴影偏移blur:模糊半径(灰度)spread:扩展阴影半径colorCSS3盒模型倒影
box-reflect 倒影
above|below|left|right;CSS3其他盒模型
box-sizing 盒模型解析模式content-box 标准盒模型(和css2一样的计算)width/height=border+padding+contentborder-box 怪异盒模型width/height与设置的值一样 ,content减小扩展阅读
Css3平面转换方法
translate() 移动rotate() 旋转scale() 缩放skew() 翻转matrix() 矩阵rotate() 旋转函数 (deg)
deg 度数skew(X,Y) 倾斜函数 (deg)
skewX()skewY()scale(X,Y) 缩放函数 (正数、负数和小数)
scaleX()scaleY()translate(X,Y) 位移函数(px)
translateX()translateY()rotate() 旋转方法
rotate(30deg)
translate()位置方法
translate(50px,100px)
scale()尺寸方法
scale(2,4)
skew() 翻转方法
skew()方法,元素翻转给定的角度
transform: skew(30deg,20deg);
X轴把元素翻转30 度,围绕 Y 轴翻转 20度Css3立体转换
transform-style(preserve-3d) 建立3D空间(指定元素的子元素展示的场景是在3D场景还是平面(投影)场景)Perspective 视角(指定观察者与z=0平面的距离,从而让元素及子元素看起来有3D透视位置效果Perspective- origin 视角基点
transform-origin:坐标轴基点(变换基准)
left/right/center/top/bottom)center centertransform 新增函数
rotateX()rotateY()rotateZ()translateZ()scaleZ()视频音频格式的简单介绍
HTML5支持的格式
HTML5能在完全脱离插件的情况下播放音视频,但是不是所有格式都支持。Ogg=带有Theora视频编码+Vorbis音频编码的Ogg文件MEPG4=带有H.264视频编码+AAC音频编码的MPEG4文件WebM=带有VP8视频编码+Vorbis音频编码的WebM格式Video的使用<video src="文件地址" controls="controls"></video>|
1
2
3
|
< video src="文件地址" controls="controls">
您的浏览器暂不支持video标签。播放视频
</ video >
|
|
1
2
3
4
5
|
< video controls="controls" width="300">
<source src="move.ogg" type="video/ogg" >
<source src="move.mp4" type="video/mp4" >
您的浏览器暂不支持video标签。播放视频
</ video >
|
Video的常见属性| 属性 | 值 | 描述 |
|---|---|---|
| Autoplay | Autoplay | 视频就绪自动播放 |
| controls | controls | 向用户显示播放控件 |
| Width | Pixels(像素) | 设置播放器宽度 |
| Height | Pixels(像素) | 设置播放器高度 |
| Loop | Loop | 播放完是否继续播放该视频,循环播放 |
| Preload | load{auto,meta,none} | 规定是否预加载视频。 |
| Src | url | 视频url地址 |
| Poster | Imgurl | 加载等待的画面图片 |
| Autobuffer | Autobuffer | 设置为浏览器缓冲方式,不设置autoply才有效 |
Video的API方法| 方法 | 属性 | 事件 |
|---|---|---|
| play() | currentSrc | play |
| pause() | currentTime | pause |
| load() | videoWidth | progress |
| canPlayType() | videoHeight | error |
<canvas>
canvas 的浏览器可以看到的内容300px,默认高度150pxcanvas宽高需要设置在标签中 否则绘制的东西可能出错<canvas> 绘制环境
getContext("2d");目前支持2d的场景|
1
2
3
|
<canvas width="" height="" id="">
您的浏览器不支持canvas,请更换浏览器!
</canvas>
|
绘制矩形
rect(L,T,W,H):创建一个矩形fillRect(L,T,W,H):绘制填充的矩形clearRect(x,y,w,h) 清除矩形选区strokeRect(L,T,W,H)绘制空心矩形(无填充)
设置绘图样式
fillStyle:填充颜色(绘制canvas是有顺序的)lineWidth:触笔宽度(线宽)strokeStyle:触笔颜色beginPath() :开始路径closePath():结束路径moveTo(x,y):将触笔移动到x,y点lineTo(x,y):绘制到x,y点stroke(): 触笔方法 画线 默认为黑色fill():填充方法rect(x,y,w,h):矩形路径save():保存路径restore():恢复路径绘制曲线
arcTo(x1,y1,x2,y2,r)
x1,y1 坐标一 x2,y2坐标二 r圆弧半斤quadraticCurveTo(dx,dy,x1,y1)
dx,dy控制点 x1,y1结束坐标bezierCurveTo(dx1,dy1,dx2,dy2,x1,y1)
dx1,dy1 控制点一 dx2,dy2控制点二x1,y1结束坐标绘制圆形
arc(x,y,半径,起始弧度,结束弧度,旋转方向)
x,y起始位置弧度=角度值*Math.PI/180false),逆时针(true)strokeText(文本,x,y); 绘制空心文本fillText(文本,x,y); 绘制实心文本font = "font-size font-family"注:尺寸 字体缺一不可
textAlign = "";文本左右对齐方式 start center end left righttextBaseline文本上下对齐方式
alphabetic默认。文本基线是普通的字母基线。top 文本基线是 em 方框的顶端。。hanging 文本基线是悬挂基线。middle 文本基线是em 方框的正中。ideographic 文本基线是表意基线。bottom 文本基线是 em 方框的底端。measureText(文本).width; 文本实际宽度(只有宽度值)图形边界样式
lineJoin: 边界连接点样式
miter(默认值),round(圆角),bevel(斜角)lineCap: 端点样式
butt(默认值),round(圆角),square(高度多出线宽一半)绘制图片
图片预加载,获取图片文件
onload中调用drawImage(img,x,y,w,h);绘制图片(图片,坐标x,坐标y,宽度,高度)设置背景
createPattern(img,平铺方式)repeat,repeat-x,repeat-y,no-repeatcanvas变换
translate(x,y)
rotate(弧度): 旋转 弧度公式 = 角度*PI/180scale(wb,hb)缩放比例(缩放canvas绘制的图片)颜色渐变
createLinearGradient(x1,y1,x2,y2)
x1,y1起始坐标点x2,y2结束坐标点createRadialGradient(x1,y1,r1,x2,y2,r2)
x1,y1,r1内圆坐标及半径x2,y2,r2外圆坐标及半径addColorStop(位置,颜色) 位置:渐变点 0-1之间 可多个阴影
shadowOffsetX,shadowOffsetY x轴、y轴偏移shadowBlur 阴影模糊度shadowColor 阴影颜色 默认颜色:rgba(0,0,0,0)像素
createImageData(sx,sy) 创建新的、空白的 ImageData 对象getImageData(x1,y1,sx,sy)
ImageData对象,该对象为画布上指定的矩形复制像素数据putImageData(img,x2,y2)ImageData 对象)放回画布上合成
globalAlpha 设置或返回绘图的当前alpha或透明值globalCompositeOperation 设置或返回新图像如何绘制到已有的图像上source-over默认。在目标图像上显示源图像。source-atop在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的。source-in 在目标图像中显示源图像。只有目标图像内的源图像部分会显示,目标图像是透明的。source-out在目标图像之外显示源图像。只会显示目标图像之外源图像部分,目标图像是透明的。destination-over在源图像上方显示目标图像。destination-atop在源图像顶部显示目标图像。源图像之外的目标图像部分不会被显示。destination-in在源图像中显示目标图像。只有源图像内的目标图像部分会被显示,源图像是透明的。destination-out在源图像外显示目标图像。只有源图像外的目标图像部分会被显示,源图像是透明的。lighter显示源图像 + 目标图像。copy显示源图像。忽略目标图像。xor使用异或操作对源图像与目标图像进行组合。svg是什么
canvas的区别svg的引入方式
方式一:
|
1
2
3
4
5
|
<?xml version="1.1" encoding="utf-8"?>
PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/
Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"></svg>
|
方式二:
方式三:
html页面中添加svgcircle:圆形
cx,cyrfill stroke stroke-width stlye样式fill = "none/transparent"cx属性定义的椭圆中心的x坐标cy属性定义的椭圆中心的y坐标rx属性定义的水平半径ry属性定义的垂直半径width height 宽高x,yrx,ryline:线条
x1,y1,x2,y2stroke-opacity 透明 fill-opacitypolyline:折线
points:点坐标(x1 y1 x2 y2...)或(x1,y1,x2,y2....)fill-rule:evenodd/nonzero;path: 路劲
d属性M(起始坐标),L(结束坐标),H(水平线),V(垂直线),A(圆弧),Z(闭合路劲)
C,S,Q,T 贝塞尔曲线x半径 y半径 角度 弧长(0 小弧 1大弧) 方向(0逆时针 1顺时针)(x y)C命令:三次贝塞尔曲线
(x1,y1,x2,y2,x,y) x1,y1控制点一 x2,y2控制点二 x,y结束点(x2,y2,x,y) x2,y2控制点 x,y结束点(x1,y1,x,y) x1,y1控制点 x,y结束点T命令:一次贝塞尔曲线
(x,y)结束点g标签:组合元素 设置元素公共属性
transform = "translate(0,0)"text标签
x, y, text-anchor(对齐start end middle) font-sizeimage 标签
x, y, width heightxlink:href(图片地址)纬度 : 东西连接的线
位置信息从何而来
IP地址GPS全球定位系统Wi-Fi无线网络avigator.geolocation
getCurrentPosition(请求成功,请求失败,数据收集方式)请求成功函数
coords.longitudecoords.latitudecoords.accuracycoords.altitudecoords.altitudeAcuracycoords.headingcoords.speednew Date(position.timestamp)请求失败函数
code
timeout值,获取位置超时了数据收集 : json的形式
enableHighAcuracy : 更精确的查找,默认falsetimeout : 获取位置允许最长时间,默认infinitymaximumAge : 位置可以缓存的最大时间,默认0多次定位请求* : watchPosition
frequency 更新的频率clearWatch|
1
2
|
<button id="btn">请求位置信息</button>
<div id="box"></div>
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
var btn = document.getElementById("btn");
var box = document.getElementById("box");
btn.onclick = function(){
navigator.geolocation.getCurrentPosition(function(position){
box.innerHTML +="经度:"+position.coords.longitude + "<br>";
box.innerHTML +="纬度:"+position.coords.latitude + "<br>";
box.innerHTML +="海拔:"+position.coords.accuracy + "<br>";
box.innerHTML +="海拔的准确度:"+position.coords.altitudeAccuracy + "<br>";
box.innerHTML +="地面速度"+position.coords.speed + "<br>";
box.innerHTML +="行进方向"+position.coords.heading + "<br>";
box.innerHTML +="请求时间"+new Date(position.timestamp) + "<br>";
},function(err){
alert(err.code);
},{
enableHighAccuracy:false,//精确请求
timeout:5000,//设置超时
maximumAge:1000//缓存时间
});
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
var btn = document.getElementById("btn");
var box = document.getElementById("box");
btn.onclick = function(){
navigator.geolocation.watchPosition(function(position){
box.innerHTML +="经度:"+position.coords.longitude + "<br>";
box.innerHTML +="纬度:"+position.coords.latitude + "<br>";
box.innerHTML +="海拔:"+position.coords.accuracy + "<br>";
box.innerHTML +="海拔的准确度:"+position.coords.altitudeAccuracy + "<br>";
box.innerHTML +="地面速度"+position.coords.speed + "<br>";
box.innerHTML +="行进方向"+position.coords.heading + "<br>";
box.innerHTML +="请求时间"+new Date(position.timestamp) + "<br>";
},function(err){
alert(err.code);
},{
enableHighAccuracy:false,//精确请求
timeout:5000,//设置超时
maximumAge:1000//缓存时间
});
}
|
|
1
2
3
4
5
6
|
#container {
width:600px;
height: 300px;
margin:40px auto;
border:1px solid red;
}
|
|
1
2
3
4
|
<div id="container"></div>
<script type="text/javascript"
src="http://webapi.amap.com/maps?v=1.3&key=278b7b8b4728ba302b7e566fc2a97b36">
</script>
|
|
1
|
var map = new AMap.Map(‘container‘);
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#container {width:500px; height:500px; margin:100px auto;}
.menu{
width:100px;
box-shadow: 0 0 5px #000;
margin:auto;
background:#fff;
}
.menu ul li{
list-style:none;
line-height:30px;
text-align:center;
cursor:pointer;
}
#box{
width:400px;
height:40px;
position:absolute;
top:150px;
left:50%;
margin-left:-200px;
background:#fff;
box-shadow:0 0 10px #000;
}
input{
height:38px;
width:300px;
border:none;
outline:none;
}
#btn{
width:80px;
}
|
|
1
2
3
4
5
6
7
8
|
<div id="container"></div>
<div id="box">
<input type="text" id="city" placeholder="请输入城市...">
<input type="button" value="搜索" id="btn">
</div>
<script type="text/javascript"
src="http://webapi.amap.com/maps?v=1.3&key=278b7b8b4728ba302b7e566fc2a97b36">
</script>
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
var btn = document.getElementById("btn");
var city = document.getElementById("city");
var map = new AMap.Map(‘container‘);
var toolBar,mouseTool,contextMenu;
//在地图中添加操作toolBar插件、mouseTool插件
map.plugin(["AMap.ToolBar","AMap.MouseTool"],function(){
toolBar = new AMap.ToolBar();
map.addControl(toolBar);
mouseTool = new AMap.MouseTool(map);
});
var menuContext = document.createElement("div");
menuContext.innerHTML = "<div class="menu"><ul><li onclick=‘zoomMenu(0)‘>缩小</li>
<li onclick=‘zoomMenu(1)‘>放大</li>
<li onclick=‘distanceMeasureMenu()‘>距离量测</li>
<li onclick = ‘addMarkerMenu()‘>添加标记</li></ul></div>";
//创建一个自定义的右键菜单
contextMenu = new AMap.ContextMenu({isCustom:true,content:menuContext});
//给地图绑鼠标右键功能弹出右键菜单
AMap.event.addListener(map,"rightclick",function(e){
contextMenu.open(map,e.lnglat);//e.lnglat鼠标点击的经纬度
contextMenuPosition = e.lnglat;
})
//右键菜单缩放地图
function zoomMenu(n){
if(n === 0){map.zoomOut();}
if(n === 1){map.zoomIn();}
contextMenu.close();
}
contextMenu.close();
//测量距离功能
function distanceMeasureMenu(){
mouseTool.rule();
contextMenu.close();
}
//添加标注功能
function addMarkerMenu(){
mouseTool.close();
var marker = new AMap.Marker({
map: map,
position: contextMenuPosition, //基点位置
offset: {x:-5,y:-10} //相对于基点位置
});
contextMenu.close();
}
//搜索城市
btn.onclick = function(){
var val = city.value;
map.setCity(val);
}
|
Storage
sessionStorage
session临时回话,从页面打开到页面关闭的时间段localStorage
Storage的特点
sessionStorage数据是不共享、 localStorage共享Storage API
setItem():
key,value)类型,类型都是字符串getItem():
key来获取到相应的valueremoveItem():
valueclear():
存储事件:
storage事件Key : 修改或删除的key值,如果调用clear(),key为nullnewValue : 新设置的值,如果调用removeStorage(),key为nulloldValue : 调用改变前的value值storageArea : 当前的storage对象url : 触发该脚本变化的文档的urlsession同窗口才可以,例子:iframe操作
新增选择器
document.querySelector() 选择单个元素document.querySelectorAll() 选择所有的document.getElementsByClassName() 通过类名选择延迟加载JS
JS的加载会影响后面的内容加载
Html5的defer和async
defer=“defer ”: 延迟加载,会按顺序执行,在onload执行前被触发async =“async”: 异步加载,加载完就触发,有顺序问题Labjs库|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/**
* 动态加载script文件 (推荐方法) 只需请求一次 可加载多个JavaScript文件,减少请求次数以及页面的加载阻塞
*/
function loadScript(url,callback){
var script = document.createElement("script");
script.type = "text/javascript";
if(script.readyState){//IE
script.onreadystatechange = function(){
if(script.readyState == "loaded" || script.readyState == "complete"){
onreadystatechange = null;
callback();
}
}
}else {
script.onload = function(){
callback();
}
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
loadScript("js/defer.js",function(){
console.log("加载成功");
// 加载成功回调
});
loadScript("js/async.js",function(){
console.log("加载成功");
// 加载成功回调
});
|
获取class列表属性
classList
length : class的长度add() : 添加class方法remove() : 删除class方法toggle() : 切换class方法contains() : 判断类名是否存在返回bool值JSON的新方法
parse() : 把字符串转成json
stringify() : 把json转化成字符串
与eval的区别
eval():对任何的字符串进行解析变成jsparse():字符串中的属性要严格的加上引号历史管理
onhashchange :改变hash值来管理history :
pushState : 三个参数 :数据 标题(都没实现) 地址(可选)onpopstate事件 : 读取数据 event.statedraggable属性draggable :true
ondragstart : 拖拽前触发ondrag :拖拽前、拖拽结束之间,连续触发ondragend :拖拽结束触发ondragenter :进入目标元素触发ondragover:进入目标、离开目标之间,连续触发ondragleave :离开目标元素触发ondrop :在目标元素上释放鼠标触发
ondragover事件里面阻止默认事件拖拽兼容问题
火狐浏览器下需设置dataTransfer对象才可以拖拽除图片外的其他标签
dataTransfer对象setData() : 设置数据 key和value(必须是字符串)getData() : 获取数据,根据key值,获取对应的valueeffectAllowed : 设置光标样式(none, copy, copyLink, copyMove, link, linkMove,move, all 和uninitialized)
setDragImage :三个参数(指定的元素,坐标X,坐标Y)
files: 获取外部拖拽的文件,返回一个filesList列表
filesList下有个type属性,返回文件的类型读取文件信息
FileReader(读取文件信息)
readAsDataURLonload当读取文件成功完成的时候触发此事件this. result 获取读取的文件数据examp01 拖拽案例
|
1
2
|
<div id="drap" draggable="true"></div>
<div id="box"></div>
|
|
1
2
3
4
5
6
7
8
9
10
11
|
#drap {
width: 100px;
height: 100px;
background: red;
}
#box {
width: 500px;
height: 500px;
border: 2px solid blue;
margin: 50px auto;
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
//被拖拽元素事件
drap.ondragstart = function(ev){ // 拖拽前
var ev = ev || window.event;
//火狐浏览器下需设置dataTransfer对象才可以拖拽除图片外的其他标签
ev.dataTransfer.setData("key","poetries");
//effectAllowed : 设置光标样式(none, copy, copyLink, copyMove, link, linkMove,move, all 和uninitialized)
ev.dataTransfer.effectAllowed = "copy";
//设置被拖拽的小元素 setDragImage :三个参数(指定的元素,坐标X,坐标Y)
ev.dataTransfer.setDragImage(pic,25,25);
this.style.background = "green";
}
drap.ondrag = function(){ // 拖拽过程中
this.innerText = "被拖拽中...";
}
drap.ondragend = function(){ // 拖拽结束
this.style.background = "red";
this.innerHTML = "";
}
//目标元素事件
box.ondragenter = function(){ //进入目标元素触发
this.innerHTML = "可将文件拖放到这里!";
}
box.ondragover = function(ev){ //进入目标、离开目标之间,连续触发
var ev = ev || window.event;
ev.preventDefault();
this.style.background = "pink";
}
box.ondragleave = function(){ //离开目标元素触发
this.innerHTML = "";
this.style.background = "none";
}
box.ondrop = function(ev){//在目标元素上释放鼠标触发
//alert("拖放结束")
this.innerHTML = ev.dataTransfer.getData("key");
}
|
|
1
2
3
|
<h1>请拖拽图片到红框中</h1>
<div id="box"><span>可以将文件拖放到这里!!</span></div>
<div id="dustbin">垃圾回收站</div>
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#box{
position:relative;
width:500px;
height:500px;
border:2px solid red;
margin:100px auto 0px;
}
#box span{
position:absolute;
left:0;
top:0;
right:0;
bottom:0;
height:50px;
width:192px;
margin:auto;
display:none;
}
img{
width:100px;height:100px;
}
#dustbin{
width:200px;
height:100px;
background:#000;
color:#fff;
font-size:40px;
text-align:center;
line-height:100px;
margin:auto;
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
var box = document.getElementById("box");
var dusTbin = document.getElementById("dustbin");
var span = box.getElementsByTagName("span")[0];
//目标元素事件
var img = ‘‘;
box.ondragenter = function(){//进入目标元素触发
span.style.display = "block";
}
box.ondragover = function(ev){//在目标元素上连续触发
var ev = ev||window.event;
ev.preventDefault();//阻止默认事件
span.style.display = "block";
}
box.ondragleave = function(){//离开目标元素
span.style.display = "none";
}
box.ondrop = function(ev){//在目标元素上面释放鼠标触发
//alert("拖拽结束!!");
var ev = ev||window.event;
ev.preventDefault();//阻止默认事件
span.style.display = "none";
var file = ev.dataTransfer.files;
//alert(file[0].type);
for (var i=0; i<file.length ;i++ )
{
if (file[i].type.indexOf("image")!=-1)
{
var read = new FileReader();//新建一个读取文件对象
read.readAsDataURL(file[i]);//读取文件
read.onload = function(){//读取文件成功之后调用什么函数
var img = document.createElement("img");
//alert(this.result);
img.src = this.result;
box.appendChild(img);
//获取img节点 实现删除功能
var oImg = document.getElementsByTagName("img");
if (oImg)
{
for (var j=0;j<oImg.length ;j++ )
{
oImg[j].ondragstart = function(ev){
ev.dataTransfer.setData("data",ev.target.innerHTML);
img = ev.target;
}
oImg[j].ondragend = function(ev){
ev.dataTransfer.clearData("data");//清楚数据
img = null;
}
}
}
//实现删除功能(移除img节点)
dusTbin.ondragover = function(ev){
ev.preventDefault();
}
dusTbin.ondrop = function(){
if (img)
{
img.parentNode.removeChild(img);
}
}
}
}else{
alert("请上传图片!");
}
}
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<div class="wrap" id="wrap">
<ul id="box">
<li style="background:#f3f" draggable="true">1</li>
<li style="background:#ff6" draggable="true">2</li>
<li style="background:#c60" draggable="true">3</li>
<li style="background:#903" draggable="true">4</li>
<li style="background:#0f6" draggable="true">5</li>
<li style="background:#636" draggable="true">6</li>
<li style="background:#36f" draggable="true">7</li>
<li style="background:#033" draggable="true">8</li>
</ul>
</div>
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
.wrap{
width:500px;
height:500px;
margin:50px auto;
}
ul li{
list-style:none;
width:500px;
height:50px;
color:#fff;
text-align:center;
line-height:50px;
font-size:40px;
font-weight:bold;
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
var oUl = document.getElementById("box");
var oLi = oUl.getElementsByTagName("li");
var curr = 0;
function sort(){
for (var i = 0;i < oLi.length;i++) {
oLi[i].index = i;
oLi[i].ondragstart = function(ev){
var ev = ev || window.event;
ev.dataTransfer.setData("data",this.innerHTML);
//this.innerHTML = "被拖拽中...";
curr = this.index;
}
oLi[i].ondragenter = function(){
for(var i = 0;i < oLi.length;i++){
oLi[i].style.border = "none";
}
if(curr != this.index){
this.style.border = "2px solid #000";
}
}
oLi[i].ondragover = function(e){
var e = e || window.event;
e.preventDefault();
}
oLi[i].ondrop = function(ev){ //鼠标释放的时候
//oUl.insertBefore(oLi[curr],this);//insertBefore(新节点,目标节点)
inserAfter(oLi[curr],this);
this.style.border = "none";
//oLi[curr].innerHTML = ev.DataTransfer.getData("data");
sort();
}
}
}
sort();
function inserAfter(newItem,targerItem){
var parentItem = targerItem.parentNode;
if(parentItem.lastChild == targerItem){
parentItem.appendChild(newItem);
}else {
parentItem.insertBefore(newItem,targerItem.nextSibling);
}
}
|
跨文档请求
同域跨文档
iframe内页:
contentWindowwindow.top(找到最顶级的父页面)/parent(第一父页面)window.openwindow.opener不同域跨文档
postMessage(“发送的数据”,”接收的域”)
message事件监听ev.origin发送数据来源的域ev.data 发送的数据ajax跨域
XMLHttpRequest 新增功能
E兼容:XDomaiRequest进度事件:
upload.onprogress(ev) 上传进度(实现文件上传进度条)
ev.total 发送文件的总量ev.loaded 已发送的量FormData 构建提交二进制数据拓展阅读
媒体类型
*all 所有媒体braille 盲文触觉设备embossed 盲文打印机*print 手持设备projection 打印预览*screen 彩屏设备speech ‘听觉’类似的媒体类型tty不适用像素的设备tv 电视关键字
andnot not关键字是用来排除某种制定的媒体类型only only用来定某种特定的媒体类型媒体特性
(max-width:600px)(max-device-width: 480px) 设备输出宽度(orientation:portrait) 竖屏(orientation:landscape) 横屏(-webkit-min-device-pixel-ratio: 2) 像素比devicePixelRatio 设备像素比window.devicePixelRatio = 物理像素 / dips样式引入
|
1
|
<link rel="stylesheet" href="css/index.css" media="print" />
|
|
1
2
|
@import url("css/demo.css") screen;
@media screen{ }
|
|
1
2
|
<link rel=”stylesheet” media=”all and
(orientation:portrait)” href=”portrait.css”>
|
|
1
2
|
<link rel=”stylesheet” media=”all
and (orientation:landscape)”href=”landscape.css”>
|
|
1
|
@media screen and (min-width:360px) and (max-width:500px) {}
|
|
1
2
|
<link rel="stylesheet" type="text/css"
href="indexA.css" media="screen and (min-width: 800px)">
|
|
1
2
|
<link rel="stylesheet" type="text/css"
href="indexB.css" media="screen and (min-width: 600px) and (max-width: 800px)">
|
|
1
2
|
<link rel="stylesheet" type="text/css"
href="indexC.css" media="screen and (max-width: 600px)">
|
原文:http://www.cnblogs.com/doseoer/p/6273347.html