站长技术网

首页 > 网站基础 > DIV&CSS >

css3让div随鼠标移动而抖动起来

直接上代码

复制代码代码如下:

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

<style type="text/css">

.layer {

width:400px;

height:400px;

background-color:#FF7373;

transa

}

.A {

position: absolute;

top: 23px;

left: 10px;

}

.B {

position: absolute;

top: 223px;

left: 516px;

}

.C {

position: absolute;

top: 384px;

left: 1000px;

}

</style>

</head>

<body>

<p class="layer A"></p>

<p class="layer B"></p>

<p class="layer C"></p>

</body>

<script type="text/javascript">

var items = document.getElementsByClassName("layer");

document.addEventListener('mousemove', function (evt){

var x = evt.clientX;

var y = evt.clientY;

//console.log(x);

var winWidth = window.innerWidth;

var winHeight = window.innerHeight;

var halfWidth = winWidth / 2;

var halfHeight = winHeight / 2;

var rx = x - halfWidth;

var ry = halfHeight - y;

var length = items.length;

var max = 30;

for (var i = 0 ; i < length ; i++) {

var dx = (items[i].getBoundingClientRect().width/max)*(rx / -halfWidth);

var dy = (items[i].getBoundingClientRect().height/max)*(ry / halfHeight);

items[i].style['transform'] = items[i].style['-webkit-transform'] = 'translate('+dx+'px,'+dy+'px)';

}

}, false);

</script>

</html>

说明一下分别拿到每个p的长度和宽度,通过比例算出相对于窗口的合适的偏移量,max是每个p左右偏移最多不超过的值。