HTML5拖放代码问题

html-css026

HTML5拖放代码问题,第1张

1.effectAllowed属性表示允许拖放元素的哪种dropEffect。什么是dropEffect?也是dataTransfer 的一种属性。

dropEffect属性可以知道被拖动的元素能够执行哪种放置行为(当拖到目的地时)。这个属性有下列4个可能的值。

“none”:不能把拖动的元素放在这里。这是除文本框之外所有元素的默认值。

“move”:应该把拖动的元素移动到放置目标。

“copy”:应该把拖动的元素复制到放置目标。

“link”:表示放置目标会打开拖动的元素(但拖动的元素必须是一个链接,有URL)。

2. dt.effectAllowed = 'all':即说被拖动元素在放置到目的地时,可以上面的任意一种效果来处理。

3. 必须在ondraggstart事件处理程序中设置effectAllowed属性。

canvas是h5的一大亮点。这是我之前学习做的笔记,可以参考一下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>canvas 教程 --- ITDragon博客 </title>

<style>

canvas{background: #F9F9F9border:1px solid #000}

.one,.two,.thr,.four{float:leftmargin-left: 200px}

</style>

<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js" ></script>

<script>

$(function(){

// 创建2d的画图环境

var canvas_2d = document.getElementById("canvas-test").getContext("2d")

// fillRect() 绘制“被填充”的矩形 / 前两个数是坐标,后两个是像素大小

canvas_2d.fillRect(0,0,100,100)

// strokeRect() 绘制矩形(无填充)

canvas_2d.strokeRect(100,0,100,100)

// fillStyle 设置或返回用于填充绘画的颜色、渐变或模式

canvas_2d.fillStyle = "rgba(0,0,0,0.8)"

// strokeStyle 设置或返回用于笔触的颜色、渐变或模式

canvas_2d.strokeStyle = "cadetblue"

// shadowColor 设置或返回用于阴影的颜色

canvas_2d.shadowColor = "rgba(3,3,3,0.6)"

// shadowBlur 设置或返回用于阴影的模糊级别

canvas_2d.shadowBlur = 10

// shadowOffsetX 设置或返回阴影距形状的水平距离

canvas_2d.shadowOffsetX = 4

// shadowOffsetY 设置或返回阴影距形状的垂直距离

canvas_2d.shadowOffsetY = 4

canvas_2d.fillRect(200,0,100,100)

canvas_2d.strokeRect(300,0,100,100)

// createLinearGradient() 创建线性渐变。前两个是渐变起点坐标,后两个便是结束坐标

var linearGradient = canvas_2d.createLinearGradient(100,100,100,200)

// addColorStop() 规定渐变对象中的颜色和停止位置

linearGradient.addColorStop(0,"#000")

linearGradient.addColorStop(1,"#eee")

canvas_2d.fillStyle = linearGradient

canvas_2d.fillRect(100,100,100,100)

// createRadialGradient() 创建放射状/环形的渐变。每三个为一组,前两个是坐标后一个是半径

var radialGradient = canvas_2d.createRadialGradient(350,150,40,350,150,80)

radialGradient.addColorStop(0,"#eee")

radialGradient.addColorStop(1,"#000")

canvas_2d.fillStyle = radialGradient

canvas_2d.fillRect(300,100,100,100)

// createPattern() 在指定的方向上重复指定的元素这个我就不试了

/*---------------------one-----------分割线------------two-----------------------*/

var $canvas_line = document.getElementById("canvas-line")

var canvas_2d_line = $canvas_line.getContext("2d")

$canvas_line.onmousedown=function (e) {

var startx=e.layerX

var starty=e.layerY

// moveTo(x,y) 开始绘制一条直线,指定线条的起点

canvas_2d_line.moveTo(startx,starty)

$canvas_line.onmousemove=function (e) {

var endx=e.layerX

var endy=e.layerY

// lineTo(x1,y1) 指定直线要到达的位置

canvas_2d_line.lineTo(endx,endy)

// stroke() 绘制路径

canvas_2d_line.stroke()

}

$canvas_line.onmouseup=function () {

$canvas_line.onmousemove=null

$canvas_line.onmouseup=null

}

}

/*

lineCap 设置或返回线条的结束端点样式

butt:向线条的每个末端添加平直的边缘 缺省

round:向线条的每个末端添加圆形线帽。

square:向线条的每个末端添加正方形线帽,效果不明显

lineJoin 设置或返回两条线相交时,所创建的拐角类型

miter:创建尖角缺省

bevel:创建斜角。

round:创建圆角。

lineWidth 设置或返回当前的线条宽度

number:当前线条的宽度,以像素计

miterLimit 设置或返回最大斜接长度

number:正数。规定最大斜接长度.5

斜接长度指的是在两条线交汇处内角和外角之间的距离

只有当 lineJoin 属性为 "miter" 时,miterLimit 才有效

*/

canvas_2d_line.lineWidth=10

canvas_2d_line.lineCap="round"

canvas_2d_line.moveTo(10,10)

canvas_2d_line.lineTo(150,10)

canvas_2d_line.stroke()

/*------------------two--------------分割线---------------thr--------------------*/

// beginPath():开始一条路径,或重置当前的路径。

// closePath():创建从当前点到开始点的路径,关闭当前的绘图路径

var canvas_radial=document.getElementById("canvas-radial")

var canvas_2d_radial=canvas_radial.getContext("2d")

// 绘制二次贝塞尔曲线 三部曲 quadraticCurveTo 前两个是贝塞尔左边,后两个是结束坐标

//canvas_2d_radial.moveTo(50,100)

//canvas_2d_radial.quadraticCurveTo(200,200,300,100)

//canvas_2d_radial.stroke()

canvas_radial.onmousedown=function (e) {

var startx=e.layerX

var starty=e.layerY

canvas_radial.onmouseup=function (e) {

var endx=e.layerX

var endy=e.layerY

canvas_radial.onmousemove=function (e) {

canvas_2d_radial.clearRect(0,0,400,400)

var conx=e.layerX

var cony=e.layerY

canvas_2d_radial.beginPath()

canvas_2d_radial.moveTo(startx,starty)

canvas_2d_radial.quadraticCurveTo(conx,cony,endx,endy)

canvas_2d_radial.stroke()

}

}

}

// arc(x坐标,y坐标,r半径,开始角度,结束角度,false逆时针/true顺时针)创建弧/曲线(用于创建圆或部分圆)

var canvas_2d_arc=canvas_radial.getContext("2d")

canvas_2d_arc.arc(100,100,30,0,Math.PI/2,false)

canvas_2d_arc.stroke()

/*------------------thr--------------分割线---------------four--------------------*/

var canvas=document.getElementById("canvas-is-path")

var canvas_2d_is_path=canvas.getContext("2d")

canvas_2d_is_path.arc(200,200,50,0,2*Math.PI)

canvas_2d_is_path.stroke()

var angle=0

canvas.onclick=function (e) {

var mx=e.layerX

var my=e.layerY

// isPointInPath(x,y) 返回 true,说明指定的点位于当前路径中,反之不在

if(canvas_2d_is_path.isPointInPath(mx,my)){

setInterval(function () {

// 清除画布 和 beginPath()连用

canvas_2d_is_path.clearRect(0,0,400,400)

angle+=0.2

canvas_2d_is_path.beginPath()

canvas_2d_is_path.arc(200,200,50+10*Math.sin(angle),0,2*Math.PI)

canvas_2d_is_path.stroke()

},50)

}

}

})

</script>

</head>

<body>

<section class="one">

<hgroup>

<h2>canvas 教程</h2>

<h3>画矩形</h3>

</hgroup>

<canvas width="400" height="400" id="canvas-test">

您需要更新浏览器呢 凸^-^凸

</canvas>

</section>

<section class="two">

<hgroup>

<h2>canvas 教程 <a href="http://blog.csdn.net/qq_19558705/article/details/50519952">http://blog.csdn.net/qq_19558705/article/details/50519952</a></h2>

<h3>点击开始画线 / 路径(线条)修饰</h3>

</hgroup>

<canvas width="400" height="400" id="canvas-line">

您需要更新浏览器呢 凸^-^凸

</canvas>

</section>

<section class="thr">

<hgroup>

<h2>canvas 教程</h2>

<h3>绘制二次贝塞尔曲线(点击鼠标滑动) / 绘制弧线</h3>

</hgroup>

<canvas width="400" height="400" id="canvas-radial">

您需要更新浏览器呢 凸^-^凸

</canvas>

</section>

<section class="four">

<hgroup>

<h2>canvas 教程</h2>

<h3>脉动 (点击圆内)</h3>

</hgroup>

<canvas width="400" height="400" id="canvas-is-path">

您需要更新浏览器呢 凸^-^凸

</canvas>

</section>

</body>

</html>

1、启动 Visual Studio 2010。

2、在“文件”菜单中,依次选择“新建”和“项目”。将打开“新建项目”对话框。在 Visual Basic 或 Visual C# 中选择“WEB应用程序”,然后将其命名为“HTML5Template”。单击“确定”。

3、在这个项目中添加下面这些文件。

两个分别放置js和css的文件夹:css、js

HTML5基本模板页:index.html

jQuery:jquery-1.4.2.min.js

Modernizr :modernizr-1.5.min.js

HTML5 样式文件:html5reset.css