JQuery手速测试小游戏实现思路详解
(-1)写在前面
我用的chrome49,jquery3.0,我得到过399分,信不信由你。
(1)设计思路
两个p元素放在div里,每个p元素的高度和宽度都和div一样,当鼠标放在div上时,第一个p向上移动(更改marginTop值),当鼠标离开div上时,第一个p向下移动。
(2)知识储备
a. :nth-child
#lol p:nth-child(1),当前元素p相对于他的父元素的所有子元素,如果第一个元素是p则匹配成功。
#lol :nth-child(1) 相当于#lol *:nth-child(1)
(3) 代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset=utf-8> <script type="text/javascript" src="debug-jquery-3.0.0.js"></script> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> <title>为了生活</title> <style type="text/css"> * { margin:0px; padding:0; } body { position:absolute; } #lol { width:400px; height:400px; position:absolute; overflow:hidden; cursor:pointer; } #lol p { width:400px; height:400px; } #lol p:nth-child(1) { background:blue; } #lol p:nth-child(2) { background:orange; } </style> <script type="text/javascript"> $(function() { var $lol = $("#lol"), $oneP = $lol.children().first(), $score = $("#score"); $lol.centerPos(); $lol.hover(function() { $oneP.animate({marginTop:-$oneP.height()},400) },function() { var number = -parseInt($oneP.css("marginTop")); if(number == $oneP[0].offsetHeight) { number = 0; } $(score).text(number); $oneP.stop(true,false).animate({marginTop:0},400); }) }) $.fn.centerPos = function() { var parent; this.each(function(index) { parent = this.parentNode; if(parent == document.body) { parent = window; } var position = $(this).css("position"); if(position == "fixed" || position=="absolute") { $(this).css("left",($(parent).width()-this.offsetWidth)/2+"px") .css("top",($(parent).height()-this.offsetHeight)/2+"px"); } else { window.console.error("没有设置有效的position值"); } }) return this; } </script> </head <body> <div>当前得分:<span id="score">0</span>分</div> <div id="lol"> <p></p> <p></p> </div> </body> </html>
相关推荐
magicandy 2020-01-04
veppay 2019-12-16
83256135 2016-12-25
wangba 2016-10-16
seaocean 2016-09-26
84246736 2016-06-05
89236032 2016-03-29
微软FixIt 2015-10-19
ysd00 2015-08-13
fuckyoubitchsb 2015-07-31
zhouboxiao 2015-07-30
小李匪盗 2015-04-25
普普通通 2015-02-27
internet我最爱 2014-10-13
易分享 2014-10-12