前  言

阿q

 作为一个准前端学员,banner图可是很重要的呢。本人,小白一只,给大家分享几个刚刚学习的基础banner图事件。~~~

1. 小广告图滚动播放

1.1HTML代码

首先,创建基本结构

        <div id="outside"><div id="inside"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> </div>

1.2设置基本样式

来一段css代码,做出来基本样式

            *{margin: 0px;padding: 0px;}#outside{width: 1200px;overflow: hidden;margin: 0 auto;height: 300px;position: relative;}#outside #inside{width: 3100px;position: absolute;}#outside #inside div{width: 300px;height: 300px;margin: 0px 5px;background-color: red;float: left;}

1.3实现滚动

基本样式已经做好,接下来就是让它滚动了~~~很简单的一段JS代码,我是用定时器做的

    <script type="text/javascript">var num = 1;setInterval(function() {num--;var inside=document.getElementById("inside");inside.style.cssText="left: "+num+"px;";if(num<=-1860) num=1;},5);</script>

呐~,这就是效果图了,放上图片食用更佳。以前用纯css做过一遍,学过JS之后发现还是JS更简单

2.  自定义插件实现banner图滚动

接下来就是大图了,这是自己定义的jQuery插件

2.1HTML文件代码

这个插件的主要代码写在自定义JS文件中,HTML中代码就很少了~

    <head><meta charset="UTF-8"><title>自定义插件实现banner滚动</title><script src="js/jquery-3.1.1.js" type="text/javascript"></script><script src="js/jQuery-scrollBanner.js" type="text/javascript"></script></head><body><div id="banner"></div></body><script type="text/javascript">$("#banner").scrollBanner({images:[{src:"img/banner1.jpg",title:"banner1",href:"http://www.baidu.com"},{src:"img/banner2.jpg",title:"banner2",href:"http://www.sina.com"},{src:"img/banner3.jpg",title:"banner3",href:"http://www.qq.com"},{src:"img/banner4.jpg",title:"banner4",href:"http://www.jredu100.com"}],scrollTime:2000,bannerHeight:"500px",iconColor:"#cccccc",iconHoverColor:"#82c900",iconPosition:"center"});</script>

没错,只定义一个div,就是这么任性

2.2插件属性

images : 接收数组类型,数组的每个值应为对象。对象具有属性:src->图片的路径
           title->图片指上后的文字    href->点击图片跳转的页面
 scrollTime : 每张图片停留时间,单位毫秒。2000
 bannerHeight : banner图的高度。500px
 
 iconColor : 提示图标的颜色。默认white
 iconHoverColor : 提示图标指上之后的颜色。默认orange
 iconPosition : 提示图标的位置,可选值left/center/right。默认center

2.2插件代码

啦啦啦~~接下来就是插件的代码了,注释写在代码里了

