杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播

简介: 杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播

 

JavaScript案例之跑马灯左右无缝连接

效果图:

思路:

   1.先做界面

       1.1 制作一个大盒子,进行存放整个图片及按钮区域

       1.2 制作两个按钮和中间区域盒子

       1.3 中间区域盒子中使用无序列表进行排放图片,并且每个图片可以作为一个链接进行点击

   2..CSS

       2.1 清除全局的外边距和内边距

       2.2 去除无序列表的黑点

       2.3 去除存放图片区域的边界线

       2.4 确定大盒子的宽高和位置【宽、高、上下空出50像素,水平居中、绝对定位】

       2.5 左、按钮的样式【块级显示、宽、高、背景图片及平铺位置、绝对定位、上、左】

       2.6 左按钮悬浮后样式【背景图片及平铺位置

   2.7 右、按钮的样式【块级显示、宽、高、背景图片及平铺位置、绝对定位、上、左】

       2.8 按钮悬浮后样式【背景图片及平铺位置】

       2.9 中间盒子定位

       2.10 中间盒子悬浮效果

   3..JavaScript

       3.1根据不同的标签名称去获取不同的元素          

     ...{尚未写完,稍后补上}

参考代码:

Html代码

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript案例之跑马灯左右无缝连接</title>
</head>
<body>
<div class="roll" id="roll">
    <a href="javascript:void(0);" class="btn_left"></a>
    <a href="javascript:void(0);" class="btn_right"></a>
    <div class="wrap">
        <ul>
            <li><a href="http://teach.javabs.cn/"><img src="img/1.jpg" alt="杨校老师在线课堂开课了" /></a></li>
            <li><a href="http://teach.javabs.cn/"><img src="img/2.jpg" alt="杨校老师在线课堂开课了"/></a></li>
            <li><a href="http://teach.javabs.cn/"><img src="img/3.jpg" alt="杨校老师在线课堂开课了"/></a></li>
            <li><a href="http://teach.javabs.cn/"><img src="img/4.jpg" alt="杨校老师在线课堂开课了"/></a></li>
        </ul>
    </div>
</div>
</body>
</html>

 CSS代码

* {
  padding: 0;
  margin: 0;
}
 
li {
  list-style: none;
}
 
img {
  border: 0;
}
 
.roll {
  width: 880px;
  height: 108px;
  margin: 50px auto 0;
  position: relative;
}
 
.btn_left {
  display: block;
  width: 68px;
  height: 68px;
  background: url(img/btn.jpg) no-repeat -70px -69px;
  position: absolute;
  top: 20px;
  left: 1px;
  z-index: 1;
}
 
.btn_left:hover {
  background: url(img/btn.jpg) no-repeat -70px 0;
}
 
.btn_right {
  display: block;
  width: 68px;
  height: 68px;
  background: url(img/btn.jpg) no-repeat 1px -69px;
  position: absolute;
  top: 20px;
  right: 0;
  z-index: 1;
}
 
.btn_right:hover {
  background: url(img/btn.jpg) no-repeat 1px 0;
}
 
.roll .wrap {
  width: 728px;
  height: 108px;
  margin: 0 auto;
  position: relative;
  overflow: hidden;
}
 
.roll ul {
  position: absolute;
  top: 0;
  left: 0;
}
 
.roll li {
  float: left;
  width: 182px;
  height: 108px;
  text-align: center;
}
 
.roll li a:hover {
  position: relative;
  top: 2px;
}
 
.control {
  border-bottom: 1px solid #ccc;
  background: #eee;
  text-align: center;
  padding: 20px 0;
}

JavaScript代码

