jQuery滚动广告 解决子div绝对定位与父div重叠引起的闪烁问题
这两天做了一个滚动广告栏的demo 功能有自动轮播 左右箭头移动 导航点选中图片移动效果 模仿的是新浪体育的广告
最难的问题就是子div绝对定位于父div 鼠标移入子div 系统会判定鼠标移出了父div 所以会触发子div消失的效果 消失完因为鼠标在父div中 所以又触发了子div出现的效果
这样就会导致子div一直重复消失出现 形成闪烁的效果 在网上没有找到合适的解决问题办法 我通过设定状态和js的setTimeout解决了此问题
效果如图
需要设定两个状态
var arrow = false; //判断是否进入了箭头区域
var isDiv = false;//判断是否进入了父div
附上关键代码
$("#content").mouseenter(function () {
if ($("#left").is(":animated") || $("#right").is(":animated"))//当箭头处于动画时 不执行鼠标移入事件
{
return false;//防止鼠标一直进出导致的动画累计
}
if (arrow == true) {//移入div同时移入箭头 这个条件永远不会触发 因为两个区域不会相交
alert("永远不触发");
$("#left").fadeIn(moveTime);
$("#right").fadeIn(moveTime);
}
else {//移入div且不在箭头区域 正常触发
$("#left").fadeIn(moveTime);
$("#right").fadeIn(moveTime);
}
isDiv = true;//鼠标移入div状态
flag = false; //停止轮播
});
$("#content").mouseleave(function () {
var t = setTimeout(a, 1); //晚一点执行 先执行进入箭头区域的事件 把状态改过来 手动改变事件本身的执行顺序
function a() {
if (arrow == true) {//由于先执行了箭头移入事件 箭头区域就不会消失
$("#left").fadeIn(moveTime);
$("#right").fadeIn(moveTime);
}
else {//移出div且不在箭头区域
$("#left").fadeOut(moveTime);
$("#right").fadeOut(moveTime);
}
isDiv = false;
}
flag = true;
});
$("#left").mouseover(function () {
arrow = true;
flag = false;
$("#left").css("background-position", "-10px -65px");
$("#left").css("cursor", "pointer");
});
$("#left").mouseout(function () {
$("#left").css("background-position", "-10px -5px");
var t = setTimeout(a, 1);//让div的mouseover先执行 以便取到isDiv的值
function a() {
if (isDiv == false) {//移出箭头区域 且不在div中 箭头消失
$("#left").fadeOut(moveTime);
$("#right").fadeOut(moveTime);
}
}
arrow = false;
flag = true;
});
$("#right").mouseover(function () {
arrow = true
flag = false;
$("#right").css("background-position", "-10px -65px");
$("#right").css("cursor", "pointer");
});
$("#right").mouseout(function () {
$("#right").css("background-position", "-10px -5px");
var t = setTimeout(a, 1);
function a() {
if (isDiv == false) {
$("#left").fadeOut(moveTime);
$("#right").fadeOut(moveTime);
}
}
arrow = false;
flag = true;
});
第一次在博客园写文章 也不知道写的好不好 凡事都有个第一次吗
jQuery滚动广告 解决子div绝对定位与父div重叠引起的闪烁问题的更多相关文章
- JQuery实现广告效果(滚动切换)
JQuery实现广告效果(滚动切换) Html+css 效果如上图 代码: <!DOCTYPE html> <html> <head lang="en&qu ...
- CSS+DIV:父DIV相对定位+子DIV绝对定位
如何在一个div内将一个div进行绝对定位呢?很简单,把父div的position属性设为relative,子div的position属性设为absolute就可以了... 示例: <html& ...
- <转载>如何解决子级用float浮动父级div高度不能自适应的问题
转载:http://www.kwstu.com/ArticleView/divcss_2013101582430202 解决子级对象使用css float浮动 而父级div不能自适应高度,不能被父级内 ...
- vue setTimeout用法 jquery滚动到某一个div的底部
//vue 中setTimeOut用法 var $this = this; setTimeout(function(){ $this.goEnd() }, 10); goEnd:function(){ ...
- 解决子级用css float浮动 而父级div没高度不能自适应高度
解决子级对象使用css float浮动 而父级div不能自适应高度,不能被父级内容撑开解决方法,父级div没有高度解决方法. 最外层的父级DIV不能自适应高度-不能随对象撑开没有高度 当在对象内的盒子 ...
- CSS| 解决子级用css float浮动 而父级div没高度不能自适应高度
解决子级用css float浮动 而父级div没高度不能自适应高度 解决子级对象使用css float浮动 而父级div不能自适应高度,不能被父级内容撑开解决方法,父级div没有高度解决方法. 最外层 ...
- fullpage 单屏高度超过屏幕高度,实现单屏内可以滚动并解决手机端单屏高度不正确的问题
最近接触了好几次jquery.fullpage.js这个插件,实现整屏的滑动,效果很炫,用fullpage来实现也很简单,但是也碰到了一些问题和大家分享一下 1.单屏高度超过屏幕高度,实现单屏的滑动 ...
- 【IE6的疯狂之十】父级使用padding后子元素绝对定位的BUG
在前端开发中,经常会用到css的position:absolute来使层浮动,前通过left,top,right等属性来对层进行定位,但ie6对left,top,right等属性的解释和ie7,ie8 ...
- 在JSP中使用jQuery的冲突解决(收集整理)
在JSP中使用<jsp:include page="somethingPage.jsp"></jsp>来嵌套页面的时候,会出现jQuery之间的冲突 解决办 ...
随机推荐
- 解决IP地址被占用问题
问题背景: 在公司一直有同事在抱怨IP地址总是被占用的问题,我决定用技术解决这个问题 解决方案: 1 最开始想在防火墙里面做IP和mac地址绑定,做了几个之后,还是有同事在说IP被占用,后来 分析了一 ...
- juce 中的WeakReference分析
juce中的WeakReference设计得比较巧妙,巧妙就是使用delete之后就可以通知道WeakReference,原理其实也很间单,其实就是在对象里添加了一个子对象masterReferenc ...
- [ZT]DAS\NAS\IP SAN\FC SAN之区别
DAS:服务器直接后挂存储设备,最经济的一种结构. NAS:网络上直接挂接的存储设备,其实就是处于以太网上的一台利用NFS.CIFS等网络文件系统的文件共享服务器. SAN是网络上的磁盘,NAS是一个 ...
- C#.NET Split 的几种使用方法
第一种方法: string s = "abcdeabcdeabcde"; string[] sArray = s.Split('c'); foreach (string i in ...
- QJ系列笔记
1.求int型数据在内存中存储时1的个数输入一个int型数据,计算出该int型数据在内存中存储时1的个数. #include<stdio.h> void main() { ; int yu ...
- MYSQL 查询缓存
查询缓存: 是指对select 语句的结果进行缓存,当下一次运行同样的select语句时,就可以直接返回数据,跳过解析,执行,优化阶段. 1.查询缓存会跟踪查询涉及的表,如果表发生变化,相关的缓存都会 ...
- J2SE知识点摘记(四)
1. 抽象类(abstract) 抽象类和抽象方法都必须用abstract关键字来修饰. 抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象. 抽象方法只需声明,而不需实现. ...
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
1. 简要说明 JLink的调试功能.烧写Flash的功能都很强大,但是对于S3C2410.S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢:烧写Nan ...
- xlslib库使用简记
xlslib库使用简记 1 前言 最近需要使用C++结合xlslib库来生成Excel文件,但发现这个库的文档还真难找,找来找去发现唯一的线索是有一个test/目录里面的几个例子而已. 想到以后要不断 ...
- 只有电信3G是公网ip。
只有电信3G是公网ip,其它网络拿到是内部网.