!function($){$.fn.scrollBanner = function(obj){// 声明各个属性的默认值var defaults={images:[],scrollTime:2000,bannerHeight:"500px",iconColor:"white",iconHoverColor:"orange",iconPosition:"center"}// 将默认值与传入的对象比对,如果传入的对象有未赋值属性,则使用默认对象的属性obj=$.extend(defaults,obj);// 组件DOM布局$("body").css({"padding":"0px","margin":"0px"});this.empty().append("<div class='scrollBanner-banner'></div>");$.each(obj.images,function(index,item){$(".scrollBanner-banner").append("<div class='scrollBanner-bannerInner'><a href='"+item.href+"' target='_black'><img src='"+item.src+"' title='"+item.title+"'/></a></div>");});$(".scrollBanner-banner").append("<div class='scrollBanner-bannerInner'><a href='"+obj.images[0].href+"' target='_black'><img src='"+obj.images[0].src+"' title='"+obj.images[0].title+"'/></a></div>");this.append("<div class='scrollBanner-icons'></div>");$.each(obj.images, function(index,item) {// data-*属性是H5允许用户自行在HTML标签上保存数据的属性。// 保存在data-*中的数据,可以使用JS读取调用。$(".scrollBanner-icons").append("<span data-index='"+index+"' class='scrollBanner-icon'></span>");});// 设置各种cssthis.css({"width":"100%","height":obj.bannerHeight,"overflow":"hidden","position":"relative"});$(".scrollBanner-banner").css({"width": obj.images.length+1+"00%","height":obj.bannerHeight,});$(".scrollBanner-bannerInner").css({"width":100/(obj.images.length+1)+"%","height":obj.bannerHeight,"overflow":"hidden","float":"left"});$(".scrollBanner-bannerInner img").css({"width": "1920px","height": obj.bannerHeight,"position": "relative","left": "50%","margin-left": "-960px",});$(".scrollBanner-icons").css({"width": 30*obj.images.length+"px","height": "7px","position":"absolute","bottom":"40px",});switch (obj.iconPosition){case "left":$(".scrollBanner-icons").css({"left":"40px",});break;case "center":$(".scrollBanner-icons").css({"left":"50%","margin-left":"-"+15*obj.images.length+"px"});break;case "right":$(".scrollBanner-icons").css({"right":"40px",});break;}$(".scrollBanner-icon").css({"width": "20px","height": "7px","background-color": obj.iconColor,"display": "inline-block","margin": "0px 5px",});$(".scrollBanner-icon:eq(0)").css({"background-color":obj.iconHoverColor});// 实现banner滚动功能var count=1;setInterval(function(){$(".scrollBanner-banner").css({"margin-left":"-"+count+"00%","transition":"all .5s ease"});$(".scrollBanner-icon").css("background-color", obj.iconColor);$(".scrollBanner-icon:eq("+count+")").css("background-color", obj.iconHoverColor);if (count>=obj.images.length){$(".scrollBanner-icon:eq(0)").css("background-color", obj.iconHoverColor);}if (count>obj.images.length) {count=0;$(".scrollBanner-banner").css({"margin-left":"0px","transition":"none"});}count++;},obj.scrollTime);// 小图标指上后变色并且切换banner图$(".scrollBanner-icon").mouseover(function(){$(".scrollBanner-icon").css("background-color", obj.iconColor);// ↓ 由span触发mouseover事件,则this指向这个span。// ↓ 但是,这个this是JS对象,必须使用$封装成JQuery对象。$(this).css("background-color", obj.iconHoverColor);var index=$(this).attr("data-index");// 将计数器count修改为index的值,让Banner滚动的定时器能够刚好滚到所指图片的下一张count=index;$(".scrollBanner-banner").css({"margin-left":"-"+index+"00%","transition":"none"});});}
}(jQuery);

怎么样,是不是很方便呢,接下来只要插入想要的图片就可以了

3.  手风琴banner图

如果上一个很普通,食用起来没什么味道的话,接下来给客官分享一道比较成熟的菜。
这个样式我很喜欢玩的游戏的官网的一个版块,果然游戏使人进步呢~~
这也是用jQuery实现的,jQuery果然是个神奇的东西~~

闲话不多说,上菜~~~

3.1DOM组建

方便起见,我们将HTML代码和css代码写到一块,这个虽然好看,但是不如上边那个使用方便

    <style>*{margin:0; padding:0;} body,html{width:100%; height:100%;} .bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .bg-box-1{ background: url('img/tu1.jpg') no-repeat center/cover; } .bg-box-2{ background: url('img/tu2.jpg') no-repeat center/cover; } .bg-box-3{ background: url('img/tu3.jpg') no-repeat center/cover; } .bg-box-4{ background: url('img/tu4.jpg') no-repeat center/cover; } #wrap{ position: absolute; overflow: hidden; top:0; left:0; right:0; bottom:0; margin:auto; width: 1000px; height: 400px; } #wrap > ul{ width: 120%; list-style: none; } #wrap > ul > li{ float: left; width: 100px; height: 400px; cursor: pointer; } #wrap > ul > li:nth-child(1){ background: url('img/tu5.jpg') no-repeat center/cover; } #wrap > ul > li:nth-child(2){ background: url('img/tu1.jpg') no-repeat center/cover; } #wrap > ul > li:nth-child(3){ background: url('img/tu2.jpg') no-repeat center/cover; } #wrap > ul > li:nth-child(4){ background: url('img/tu3.jpg') no-repeat center/cover; width: 700px; } #wrap > ul > li > .text{ width: 100px; height: 100%; background: #000; opacity: .5; } #wrap > ul > li > .text p{ padding: 20px 40px; font-family: 'Microsoft yahei'; color: #fff; } </style> </head> <body> <div class="bg bg-box-1"></div> <div class="bg bg-box-2"></div> <div class="bg bg-box-3"></div> <div class="bg bg-box-4"></div> <

转载于:https://www.cnblogs.com/sin0/p/7537019.html

原生JS和jQuery实现banner图滚动那些事相关推荐

  1. jquery自定义banner图滚动插件---(解决最后一张图片倒回第一张图片的bug)

    banner图的滚动效果动画 最近做项目中banner滚动的时候遇到了一个小bug,当banner滚动到最后一张图再跳回第一张图时, 会出现默认的倒回第一张图的过渡效果,看了几个插件都是这样,所以自定 ...

  2. JQuery自定义插件详解之Banner图滚动插件

      前  言 JRedu JQuery是什么相信已经不需要详细介绍了.作为时下最火的JS库之一,JQuery将其"Write Less,Do More!"的口号发挥的极致.而帮助J ...

  3. 原生JS基于window.scrollTo()封装垂直滚动动画工具函数

    概要: 原生JS基于window.scrollTo()封装垂直滚动动画工具函数,可应用与锚点定位.回到顶部等操作. ####封装原因: 在vue项目中,遇到需要实现垂直滚动效果的需求,初步想到的方法有 ...

  4. 【每日一练】原生js仿淘宝主图放大镜功能,附学习源码

    在我们的项目中,经常会遇到各种功能效果的实现,对于每一项功能的实现方式,都有很多种,这些实现方式没有好坏之分,只有适合与否,但是我个人建议,如果项目急就选择自己擅长的方式实现,比较完成工作更加重要嘛. ...

  5. 原生js、jQuery实现选项卡功能

    在大家在网上平常浏览网页的时候,想必各位都会看到选项卡功能,在这里给大家详解一下用原生js.jQuery如何来写一些基本的选项卡 话不多说,先给各位看一下功能图:              好了,下边 ...

  6. span的取值与赋值(原生js与jquery) - 对比篇

    文章目录 关于span的取值与赋值 - 原生js与jquery代码 一. span的`取值`: 1. `javascript` 2. `jquery` 二. span的`赋值`: 1. `javasc ...

  7. 原生js和jquery常用的DOM操作

    前言 将原生JS和jquery里面的DOM操作进行了一下整理,方便以后温习. 创建元素节点 1.原生: document.createElement("div") 2.jquery ...

  8. html——原生js与jquery创建元素节点区别

    学习完静态样式之后开始学习动态创建添加html元素,总结了下原生js与jquery生成元素区别. 1.javascript创建元素 创建select var select = document.cre ...

  9. 原生js与jquery的区别

    原生js与jquery的区别 1.选择器: js: $('.car_img_con img')[0]; var jsObj = document.getElementsByClassName('sel ...

最新文章

  1. 常用的linux故障,Linux下常用的故障排查命令行
  2. POST和PUT HTTP REQUEST有什么区别?
  3. java微信开发bae_在百度BAE2.0 JAVA环境下搭建属于自己的微信公众平台接口
  4. Chapter 4 : 单行函数
  5. eda可视化_5用于探索性数据分析(EDA)的高级可视化
  6. python怎么做数据分析_如何用python进行数据分析
  7. ECMAScript 6环境搭建
  8. 【英语学习】【Level 07】U08 Old Stories L2 A good read
  9. 为什么你的支付宝芝麻信用分就是不涨?
  10. php赋值就变错误了,PHP基础陷阱题(变量赋值)_PHP教程
  11. 【python】导入HTMLTestRunner失败---报错ModuleNotFoundError: No module named ‘HTMLTestRunner‘
  12. C语言实现任意两种进制之间互相转换
  13. 数据库 之 Mysql的表分区
  14. PLSQL官方下载、安装和使用完全指南
  15. mx350显卡天梯图_2020年显卡天梯图(2020.04月更新)
  16. 阮一峰ES6入门读书笔记(十):Proxy
  17. 如何查看python标准库_python标准库
  18. 知其然更要知其所以然
  19. OSPF综合实验(三)
  20. 电影:少年派的奇幻漂流(Life of Pi)

热门文章

  1. 应该了解的Openstack命令
  2. git diff的用法
  3. Cocoapods 第三方类库管理工具
  4. c语言笔试题(带答案)
  5. 如何在SharePoint2007中实现下拉列表(DropDownList)的级联菜单效果
  6. 打造完美的JS树形菜单
  7. 01 Python基础学习
  8. SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  9. Mysql-4-数据库的基本操作
  10. iOS UICollectionViewCell 的拖动