window.onload = function() {
  var oDiv = document.getElementById('roll');
  var oUl = oDiv.getElementsByTagName('ul')[0];
  var aLi = oUl.getElementsByTagName('li');
  var oBtn = oDiv.getElementsByTagName('a'); //获取按钮
 
  oUl.innerHTML += oUl.innerHTML;
  oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px';
 
  var speed = -5;
  var time = null;
  time = setInterval(function() {
    oUl.style.left = oUl.offsetLeft + speed + 'px';
    //alert(oUl.offsetWidth)//-728
    //alert(oUl.offsetLeft)//-5
    if(oUl.offsetLeft < -oUl.offsetWidth / 2) {
      oUl.style.left = 0 + 'px';
    } else if(oUl.offsetLeft > 0) {
      oUl.style.left = -oUl.offsetWidth / 2 + 'px';
    }
  }, 30);
  oBtn[0].onmouseover = function() {
    speed = -5;
  };
  oBtn[1].onmouseover = function() {
    speed = 5;
  };
  oUl.onmouseover = function() {
    clearInterval(time);
  }
  oUl.onmouseout = function() {
    time = setInterval(function() {
      oUl.style.left = oUl.offsetLeft + speed + 'px';
      if(oUl.offsetLeft < -oUl.offsetWidth / 2) {
        oUl.style.left = 0 + 'px';
      } else if(oUl.offsetLeft > 0) {
        oUl.style.left = -oUl.offsetWidth / 2 + 'px';
      };
    }, 30);
  }
 
};

图片素材分享:

       


分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

目录
相关文章
|
8月前
|
JavaScript 前端开发 API
淘宝店铺阿里旺旺采集工具,连接批量转旺旺ID,用Js接口实现效果
以下是淘宝店铺阿里旺旺采集工具的JS实现代码,包含批量获取店铺旺旺ID功能,当然仅
|
9月前
|
前端开发 JavaScript 容器
制作b超单生成器, 假怀孕b超单图片制作, p图医院证明【css+html+js装逼恶搞神器】
本资源提供一个适合用于熟人之间恶搞的工具,效果逼真,仅供学习参考与娱乐。包含前端技术学习要点:语义化布局、响应式设计、Flexbox、图片自适应
|
JavaScript 前端开发 索引
40个JS常用使用技巧案例
大家好,我是V哥。在日常开发中,JS是解决页面交互的利器。V哥总结了40个实用的JS小技巧,涵盖数组操作、对象处理、函数使用等,并附带案例代码和解释。从数组去重到异步函数,这些技巧能显著提升开发效率。先赞再看后评论,腰缠万贯财进门。关注威哥爱编程,全栈开发就你行!
371 16
|
JavaScript 前端开发 Java
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
Array.find() 是 JavaScript 数组方法中一个非常实用和强大的工具。它不仅提供了简洁的查找操作,还具有性能上的独特优势:返回的引用能够直接影响原数组的数据内容,使得数据更新更加高效。通过各种场景的展示,我们可以看到 Array.find() 在更新、条件查找和嵌套结构查找等场景中的广泛应用。 在实际开发中,掌握 Array.find() 的特性和使用技巧,可以让代码更加简洁高效,特别是在需要直接修改原数据内容的情形。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
监控 JavaScript 前端开发
MutationObserver详解+案例——深入理解 JavaScript 中的 MutationObserver:原理与实战案例
MutationObserver 是一个非常强大的 API,提供了一种高效、灵活的方式来监听和响应 DOM 变化。它解决了传统 DOM 事件监听器的诸多局限性,通过异步、批量的方式处理 DOM 变化,大大提高了性能和效率。在实际开发中,合理使用 MutationObserver 可以帮助我们更好地控制 DOM 操作,提高代码的健壮性和可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
MutationObserver详解+案例——深入理解 JavaScript 中的 MutationObserver:原理与实战案例
|
移动开发 JavaScript 前端开发
【Html.js——图片折叠效果】折叠手风琴(蓝桥杯真题-1763)【合集】
本项目实现了一个图片折叠手风琴效果,使用jQuery完成。主要包括以下部分: - **介绍**:任务是通过点击图片实现折叠和展开的效果。 - **准备**:内置初始代码,包含 `css/style.css`、`images/` 文件夹、`js/` 文件夹及 `index.html` 等文件。启动 Web Server 服务可运行项目。 - **目标**:完善 `index.js` 文件,使页面达到预期的折叠效果。 - **规定**:严格按步骤操作,保持默认文件结构不变,并在完成后保持 Web 服务正常访问状态。 - **通关代码**:使用 jQuery 实现点击事件,为选中元素添加 `act
327 19
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第20天
174 0
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第9天
241 0