【JavaScript】固定布局轮播图特效
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Banner</title>
<style type="text/css">
*{margin:0;padding: 0;}
.container{width: 1079px;height: 500px;overflow: hidden;margin:0 auto;position: relative;}
#list{width: 7553px;height: 500px;position: absolute;}
#list img{width: 14.285715%;;float: left;}
.arrow{position: absolute;color:#fff;text-decoration: none;bottom: 20px;text-align: center;width: 40px;height: 40px;font-size: 30px;top:230px;font-weight: bold;background: rgba(0,0,0,0.3);}
#left{left:20px;}
#right{right: 20px;}
</style>
</head>
<body>
<div class="container" id="container">
<div id="list">
<img alt="5" src='http://i1.piimg.com/576342/a59848cad8818bd4.jpg'>
<img alt="1" src='http://i1.piimg.com/576342/9bc3a6f38f9eca10.jpg'>
<img alt="2" src='http://i1.piimg.com/576342/82507633c9d21ebf.jpg'>
<img alt="3" src='http://image60.360doc.com/DownloadImg/2013/04/1613/31674132_21.jpg'>
<img alt="4" src='http://i1.piimg.com/576342/5935e1921d2d5fb0.jpg'>
<img alt="5" src='http://i1.piimg.com/576342/a59848cad8818bd4.jpg'>
<img alt="1" src='http://i1.piimg.com/576342/9bc3a6f38f9eca10.jpg'>
</div>
<a href="javascript:void(0)" class="arrow" id="left" disabled="false"><</a>
<a href="javascript:void(0)" class="arrow" id="right" disabled="false">></a>
</div> <script type="text/javascript">
window.onload = function(){
var oContainer = document.getElementById('container');
var oList = document.getElementById('list');
var oLi = oList.getElementsByTagName('img');
var oLeft = document.getElementById('left');
var oRight = document.getElementById('right');
var oWidth = oContainer.offsetWidth;
var animated = false;
oList.style.left = -oWidth + 'px'; function animate(offset){
console.log("offset:" + offset);
console.log("oWidth:" + oWidth);
animated = true;
var newLeft = parseInt(oList.offsetLeft) + offset;
var time = 300;
var interval = 10;
var speed = offset / (time / interval); function go(){
if((speed > 0 && oList.offsetLeft < newLeft) || (speed < 0 && oList.offsetLeft > newLeft)){
oList.style.left = oList.offsetLeft + speed + 'px'; //动画效果
setTimeout(go,interval); //递归
}else{
oList.style.left = newLeft + 'px';
if(newLeft > -oWidth){ //判断图片是第一张还是最后一张
oList.style.left = -oWidth * 5 + 'px';
}
if(newLeft < (-oWidth * 5)){
oList.style.left = -oWidth + 'px';
}
animated = false;
}
}
go();
} oRight.onclick = function(){
if(animated){
return ;
}
animate(-oWidth);
}
oLeft.onclick = function(){
if(animated){
return;
}
animate(oWidth);
}
}
</script>
</body>
</html>
可直接运行
放7张图片的原因是为了动画效果更加平滑
不会造成第一张图片或者最后一张图片过渡效果的时候是空白
本来打算用CSS3来做动画效果
但是发现多次点击后会图片会偏移原来的位置
所以使用原生JavaScript来编写动画
下一篇准备写个百分比自适应布局的轮播图
【JavaScript】固定布局轮播图特效的更多相关文章
- javascript原生js轮播图
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【jQuery】百分比自适应屏幕轮播图特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2、原生js实现轮播图特效
很多很多网站经常会用到一个特效,那就是轮播图,对于日新月异的前端技术来说其实就是一个框架一个接口的事,但轮播的原理是什么?用最原始的javascript来写又是怎样的呢?本人是一枚菜鸟,这篇文章就当做 ...
- Web前端原生JavaScript浅谈轮播图
1.一直来说轮播图都是困扰刚进业内小白的一大难点,因为我们不仅需要自己作出一个比较完美的运动框架(虽然网上一抓一大把,但是哪有比自己做出来实现的有成就感,不是吗?^_^),还必须需要非常关键性的把握住 ...
- 从零开始学习前端JAVASCRIPT — 11、JavaScript运动模型及轮播图效果、放大镜效果、自适应瀑布流
未完待续...... 一.运动原理 通过连续不断的改变物体的位置,而发生移动变化. 使用setInterval实现. 匀速运动:速度值一直保持不变. 多物体同时运动:将定时器绑设置为对象的一个属性. ...
- javascript写的轮播图
欢迎指点! 先放上效果图: 鼠标移入界面后: <body onselectstart="return false;" style="-moz-user-select ...
- 用JavaScript制作banner轮播图
JavaScript_banner轮播图 让我们一起来学习一下用js怎么实现banner轮播图呢? 直接看代码: <!DOCTYPE html> <html> <head ...
- JavaScript实现动态轮播图效果
功能描述: 1.鼠标经过 左右侧箭头显示,鼠标离开 箭头隐藏 2.动态添加底部小圆圈并绑定单击事件,并且让小圆圈的点击事件和左右箭头点击事件同步 3.拷贝第一张图片添加到ul最后可以实现动态添加图片 ...
- JS实现轮播图特效(带二级导航)
按照国际惯例先放效果图 index.html <!DOCTYPE html> <html lang="en"> <head> <meta ...
随机推荐
- UVALive 3971 组装电脑
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0
maven构建项目的时候遇到这个错误: 一.直接原因 制定路径下确实没有sqljdbc4.jar文件. 二.根本原因 微软不允许以maven的方式直接下载该文件. 三.解决办法 3.1 手动下载相关库 ...
- MS SQL-Server快捷键
快捷键 功能 Ctrl+Shift+B 生成解决方案 Ctrl+F7 生成编译 Ctrl+O ...
- linux 无交互添加用户设置密码
#!/bin/bash useradd -m test echo " | passwd --stdin test
- 语言模拟ATM自动取款机系统
C语言实验报告 题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...
- Openstack+Kubernetes+Docker微服务实践之路--RPC
重点来了,本文全面阐述一下我们的RPC是怎么实现并如何使用的,跟Kubernetes和Openstack怎么结合. 在选型一文中说到我们选定的RPC框架是Apache Thrift,它的用法是在Ma ...
- CSS里width: auto\9 是什么意思
color:red;//一般浏览器识别,字体颜色为红color:blue \9;//IE8,IE9及以上版本识别,字体颜色为蓝*color:orange;//IE7识别,字体颜色为橘色_color:b ...
- JQ入门学习实战演练
选择器是JQuery一大特色,所有的DOM操作.事件操作.Ajax操作都离不开选择器.熟练掌握JQuery的选择器,可以节省很多代码,很大程序上简化我们的脚本编程工作. JQuery的选择器很类似于样 ...
- 进fastreboot
1.红米1s 关机后,开机键+音量键下 同时按 2.红米note 关机后,开机键+音量键上 同时按 3. 4. 5.
- python-05
首先是安装工具 Linux 安装mysql:mysql-server 安装python-mysql模块: python-mysqldb Windows 下载安装mysql python操作mysql模 ...