hover触发两次的问题

一个页面想通过hover来代替click ,遇到多次触发的问题,下面是处理代码
思路
1.鼠标移动到指定标签设置定时器
2.移除后清除定时器,防止重复触发

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        div{
            width: 500px;
            height: 200px;
            margin: 100px auto;
        }
        a{
            font-size: 25px;
            text-decoration: none;
        }
        a:hover{
            background-color:#96e7e0 ;
            color: red;
        }
    </style>
</head>
<body>
<div>
    <a id="a" href="#">奖品列表</a>
    <ul>
    <li id="prizes">这个是奖品</li>
    </ul>
</div>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
    // on("mouseover",function(){"鼠标移入时想要的效果"
    // $("#a").hover(function(){
    $("#a").on("mouseover",function(){
        var data={a:123};
        $.ajax({
            url:"index.php",
            type:"post",
            data: data,
            dataType:"json",
            success:function(res){
                if(res.code == 1) {
                    setTimeout(function(){
                    var html = [];
                    for(var i=0; i<res.prize.length; i++){
                        if(res.prize[i].goods_id == 5){
                            html.push('<li>一个'+res.prize[i].goods_id+'</li>');
                        }else{
                            html.push('<li>一个'+res.prize[i].goods_id+'</li>');
                        }
                    }
                    $('#prizes').append(html.join(''));
                    },1000);
                }else{
                    $('#prizes').html('');
                }

            }
        });
    });
    //鼠标移除清除定时器
    $("#a").on("mouseout",function(){
        clearTimeout(t);
    })


</script>
</body>
</html>

index.php

$a = $_POST['a'];
$prize = array(
    array('goods_id'=>'苹果'),
    array('goods_id'=>'橘子')
);
if($a==123)
{
    exit(json_encode(array('code'=>1,'msg'=>'success','prize'=>$prize)));
}
当CSS元素执行两次transition时,通常意味着我们正在讨论在动画过渡之后紧接着的另一个动画过渡的情况。这在网页设计中很常见,特别是在创建复杂的动画效果、响应式调整或交互式界面时。 ### 第一次Transition 首先,`transition` 属性允许我们在CSS中控制元素属性(如宽度、高度、颜色等)在改变时的平滑过渡过程。它由以下几个部分组成: 1. **transition-property** - 指定应用于哪些属性。例如,如果你想让宽度变化有过渡效果,可以设置 `transition-property: width;` 2. **transition-duration** - 定义整个过渡过程持续的时间,默认单位为秒(s) 或毫秒(ms)。 3. **transition-timing-function** - 控制过渡效果的速度曲线,可以是 'linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out' 等预定义选项,也可以自定义函数。 4. **transition-delay** - 设置从开始到过渡过程开始的延迟时间,同样支持秒(s) 或毫秒(ms) 单位。 ### 第二次Transition 当元素的某个状态结束,其属性值发生变化并触发了新的transition时,即为第二次transition。这种机制允许设计师实现更复杂的效果,比如: - **连续动画**: 在一系列的state之间平滑切换,如按钮按下状态和恢复状态之间的过渡。 - **条件变化**: 根据用户的交互动态调整元素的显示效果,如点击按钮后的效果,然后再次点击返回原状。 ### 实现示例 假设我们有一个简单的例子,描述了一个按钮在被点击后,宽度逐渐缩小至0px,并在此基础上再增加一些额外的样式更改: ```css button { transition: width 2s ease, background-color 0.5s ease; } button:hover { transition: all 1s ease; /* 这里实际上是第一次transition完成后再执行所有其他属性的变化 */ } ``` 在这个例子中,按钮在被hover(鼠标悬停)时,不仅宽度会逐渐变窄(这是第一次transition),同时背景色也会逐渐变化(第二次transition)。由于第二个`transition`的声明使用了`all`关键字,这意味着所有的属性(包括之前已经设置的`width`)都将受到此次过渡的影响,直到整个过程完成后才停止。 ### 结论 通过合理配置CSS的`transition`属性,开发者能够实现各种复杂而优雅的用户界面动态效果。理解如何在不同状态下设置及触发transition对于创建响应式的、交互性强的网站和应用至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值