工作一个多月了,好久没来冒冒泡了,看了@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酷炫的图片滑动切换效果的更多相关文章

  1. 一分钟搞定触手app主页酷炫滑动切换效果

    代码地址如下:http://www.demodashi.com/demo/12826.html 前言: 前几天在看手机直播的时候,自己就用上了触手app.一进到主页就看上了里面页面切换的效果,自己想这 ...

  2. jQuery插件实例三:图片滚动[切换]效果一

    图片切换效果在很多网站上都能看到,是一种常见的广告/活动宣传方式,通常位于网页上端.这个插件是众多图片切换效果的形式中的一种,数据源可在前端配置,也可从后台通JSON格式传输数据,当然,数据格式是固定 ...

  3. css3实现酷炫的3D盒子翻转效果

    简介 运用css3先在平面空间组成立方体盒子,再让整个盒子翻转起来,先来张效果图: 步骤 1.先用css将6张图片摆成下图的样子: 下面就是通过css3的3D变换将每个面进行翻转,使之成为一个立体的盒 ...

  4. 用仿ActionScript的语法来编写html5——第八篇,图片处理+粒子效果

    用仿ActionScript的语法来编写html5系列开发到现在,应该可以做出一些东西了,下面先来研究下图片的各种效果预览各种效果看下图效果和代码看这里,看不到效果的请下载支持html5的浏览器 ht ...

  5. JQ 实现轮播图(3D旋转图片轮播效果)

    轮播图效果如下: 代码: <!DOCTYPE html> <html xmlns="/www.w3.org/1999/xhtml"> <head> ...

  6. jQ插件编写

    参考文档:http://www.cnblogs.com/Dlonghow/p/4142034.html 编写插件最先接触到的就是jQuery.fn.extend 和jQuery.extend 这个两个 ...

  7. 一款实现滑动切换效果的插件---swiper

    Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端. Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. Swiper开源.免费.稳定.使用简单. ...

  8. Flexslider插件实现图片轮播、文字图片相结合滑动切换效果

    插件下载: 点击下载 密码: fbeg Flexslider具有以下特性: 支持滑动和淡入淡出效果. 支持水平.垂直方向滑动. 支持键盘方向键控制. 支持触控滑动. 支持图文混排,支持各种html元素 ...

  9. jquery.roundabout.js图片叠加3D旋转插件多功能图片翻转切换效果

    http://www.17sucai.com/pins/4880.html DEMO演示地址:http://www.17sucai.com/pins/demoshow/4880

随机推荐

  1. Android应用公布的准备——生成渠道包

    我们须要使用一个变量标明该app的渠道.通常我们能够在manifest中的application节点下声明.例如以下. <meta-data android:name="CHANNEL ...

  2. ROADS+dijkstra的灵活运用+POJ

    ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10742   Accepted: 3949 Descriptio ...

  3. HDU 1596 find the safest road (最短路)

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  4. 简单搜索dfs, 简单的修剪搜索

    选择最合适的语言做一个项目是非常重要的.但,熟练的掌握自己的武器,这也是非常重要的. ========================================================= ...

  5. atcoder它A Mountaineer

    Time limit : 2sec / Stack limit : 256MB / Memory limit : 256MB Problem Dave is a mountaineer. He is ...

  6. Total Command help

  7. 4.4、Libgdx用法查询执行环境相关性

    (原版的:http://www.libgdx.cn/topic/46/4-4-libgdx%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E6%9F%A5%E8%AF%A2% ...

  8. 随笔 - Internet缓存文件

    Internet缓存文件 本文地址: http://blog.csdn.net/caroline_wendy 互联网上全部的使用记录, 图片, 音乐, 视频, 都会缓存在本地. 1. 位置: IE-& ...

  9. POI使用汇总

    POI它是apache下一步行为office有关格源工具.我们近期在使用这个框架实现Excel格式数据的导入和导出功能.这里进行一个使用总结.POI提供两种读写API模型:事件模型(eventmode ...

  10. Log4net 日志

    Log4net 日志使用介绍 概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以 ...