个人学习JQ插件编写成果:little酷炫的图片滑动切换效果
工作一个多月了,好久没来冒冒泡了,看了@wayong的JQ插件教程,自己编写了一个模仿拉勾网首页广告栏滑动特效的JQ插件,现在跟朋友们分享分享!
先上demo链接:http://runjs.cn/detail/gpowdhhk
快要下班了~先把代码放出来~~回家再编辑~
这里是HTML代码:
<!--js酷炫图片滑动hover效果,类似拉勾网-->
<div class="beauty-go-outer" id="my-div">
<ul class="beauty-list">
<li class="beauty-item item1"><a href="#" target="_blank">
<div class="front">
<span class="left"></span>
<span class="right"></span>
</div>
<div class="back">
<span class="left"></span>
<span class="right"></span>
</div>
</a></li>
1 ......//相同结构,想要多少加多少
</ul>
</div>
<!-- 酷炫图片滑动效果结束 -->
这里是CSS代码:
//可以根据个人需要调整各块内容的大小,完全由你做主!
1 *{
margin:;
padding:;
}
ul,li{
list-style-type: none;
}
.beauty-go-outer{
width: 840px;
height: 1000px;
background-color: #a3a3a3;
overflow: hidden;
margin: auto;
}
.beauty-item{
float: left;
position: relative;
width: 400px;
height: 200px;
margin-right: 10px;
margin-bottom: 10px;
overflow: hidden;
}
.beauty-item .front,.beauty-item .back{
width: 400px;
height: 200px;
position: absolute;
left:;
top:;
}
.beauty-item .back{
display: none;
} .beauty-item .left,.beauty-item .right{
display: block;
float: left;
width: 200px;
height: 200px;
}
.beauty-item .front .left{
background-color: cornflowerblue;
}
.beauty-item .front .right{
background-color: forestgreen;
}
.beauty-item .back .left{
background-color: darkblue;
}
.beauty-item .back .right{
background-color: deeppink;
} /*图片导入*/
.item1 .front .left{
background: url("images/slideImgShow/1.jpg") no-repeat 0 0;
}
.item1 .front .right{
background: url("images/slideImgShow/5.jpg") no-repeat 0 0;
}
.item1 .back .left{
background: url("images/slideImgShow/5.jpg") no-repeat 0 0;
}
.item1 .back .right{
background: url("images/slideImgShow/1.jpg") no-repeat 0 0;
}
.............//这里根据内容块的多少,添加内容块的背景图片,重复的事~~~~(>_<)~~~~
这里是js代码:
/*
* 酷炫图片滑动展示效果插件
* 尊重他人劳动成果,转载请自觉注明出处!注:此代码仅供学习交流,请勿用于商业用途。O(∩_∩)O哈哈~
* */
//依赖方法1: 获取元素的坐标
$.get_pos = function(elem){
if(!elem) return false;
var left = elem.offsetLeft,
top = elem.offsetTop,
current = elem.offsetParent;
while(current !== null){
left += current.offsetLeft;
top += current.offsetTop;
current = current.offsetParent;
}
return {"left": left, "top": top};
};
//依赖方法2:判断鼠标进入/移出元素的方向
$.get_dir = function(elem, mouse_pos){
if(!elem) return false;
var pos = $.get_pos(elem),
size = {"width": elem.offsetWidth, "height": elem.offsetHeight},
dx = mouse_pos.x - pos.left - size.width/2,
dy = (mouse_pos.y - pos.top - size.height/2)*-1,
eve_tan = dy/dx,
tan = size.height/size.width;
if(dx != 0){
if(eve_tan > tan*-1 && eve_tan < tan && dx < 0){
return "left";
}else if(eve_tan > tan*-1 && eve_tan < tan && dx > 0){
return "right";
}else if((eve_tan > tan || eve_tan < tan*-1) && dy > 0){
return "top";
}else if((eve_tan > tan || eve_tan < tan*-1) && dy <= 0){
return "bottom";
}
}else if(dy > 0){
return "top";
}else {
return "bottom";
}
}; //特效主函数
;(function($,window,document,undefined){ //这里的 ; 是为了保证不与前面的函数发生冲突,没有分号,
// 定义beautifier构造函数,创建类 //如果前面的代码缺少分号,则会被认为这些代码和前面是一起的,从而出错
var ContainerObj = function(ele){
this.wrapper = ele;
this.box = ele.find('.beauty-item');
};
//在Beautifier原型上添加修改CSS属性的方法
ContainerObj.prototype = {
addSlideEvent : function(){
var mouse_pos, x, y;
for(var i = 0,max = this.box.length;i < max;i++){
this.box.eq(i).on('mouseenter',function(e){
e.stopPropagation();
x = e.pageX;
y = e.pageY;
mouse_pos = {'x': x, 'y': y};
var dir = $.get_dir(this,mouse_pos);
switch (dir){
case 'left':
$(this).find('.back').eq(0).css({
left : '-100%',
top : '0',
display : 'block'
}).stop().animate({
left : '0',
top : '0'
},300,false);
break;
case 'right':
$(this).find('.back').eq(0).css({
left : '100%',
top : '0',
display : 'block'
}).stop().animate({
left : '0',
top : '0'
},300,false);
break;
case 'top':
$(this).find('.back').eq(0).css({
left : '0',
top : '-100%',
display : 'block'
}).stop().animate({
left : '0',
top : '0'
},300,false);
break;
case 'bottom':
$(this).find('.back').eq(0).css({
left : '0',
top : '100%',
display : 'block'
}).stop().animate({
left : '0',
top : '0'
},300,false);
break;
default: break;
}
});
this.box.eq(i).on('mouseleave',function(e){
e.stopPropagation();
x = e.pageX;
y = e.pageY;
mouse_pos = {'x': x, 'y': y};
var dir = $.get_dir(this,mouse_pos);
switch (dir){
case 'left':
$(this).find('.back').eq(0).stop().animate({
left : '-100%',
top : '0'
},300,false);
break;
case 'right':
$(this).find('.back').eq(0).stop().animate({
left : '100%',
top : '0'
},300,false);
break;
case 'top':
$(this).find('.back').eq(0).stop().animate({
left : '0',
top : '-100%'
},300,false);
break;
case 'bottom':
$(this).find('.back').eq(0).stop().animate({
left : '0',
top : '100%'
},300,false);
break;
default: break;
}
}); }
return this.wrapper;
}
}; $.fn.slideImgShow = function(){
var containerObj = new ContainerObj(this);
return containerObj.addSlideEvent();
} })(jQuery,window,document); //调用就是这么简单~跟一个JQ的API一样一样的噢~链式操作也是没有断的,还可以进行其他操作!
$("#my-div").slideImgShow();
代码发完了~~~感觉自己又小小的爬升了一个台阶,加油,每天积累一点点,1年后就积累365个点点!
谢谢@wayong 的JQ插件教程,受益匪浅!
个人学习JQ插件编写成果:little酷炫的图片滑动切换效果的更多相关文章
- 一分钟搞定触手app主页酷炫滑动切换效果
代码地址如下:http://www.demodashi.com/demo/12826.html 前言: 前几天在看手机直播的时候,自己就用上了触手app.一进到主页就看上了里面页面切换的效果,自己想这 ...
- jQuery插件实例三:图片滚动[切换]效果一
图片切换效果在很多网站上都能看到,是一种常见的广告/活动宣传方式,通常位于网页上端.这个插件是众多图片切换效果的形式中的一种,数据源可在前端配置,也可从后台通JSON格式传输数据,当然,数据格式是固定 ...
- css3实现酷炫的3D盒子翻转效果
简介 运用css3先在平面空间组成立方体盒子,再让整个盒子翻转起来,先来张效果图: 步骤 1.先用css将6张图片摆成下图的样子: 下面就是通过css3的3D变换将每个面进行翻转,使之成为一个立体的盒 ...
- 用仿ActionScript的语法来编写html5——第八篇,图片处理+粒子效果
用仿ActionScript的语法来编写html5系列开发到现在,应该可以做出一些东西了,下面先来研究下图片的各种效果预览各种效果看下图效果和代码看这里,看不到效果的请下载支持html5的浏览器 ht ...
- JQ 实现轮播图(3D旋转图片轮播效果)
轮播图效果如下: 代码: <!DOCTYPE html> <html xmlns="/www.w3.org/1999/xhtml"> <head> ...
- jQ插件编写
参考文档:http://www.cnblogs.com/Dlonghow/p/4142034.html 编写插件最先接触到的就是jQuery.fn.extend 和jQuery.extend 这个两个 ...
- 一款实现滑动切换效果的插件---swiper
Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端. Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. Swiper开源.免费.稳定.使用简单. ...
- Flexslider插件实现图片轮播、文字图片相结合滑动切换效果
插件下载: 点击下载 密码: fbeg Flexslider具有以下特性: 支持滑动和淡入淡出效果. 支持水平.垂直方向滑动. 支持键盘方向键控制. 支持触控滑动. 支持图文混排,支持各种html元素 ...
- jquery.roundabout.js图片叠加3D旋转插件多功能图片翻转切换效果
http://www.17sucai.com/pins/4880.html DEMO演示地址:http://www.17sucai.com/pins/demoshow/4880
随机推荐
- 余弦信号DFT频谱分析(继续)
以前谈到序列的实际长度可以通过零填充方法加入,使得最终增加N添加表观分辨率. 但它并没有解决泄漏频率的问题. 根本原因在于泄漏窗口选择的频率. 由于矩形窗突然被切断,频谱旁瓣相对幅度过大,造成泄漏分量 ...
- 每天收获一点点------Hadoop基本介绍与安装配置
一.Hadoop的发展历史 说到Hadoop的起源,不得不说到一个传奇的IT公司—全球IT技术的引领者Google.Google(自称)为云计算概念的提出者,在自身多年的搜索引擎业务中构建了突破性的G ...
- 3D数学学习笔记——笛卡尔坐标系
本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学 ...
- D - Cow Ski Area
Description Farmer John's cousin, Farmer Ron, who lives in the mountains of Colorado, has recently t ...
- RAC下一个Fatal NI connect error 12170.错误处理
原创作品,离 "深蓝blog" 博客,欢迎转载,请务必注明转载的来源.否则有权追究版权责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/a ...
- linux 下 apache启动、停止、重启命令
原文:linux 下 apache启动.停止.重启命令 基本的操作方法: 本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐/u ...
- 利用System.Net.Mail 的SmtpClient发送邮件
原文:利用System.Net.Mail 的SmtpClient发送邮件 几个月前总结过关于Jmail发送邮件,当时用Jmail发送邮件发送速度有点慢(可能对Jmail了解不是很多).现在改为用微软提 ...
- Android而一个超级漂亮的日历控件
※效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZ2xvbmd4aW4yNA==/font/5a6L5L2T/fontsize/400/fil ...
- JS脚本显示当前日期+星期几[转]
以下的代码提供了显示当前日期和星期几的实现方法: function writeDateInfo() { var day=""; var month= ...
- Cocos2d-X采用CCScrollView创建滚动视图
CCScrollView滚动视图可以让游戏有效果,并能够通过滚动视图切换游戏场景,滚动视图通常用来选择在游戏中的级别 实例1:使用CCScrollView创建一个简单的滚动视图 首先创建一个Scrol ...