ie6的png背景滤镜

完成专题头图上的分享功能,其中对于ie6的png背景滤镜有了更深刻的体会
功能要求:如下图,
(1)鼠标hover到红色区域时,显示绿色区域;
(2)鼠标离开红色区域,绿色区域隐藏
(3)鼠标停留在绿色区域时,绿色区域不隐藏
(4)鼠标划过蓝色区域时,绿色区域不隐藏

初步方案:
给红色区域按钮增加一个hover()事件,设置over和out函数,但是只能实现功能1和2,功能3、4都无法实现
中间方案:
给红色区域按钮和绿色区域分别增加一个mouseenter 和 mouseleave 事件,将隐藏绿色区域的函数加上setTimeOut,鼠标停留在绿色区域时clearTimeOut,可以实现所有功能。
代码实现如下
//定时器对象
var flyoutTimer;
//给红色区域绑定事件
$("#cover_share_btn").bind({
mouseenter : showFlyout,
mouseleave : mouseOutEvent
});
//给绿色区域绑定事件
$("#cover_share").bind({
mouseenter : mouseOverEvent,
mouseleave : mouseOutEvent
});
//设置隐藏延迟
function mouseOutEvent() {
flyoutTimer = setTimeout(hideFlyout, share_hide_interval);
}
//取消setTimeOut
function mouseOverEvent() {
clearTimeout(flyoutTimer);
}
//绿色区域的隐藏和显示
function hideFlyout() {
$("#cover_share").hide();
}
function showFlyout() {
$("#cover_share").show();
}
中间有个大插曲,发现在ie6下鼠标hover到红色区域后,绿色区域显示并马上隐藏,查来查去,发现是滤镜的原因,红色区域是个<a>标签,直接给该<a>标签加png背景图片,用滤镜兼容ie6时会使<a>标签失效。
解决方法是:将png背景分离出来即可
最终方案:
在遇到中间方案内的“ie6bug”时,最初以为是setTimeOut的原因,一直解决不出来之后,就决定换一种方法——给红色区域+蓝色区域+绿色区域的父容器绑定hover事件,固定父容器的宽与高同红色区域一样,
这样就可以实现功能1、2、3了,对于功能4的实现,我们可以动态的改变父容器的height值。
代码如下:
//cover_share_btn为父容器的id,cover_share_list为绿色区域的id
$("#cover_share_btn").hover(
function(){
$(this).css("height","46px");
$("#cover_share_list").show();
},
function(){
$(this).css("height","36px");
$("#cover_share_list").hide();
}
);
最终方案与中间方案都可以实现所需功能,且结合css可以兼容ie6,但是最终方案比中间方案的代码简洁明了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值