<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#eraser{
position: relative;
font-size: 12px;
margin-top: 100px;
display: block;
}
</style>
</head>
<body>
<a href="#" id="eraser">划过我触发橡皮圈特效划过我触发橡皮圈特效</a>
<script src="../jquery.min.js"></script>
<script src="jquery.easing.js"></script>
<script src="eraser.js"></script>
<script>
$("#eraser").eraser();
</script>
</body>
</html>
(function($){
$.fn.eraser = function(options){
return this.each(function(){
//----------------分割--------------------//
var ele = $(this);
for(var i=0; i<ele.length; i++){
var splitHtml = ele.eq(i).html().split(""); //截取当前的数量,保存在容器里。
for(var j=0; j<splitHtml.length; j++){
splitHtml[j] = "<span>" + splitHtml[j] + "</span>";
}
ele.eq(i).html(splitHtml.join("")); //把数组中的所有元素放入一个字符串
}
var eleSpan = ele.find("span");
for(var i=0; i<eleSpan.length; i++){ //设置每一个的left值
eleSpan.eq(i).css({
"left" : eleSpan.eq(i).position().left
});
}
eleSpan.css({ //设置绝对定位
"position" : "absolute"
});
//----------------分割--------------------//
var iStartTop = eleSpan.position().top;
var iMinTop = -18;
var iMaxTop = 18;
var obj = null;
eleSpan.on("mouseenter",rubber); //开启
function rubber(ev) {
$(this).parent().mouseout(null); //清除事件
$(this).parent().mousemove(null); //清除事件
var ev = ev || event;
var iStartY = ev.clientY; //获取光标y轴
obj = $(this);
this.parentNode.onmousemove = function(ev) {
$(this).find("span").off("mouseenter", rubber);
$(this).find("span").on("mouseenter", currently);
var iMouseY = ev.clientY;
var iTop = iStartTop + (iMouseY - iStartY);
var aSpan = $(this).find("span");
var iIndex = obj.index();
aSpan.stop();
if(iTop < iMinTop || iTop > iMaxTop) {
aSpan.animate({ //清除 0
top: iStartTop
}, 500, "easeOutElastic");
$(this).find("span").on("mouseenter", rubber);
$(this).find("span").off("mouseenter", currently);
this.onmouseleave = null;
this.onmousemove = null
} else {
for(var i = 0; i < aSpan.length; i++) {
if(iMouseY > iStartY) {
var iSpanTop = iTop - Math.abs(i - iIndex);
if(iSpanTop < iStartTop) {
iSpanTop = iStartTop
}
} else {
if(iMouseY < iStartY) {
var iSpanTop = iTop + Math.abs(i - iIndex);
if(iSpanTop > iStartTop) {
iSpanTop = iStartTop
}
}
}
aSpan.eq(i).css({
"top": iSpanTop + "px"
});
}
}
this.onmouseleave = function(){ //鼠标移除事件
aSpan.animate({
"top" : iStartTop
}, 500, "easeOutElastic");
$(this).find("span").on("mouseenter", rubber);
$(this).find("span").off("mouseenter", currently); //关闭
$(this).mouseleave(null);
$(this).mousemove(null);
}
}
}
function currently() {
obj = $(this);
}
});
}
})(jQuery);

jQuery文字“橡皮圈“特效的更多相关文章

  1. 18款js和jquery文字特效代码分享

    18款js和jquery文字特效代码分享 jQCloud标签云插件_热门城市文字标签云代码 js 3d标签云特效关键词文字球状标签云代码 原生JS鼠标悬停文字球状放大显示效果代码 原生js文字动画圆形 ...

  2. 基于jQuery图片遮罩滑动文字切换特效

    基于jQuery图片遮罩滑动文字切换特效.这是一款jquery hover鼠标滑动选项卡切换透明背景遮罩文字显示特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div ...

  3. js,jquery,css,html5特效

    包含js,jquery,css,html5特效,源代码 本文地址:http://www.cnblogs.com/roucheng/p/texiao.html 2017新年快乐特效 jQuery最新最全 ...

  4. 分享jquery实现百叶窗特效的图片轮播

    首先非常感谢网友嘉翼的无私分享,这是他刚在网站扣下来的特效,第一时间与大家分享,jquery实现百叶窗特效的图片轮播 使用方法: 1.引用css文件,css文件里面已经做了注释,基本只需要修改宽高就好 ...

  5. 14种网页jQuery和css3特效插件代码演示

    1.网页table增删样式代码 演示和下载地址 2.jQuery左右滑动幻灯片插件 演示和下载地址 3.jQuery文字轮播焦点图 演示和下载地址 4.网页文字焦点图切换 演示和下载地址 5.jQue ...

  6. 10款jquery图片广告特效的预览及源码下载 改自[帅的相对论]

    原文格式有问题,我来排版了一下,分享给大家. 1.jQuery仿海尔官网全屏焦点图特效代码 Query仿海尔官网全屏焦点图特效代码,带有左右箭头的jQuery焦点图切换特效.当焦点图切换时,下方的三块 ...

  7. jquery 文字滚动大全 scroll 支持文字或图片 单行滚动 多行滚动 带按钮控制滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. jquery文字上下滚动--单行 批量多行 文字图片上下翻滚 | 多行滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 强大的自适应jQuery焦点图特效

    jQuery焦点图切换自适应效果 自适应jQuery焦点图特效是一款支持移动端的响应式jQuery焦点图插件,支持flexible布局,支持移动触摸事件等. 今天我们要来分享一款很灵活的jQuery焦 ...

随机推荐

  1. Hibernate的一对多实例

    一对多在现实生活中很常见,今天做了个Hibernate的一对多的实例,也是个入门过程,写下来跟大家分享. 最重要的是xml配置文件,之前因为把英文"(引号)错误的复制成中文的“”(引号),导 ...

  2. CodeForces760B

    B. Frodo and pillows time limit per test:1 second memory limit per test:256 megabytes input:standard ...

  3. Servlet自动注入Spring容器中的Bean解决方法

    很多情况在进行Web开发的时候需要自己手写Servlet来完成某些功能,而servlet有需要注入Spring容器中的某些bean,这是每次都要手动获取比较麻烦,这里有一个解决方案,只需要写一个ser ...

  4. js下载文件

    本文的前提是:后台给的是一个可以下载的url的情况下的下载: 怎样的文件url才能触发浏览器的下载行为?(转自SF) 能触发浏览器下载的url有两类: response header中指定了Conte ...

  5. Pwn with File结构体(三)

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前面介绍了几种 File 结构体的攻击方式,其中包括修改 vtab ...

  6. Java XML SAX 解析注意

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/4002738.html 什么时候可以把解析值赋给对象 一般从网 ...

  7. hive 排序 order by sort by distribute by cluster by

    order by:     order by是全局排序,受hive.mapred.mode的影响.       使用orderby有一些限制:     1.在严格模式下(hive.mapred.mod ...

  8. HBase Compaction详解

    HBase Compaction策略 RegionServer这种类LSM存储引擎需要不断的进行Compaction来减少磁盘上数据文件的个数和删除无用的数据从而保证读性能. RegionServer ...

  9. 国内一元钱 正常搭建android开发环境

    如果你人在gfw之外,那么此篇文章对你来说毫无用处,请自动略过.. 笔者自android出来之后,就一直想尝试一下.可惜,几年来一直未能够定下身心来研究尝试.而所做的工作也与android没有关系,所 ...

  10. Oracle EBS 加锁解锁程序

    FUNCTION request_lock(p_lock_name IN VARCHAR2) RETURN BOOLEAN IS l_lock_name ); l_lock_ret INTEGER; ...