js初识第十二节

div移动和发射子弹的案例

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>键盘事件和组合键</title>

<style>

*{

margin: 0;

padding: 0;

}

#div1{width:40px;

height:40px;

position:absolute;

background:orange;

transform:rotate(0deg);

}

.pd{

width:5px;

height:15px;

border-radius:50%;

position:absolute;

background:#f06;

}

</style>

</head>

<body>

<div id="div1" style="top:350px;left:100px"></div>

</body>

</html>

<script>

var div1 = document.getElementById("div1");

document.onkeydown = function(e) {

var e = e || window.event;

var code = e.keyCode || e.which;

//alert(code);

switch (code) {

case 37:

      // 按的是<-



      div1.style.left = (div1.offsetLeft - 10<0?0:div1.offsetLeft - 10)+'px';

      //考虑边界条件

      break;

    case 39:

      // 按的是->

      //考虑边界条件

      if (div1.offsetLeft+div1.offsetWidth>=document.body.clientWidth) {

        div1.offsetLeft = document.body.clientWidth - div1.offsetWidth;

        div1.style.left = div1.offsetLeft + 'px';

      }else{

      div1.style.left = div1.offsetLeft + 10 +'px';

      }

      break;

case 32:

    // 按的是空格 创建子弹    

var bullet = document.createElement("div");

document.body.appendChild(bullet);

bullet.className = "pd";

bullet.style.left = div1.offsetLeft + div1.offsetWidth/2 - bullet.offsetWidth/2 + "px";

bullet.style.top = div1.offsetTop - bullet.offsetHeight + "px";

var tt = 0;

setInterval(function(){

                    if (parseInt(bullet.style.top)<-20) {

                    bullet.remove();

                    }else{

                    bullet.style.top = div1.offsetTop - bullet.offsetHeight - tt + 'px';

                    }

                    tt+=50;

},100);

}

}

</script>

固定导航栏的案例

<!DOCTYPE html>

<html>

<head lang="en">

    <meta charset="UTF-8">

    <title></title>

    <style>

        *{

        margin:0;

        padding:0;

        }

#one{

width:100%;

height:80px;

background: pink;

}

#two{

width:100%;

height:40px;

line-height: 40px;

text-align:center;

background:green;

}

#three{

width:100%;

height:2000px;

background:orange;

}

.divFixed{

position:fixed;

top:0;

}

    </style>

</head>

<body>

<div id="one"></div>

<div id="two">这里以后是导航栏</div>

<div id="three"></div>

</body>

</html>

<script type="text/javascript">

    function $(id) {

return document.getElementById(id);

}

window.onscroll = function(){

var top = document.body.scrollTop || document.documentElement.scrollTop;

if(top>80){

          $('two').classList.add('divFixed');

}else{

$('two').className = '';

}

}

</script>

放大镜案例

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<style type="text/css">

*{

margin: 0;

padding: 0;

}

#box{

width: 350px;

height: 350px;

border: 1px solid #000;

margin: 200px;

position: relative;

}

#big{

width: 400px;

height: 400px;

border: 1px solid #000;

overflow: hidden;

position: absolute;

top:0;

left : 360px;

display: none;

}

#mask{

width: 175px;

height: 175px;

background: paleturquoise;

position: absolute;

left:0;

top: 0;

opacity: 0.3;

display: none;

cursor: move;

}

#small{

position: relative;

}

#bigImg{

position: absolute;

left: 0;

top: 0;

}

</style>

<body>

<div id="box" >

<div id="small"><!--小图区-->

<img src="001.jpg" alt="" />

<div id="mask"></div><!--遮罩层-->

</div>

<div id="big"><!--大图区-->

<img src="0001.jpg" alt="" id="bigImg"/>

</div>

</div>

</body>

</html>

<script type="text/javascript">

function $(id) {

return document.getElementById(id);

}

    var box = $('box');

    var small = $('small');

    var mask = $('mask');

    var big = $('big');

    var bigImg = $('bigImg');

    //鼠标滑进小图区时显示大图区,显示小图区域遮罩

    small.onmouseover = function(e){

    var e = e||event;

    big.style.display = 'block';

    mask.style.display = 'block';

    }

    small.onmouseout = function(e){

    var e = event;

    big.style.display = 'none';

    mask.style.display = 'none';

    }

    small.onmousemove = function(e){

        var e = e||event;

        var x = e.pageX - box.offsetLeft-mask.offsetWidth/2;

        console.log(x);

        var y = e.pageY - box.offsetTop-mask.offsetHeight/2;

        // var maxX = box.clientWidth-mask.clientWidth;

        // var maxY = box.clientHeight-mask.clientHeight;

        //以上写法也可行

        console.log(y);

        var maxX = box.offsetWidth-mask.offsetWidth;

        var maxY = box.offsetHeight-mask.offsetHeight;

        x = x<0?0:(x>maxX?maxX:x)

        y = y<0?0:(y>maxY?maxY:y)

        mask.style.left = x+'px';

        mask.style.top = y+'px';

        //放大大图里面的图片

        // 小图片宽度:大图片宽度 = x: 大图片位置

        var BX = x*bigImg.clientWidth/small.clientWidth;

        var BY = y*bigImg.clientHeight/small.clientHeight;

        bigImg.style.left = -BX+'px';

        bigImg.style.top = -BY+'px';

    }

</script>

一个无缝滚动的案例

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<style>

*{

margin:0;

padding:0;

}

div{

width:600px;

height:200px;

position:relative;

border:1px solid red;

margin:100px;

overflow:hidden;

}

ul{

width:600%;

position:absolute;

left:0;

}

li{

float:left;

list-style:none;

}

</style>

<body>

<div id="box">

<ul id="u">

<li><img src="a.jpg" alt="" /></li>

<li><img src="b.jpg" alt="" /></li>

<li><img src="c.jpg" alt="" /></li>

<li><img src="d.jpg" alt="" /></li>

<!-- 重复放两张图片是为了让无缝滚动看起来没有间隔 -->

<li><img src="a.jpg" alt="" /></li>

<li><img src="b.jpg" alt="" /></li>

</ul>

</div>

</body>

</html>

<script>

//一个无缝滚动的轮播案例

var oul = document.getElementById('u');

var dis = 0;

var timer = setInterval(auto,100);

function auto(){

oul.style.left = dis+'px';

        dis-=20;

        if(parseInt(oul.style.left)<=-1200){

        dis = 0;

        }

}//单独抽离出来当做一个函数处理是为了鼠标移出区域的时候方便重新调用

    oul.onmouseover = function(){

    clearInterval(timer);

    }

    oul.onmouseout = function(){

      timer = setInterval(auto,100);

    }

//    var oul = document.getElementById('u');

// var dis = 0;

// function autoplay(){

// oul.style.left = dis+'px';

// dis-=10;

// if(dis<=-1200){

// dis = 0;

// }

// }

// var timer = setInterval(autoplay,100);

// oul.onmouseover = function(){

// clearInterval(timer);

// }

// oul.onmouseout = function(){

//        timer = setInterval(autoplay,100)

// }

</script>


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容