http://blog.poetries.top/2016/10/19/HTML5+CSS3%E5%9F%BA%E7%A1%80%E5%9B%9E%E9%A1%BE%20/
这篇文章主要总结H5的一些新增的功能以及一些基础归纳,这里只是一个提纲,并不是很详细,后面会一直完善补充新的内容,本文是一些笔记记录,放在这里供自己参考也供他人学习!
HTML5
是新一代的 HTML
DTD
声明改变 <!DOCTYPE html>
small
这个元素表示边栏评论,如附属细则cite
这个元素可用于显示作品标题(图书、电影、诗歌等)adress
这个元素显示article
或整个文档的合同信息,且位于footer
这个元素之中time
显示人和机器可读的日期和时间,而且机器可读的时间戳是属性datetime
的值第二个可选的是pubtime
用于表示出版日期值HTML
标签basefont
big
center
font
s
strike
tt
u
frame
frameset
noframes
acronym
applet
isindex
dir
重新定义的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
,关闭提示选择off
formaction:
在submit
里定义提交地址datalist:
输入框选择列表配合list
使用 list
值为datalist
的id
值output:
计算或脚本输出validity
对象,通过下面的valid
可以查看验证是否通过,如果八种验证都返回true
,一种验证失败返回false
oText.addEventListener("invalid",fn1,false)
ev.preventDefault()
: 阻止默认事件valueMissing
: 当输入值为空的时候,返回true
typeMismatch
: 控件值与预期不吻合,返回true
patternMismatch
: 输入值不满足pattern
正则,返回true
cusomError
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
:文本的对齐方式
css1
left
:默认值 左对齐right
:右对齐center
:居中justify
: 内容两端对齐。css3
start
:开始边界对齐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
和firefox
text-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-direction
flex-wrap
flex-flow
justify-content
align-items
align-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个属性设置在项目上
order
flex-grow
flex-shrink
flex-basis
flex
align-self
属性详解
order
属性定义项目的排列顺序。数值越小,排列越靠前,默认为0
flex-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
: 从borde
r区域开始显示背景。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......
默认top
0-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 - 360
S
:Saturation
(饱和度)。取值为:0.0% - 100.0%L
: Lightness
(亮度)。取值为:0.0% - 100.0%A
: alpha
透明度 0~1之间
语法:HSLA(H,S,L,A)
HSL色轮
透明颜色:transparent
border
实现三角箭头、风车等透明度:
opacity
0-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 color
inset
:投影方式inset
:内投影outset
:外投影 默认(不能设置)x
、y
:阴影偏移blur
:模糊半径(灰度)spread
:扩展阴影半径color
CSS3
盒模型倒影
box-reflect
倒影
above|below|left|right;
CSS3其他盒模型
box-sizing
盒模型解析模式content-box
标准盒模型(和css2
一样的计算)width/height=border+padding+content
border-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 center
transform 新增函数
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
,默认高度150px
canvas
宽高需要设置在标签中 否则绘制的东西可能出错<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/180
false
),逆时针(true
)strokeText(文本,x,y)
; 绘制空心文本fillText(文本,x,y)
; 绘制实心文本font = "font-size font-family"
注:尺寸 字体缺一不可
textAlign = "";
文本左右对齐方式 start center end left right
textBaseline
文本上下对齐方式
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-repeat
canvas变换
translate(x,y)
rotate(弧度)
: 旋转 弧度公式 = 角度*PI/180
scale(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
页面中添加svg
circle
:圆形
cx
,cy
r
fill
stroke
stroke-width
stlye
样式fill = "none/transparent"
cx
属性定义的椭圆中心的x坐标cy
属性定义的椭圆中心的y坐标rx
属性定义的水平半径ry
属性定义的垂直半径width
height
宽高x
,y
rx
,ry
line
:线条
x1
,y1
,x2
,y2
stroke-opacity
透明 fill-opacity
polyline:折线
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-size
image
标签
x
, y
, width
height
xlink:href
(图片地址)纬度 : 东西连接的线
位置信息从何而来
IP
地址GPS
全球定位系统Wi-Fi
无线网络avigator.geolocation
getCurrentPosition
(请求成功,请求失败,数据收集方式)请求成功函数
coords.longitude
coords.latitude
coords.accuracy
coords.altitude
coords.altitudeAcuracy
coords.heading
coords.speed
new Date(position.timestamp)
请求失败函数
code
timeout
值,获取位置超时了数据收集 : json的形式
enableHighAcuracy
: 更精确的查找,默认false
timeout
: 获取位置允许最长时间,默认infinity
maximumAge
: 位置可以缓存的最大时间,默认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
来获取到相应的value
removeItem()
:
value
clear()
:
存储事件:
storage
事件Key
: 修改或删除的key
值,如果调用clear()
,key
为null
newValue
: 新设置的值,如果调用removeStorage()
,key
为null
oldValue
: 调用改变前的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.state
draggable
属性draggable :true
ondragstart
: 拖拽前触发ondrag
:拖拽前、拖拽结束之间,连续触发ondragend
:拖拽结束触发ondragenter
:进入目标元素触发ondragover
:进入目标、离开目标之间,连续触发ondragleave
:离开目标元素触发ondrop
:在目标元素上释放鼠标触发
ondragover
事件里面阻止默认事件拖拽兼容问题
火狐浏览器下需设置dataTransfer
对象才可以拖拽除图片外的其他标签
dataTransfer
对象setData()
: 设置数据 key
和value
(必须是字符串)getData()
: 获取数据,根据key
值,获取对应的value
effectAllowed
: 设置光标样式(none
, copy
, copyLink
, copyMove
, link
, linkMove
,move
, all
和uninitialized
)
setDragImage
:三个参数(指定的元素,坐标X
,坐标Y
)
files
: 获取外部拖拽的文件,返回一个filesList
列表
filesList
下有个type
属性,返回文件的类型读取文件信息
FileReader
(读取文件信息)
readAsDataURL
onload
当读取文件成功完成的时候触发此事件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
内页:
contentWindow
window.top
(找到最顶级的父页面)/parent
(第一父页面)window.open
window.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
电视关键字
and
not
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