JavaScript进阶学习之图片操作2
沉沙 2018-10-19 来源 : 阅读 812 评论 0

摘要:本篇教程介绍了JavaScript进阶学习之图片操作2,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript进阶学习之图片操作2,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<

在前一次,我们实现最简单的图片切换效果,这一次,依旧还是图片切换,具体效果如下:

通过点击下面的小图,上面的大图和标题随之切换。因此,我们需要三个容器分别放标题,大图和小图。
复制代码
<!--大图描述-->
<p id="des">蒲公英</p>
<!--大图展示-->
<img id="big_img" src="img/1.jpg" alt="" width="540">
<!--小图列表-->
<ul id="fj">
  <li>
    <a href="img/1.jpg" title="蒲公英">
      <img src="img/1.jpg" width="100" alt="蒲公英">
    </a>
  </li>
  <li>
    <a href="img/2.jpg" title="热气球">
      <img src="img/2.jpg" width="100" alt="热气球">
    </a>
  </li>
  <li>
    <a href="img/3.jpg" title="别致小屋">
      <img src="img/3.jpg" width="100" alt="别致小屋">
    </a>
  </li>
  <li>
    <a href="img/4.jpg" title="高山湖水">
      <img src="img/4.jpg" width="100" alt="高山湖水">
    </a>
  </li>
  <li>
    <a href="img/5.jpg" title="高速公路">
      <img src="img/5.jpg" width="100" alt="高速公路">
    </a>
  </li>
</ul>
复制代码

然后获取相应的标签

 var ul = document.getElementById("fj");
 var aList = ul.getElementsByTagName("a");
 var des = document.getElementById("des");
 var big_img = document.getElementById("big_img");

最后,给每一个小图绑定点击事件,当点击到当前元素是,获取当前元素的title和和href字段,并将这两个字段值赋值给相应元素,需要注意的是,我们采用a标签的href来保存图片,但是其默认事件是进行链接跳转,所以在赋值后,需要阻止元素的默认事件。
复制代码

for(var i=0; i<aList.length; i++){
      aList[i].onclick = function () {
          big_img.src = this.href;
          des.innerHTML = this.title;
           return false;   //阻止默认事件
      }
}

复制代码

到此为止,我们就实现了预期的效果了,完整代码如下:
复制代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }

        body{
            margin: 50px;
        }

        #fj{
            list-style: none;
        }

        #fj li{
            float: left;
            margin-left: 10px;
        }

        #big_img{
            margin-left: 10px;
        }

        #des{
            margin: 10px;
            color: orangered;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <!--大图描述-->
    <p id="des">蒲公英</p>
    <!--大图展示-->
    <img id="big_img" src="img/1.jpg" alt="" width="540">
    <!--小图列表-->
    <ul id="fj">
        <li>
            <a href="img/1.jpg" title="蒲公英">
                <img src="img/1.jpg" width="100" alt="蒲公英">
            </a>
        </li>
        <li>
            <a href="img/2.jpg" title="热气球">
                <img src="img/2.jpg" width="100" alt="热气球">
            </a>
        </li>
        <li>
            <a href="img/3.jpg" title="别致小屋">
                <img src="img/3.jpg" width="100" alt="别致小屋">
            </a>
        </li>
        <li>
            <a href="img/4.jpg" title="高山湖水">
                <img src="img/4.jpg" width="100" alt="高山湖水">
            </a>
        </li>
        <li>
            <a href="img/5.jpg" title="高速公路">
                <img src="img/5.jpg" width="100" alt="高速公路">
            </a>
        </li>
    </ul>
<script>
    window.onload = function () {
        // 1. 获取需要的标签
        var ul = document.getElementById("fj");
        var aList = ul.getElementsByTagName("a");
        var des = document.getElementById("des");
        var big_img = document.getElementById("big_img");

        // 2.绑定事件
        for(var i=0; i<aList.length; i++){
            aList[i].onclick = function () {
                big_img.src = this.href;
                des.innerHTML = this.title;
                return false;  //阻止默认事件
            }
        }
    }
</script>
</body>
</html>

复制代码

完整代码下载链接:点这里

还有一种和这个类似的效果,就是我们在网上购物常常看到的如下效果:

个人觉得实现方式和上面几乎相同,就不详细介绍了,下面贴出详细代码: 
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
list-style: none;
}

#box{
border: 1px solid #cccccc;

width: 360px;
height: 70px;

padding-top: 360px;
margin: 100px auto;

background: url("images/01big.jpg") no-repeat;
}

ul{
display: flex;
justify-content: center;
align-items: center;

cursor: pointer;
}
</style>
</head>
<body>
<div id="box">
<ul>
<li><img src="images/01.jpg" alt=""></li>
<li><img src="images/02.jpg" alt=""></li>
<li><img src="images/03.jpg" alt=""></li>
<li><img src="images/04.jpg" alt=""></li>
<li><img src="images/05.jpg" alt=""></li>
</ul>
</div>

<script>
window.onload = function () {
// 1. 获取需要的标签
var box = document.getElementById("box");
var allLi = box.getElementsByTagName("li");

// 2. 监听鼠标的进入
for(var i=0; i<allLi.length; i++){
var sLi = allLi[i];
sLi.index = i+1;
sLi.onmouseover = function () {
console.log(this.index);
box.style.background = 'url("images/0'+ this.index +'big.jpg") no-repeat';
}
}
}
</script>
</body>
</html>
   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程