用js控制div跟随鼠标移动,鼠标点击后,鼠标离开,div留在当前点击的位置怎么做

JavaScript013

用js控制div跟随鼠标移动,鼠标点击后,鼠标离开,div留在当前点击的位置怎么做,第1张

你要的应该是拖拽效果,可以通过jq插件做

http://www.runoob.com/jqueryui/example-draggable.html

基本原理就是鼠标按下修改div的left和top(或者right/bottom)。鼠标离开不变。

<!DOCTYPE html>

<html>

<head>

<script src="/jquery/jquery-1.11.1.min.js">

</script>

<Style>

#test{

position:absolute

}

</style>

<script>

$(document).mousedown(function(){

       $(this).mousemove(function(e){

$("#test").css({ "left": e.pageX+"px", "top": e.pageY+"px" }) 

           $(document).mouseup(function(){

               $(this).unbind('mousemove')

           })

       })

   })

</script>

</head>

<body>

<div id="test">ssssssssss</div>

</body>

</html>

新建html复制黏贴运行即可

<html>

<head>

<title>鼠标跟随效果</title>

<style type="text/css">

html {

overflow: hidden

}

body {

position: absolute

height: 100%

width: 100%

margin:0

padding:0

}

#screen {

background:#000

position: absolute

width: 100%

height: 100%

}

#screen span {

background: #fff

font-size: 0

overflow: hidden

width: 2px

height: 2px

}

</style>

<script type="text/javascript">

var Follow = function () {

var $ = function (i) {return document.getElementById(i)},

addEvent = function (o, e, f) {o.addEventListener ? o.addEventListener(e, f, false) : o.attachEvent('on'+e, function(){f.call(o)})},

OBJ = [], sp, rs, N = 0, m

var init = function (id, config) {

this.config = config || {}

this.obj = $(id)

sp = this.config.speed || 4

rs = this.config.animR || 1

m = {x: $(id).offsetWidth * .5, y: $(id).offsetHeight * .5}

this.setXY()

this.start()

}

init.prototype = {

setXY : function () {

var _this = this

addEvent(this.obj, 'mousemove', function (e) {

e = e || window.event

m.x = e.clientX

m.y = e.clientY

})

},

start : function () {

var k = 180 / Math.PI, OO, o, _this = this, fn = this.config.fn

OBJ[N++] = OO = new CObj(null, 0, 0)

for(var i=0i<360i+=20){

var O = OO

for(var j=10j<35j+=1){

var x = fn(i, j).x,

y = fn(i, j).y

OBJ[N++] = o = new CObj(O , x, y)

O = o

}

}

setInterval(function() {

for (var i = 0i <Ni++) OBJ[i].run()

}, 16)

}

}

var CObj = function (p, cx, cy) {

var obj = document.createElement("span")

this.css = obj.style

this.css.position = "absolute"

this.css.left = "-1000px"

this.css.zIndex = 1000 - N

document.getElementById("screen").appendChild(obj)

this.ddx = 0

this.ddy = 0

this.PX = 0

this.PY = 0

this.x = 0

this.y = 0

this.x0 = 0

this.y0 = 0

this.cx = cx

this.cy = cy

this.parent = p

}

CObj.prototype.run = function () {

if (!this.parent) {

this.x0 = m.x

this.y0 = m.y

} else {

this.x0 = this.parent.x

this.y0 = this.parent.y

}

this.x = this.PX += (this.ddx += ((this.x0 - this.PX - this.ddx) + this.cx) / rs) / sp

this.y = this.PY += (this.ddy += ((this.y0 - this.PY - this.ddy) + this.cy) / rs) / sp

this.css.left = Math.round(this.x) + 'px'

this.css.top = Math.round(this.y) + 'px'

}

return init

}()

</script></head>

<body>

<div id="screen"></div>

<script type="text/javascript">

new Follow('screen', {speed: 4,

animR : 2,

fn : function (i, j) {

return {

x : j/4*Math.cos(i),

y : j/4*Math.sin(i)

}

}})

</script></body>

</html>