c# - 鼠标悬停时图像闪烁

标签 c# javascript jquery visual-studio-2012 onmouseover

我有一张来自 map 的图像,还有来自图像 map 上几个区域(蓝色)的其他几张图像。其他图像代表鼠标悬停时应显示的蓝色区域。但我有一个问题。当我将鼠标放在图像 map 上的区域上时,它们开始闪烁。例如,当我将鼠标悬停在特定区域上时,我想在没有闪烁的 onmouseover 和 onmousemove 的情况下激活蓝色区域。我会放一张 .gif 图片(光标未显示)以显示当我将鼠标光标放在图像上时我遇到的问题,我也会发布代码以查看是否有任何遗漏或必须被改变。

Picture:blue regions flashing onmouseover

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<%--<link href="css/jquery-ui-1.10.3.custom.css" rel="stylesheet" type="text/css" />
<link href="css/jquery-ui-1.10.3.custom.min.css" rel="stylesheet" type="text/css" />--%>
<script type="text/javascript"   src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<%--<script type="text/javascript" src="js/jquery-ui-1.10.3.custom.js"></script>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>--%>


</head>
<body id="uiBody" class="regions" dir="ltr">
<form id="form2" runat="server">
    <asp:PlaceHolder ID="PlaceHolder1" runat="server">
    <div class="world_map_container">
        <img src="Sliki/maptransparent.gif" usemap="#the_world_map" id="transparent_map" />

        <map name="the_world_map" id="the_world_map">
            <area shape="poly" coords="167,335,168,321,166,318,161,313,156,308,148,308,146,304,143,302,137,301,136,293,133,283,130,277,127,273,127,270,129,266,133,261,133,253,132,248,128,242,124,240,121,240,118,243,114,248,108,254,100,258,94,261,92,261,91,268,87,274,83,279,81,281,81,286,81,291,81,295,75,298,69,304,67,308,66,316,69,318,79,319,86,319,88,321,91,324,94,326,100,325,102,322,103,317,100,315,95,314,88,312,85,308,87,303,90,300,94,297,98,294,104,293,109,293,113,295,119,303,124,311,127,318,130,327,131,335,132,338,135,336,140,332,144,331,148,331,151,333,155,336,162,336,167,335" href="Default2.aspx" id="area_resen" alt="Resen" />
            <area shape="poly" coords="171,45,167,47,161,47,162,50,167,50,167,53,164,55,157,64,161,68,169,88,172,89,175,102,175,105,179,105,180,109,187,116,187,118,202,121,202,124,212,124,216,121,216,116,245,116,253,113,255,110,254,104,253,103,259,103,265,104,269,105,272,103,272,95,274,90,277,87,282,86,285,84,287,78,288,76,280,75,274,74,270,72,265,67,263,63,257,63,254,60,251,57,250,56,247,57,241,56,237,55,234,52,229,49,227,44,227,38,231,35,233,33,231,31,226,29,225,28,225,21,220,20,216,22,213,24,212,26,210,28,207,28,205,26,202,26,200,28,199,31,196,33,192,39,188,43,189,45,189,47,185,50,179,52,175,52,172,50,171,47,171,45" href="Default2.aspx" id="area_skopje" alt="Skopje" />
            <area shape="poly" coords="397,47,388,47,383,56,384,61,384,66,382,70,379,71,375,71,375,76,373,82,372,88,372,94,377,96,389,109,408,109,409,98,405,92,409,89,406,80,412,80,421,77,424,74,423,68,429,66,425,63,415,53,398,53,397,47" href="Default2.aspx" id="area_kocani" alt="Kocani" />
        </map>
        <ul>
            <li id="resen" style=""><a href="#">resen</a></li>
            <li id="skopje"><a href="#">skopje</a></li>
            <li id="kocani"><a href="#">kocani</a></li>
        </ul>
    </div>
    <script type="text/javascript">
        $('.world_map_container area').each(function () {
            // Assigning an action to the mouseover event
            $(this).mouseover(function (e) {
                var country_id = $(this).attr('id').replace('area_', '');
                $('#' + country_id).css('display', 'block');
            });

            // Assigning an action to the mouseout event
            $(this).mouseout(function (e) {
                var country_id = $(this).attr('id').replace('area_', '');
                $('#' + country_id).css('display', 'none');
            });


        });
    </script>
    <style type="text/css">
        div.world_map_container #transparent_map {
        position: absolute;
        z-index: 20;
        width: 530px;
        height: 380px;
        border: none;


        }

        div.world_map_container {

        margin-right:15px;
        width:530px;
        height:380px;
        position:absolute;
        padding-right:0px !important;
        }


    div.world_map_container ul li {
        display: none;
        position: absolute;
        text-indent: -9999px;
        z-index: 30;        
        }

    #resen {
        background: url("Sliki/resen.gif") no-repeat scroll 0 0 transparent;
        height: 380px;
        right: 0;
        top: 0px;
        width: 530px;

    }

    #skopje {
        background: url("Sliki/skopje.gif") no-repeat scroll 0 0 transparent;
        height: 380px;
        right: 0;
        top: 0px;
        width: 530px;



    }

    #kocani {
        background: url("Sliki/kocani.gif") no-repeat scroll 0 0 transparent;
        height: 380px;
        right: 0;
        top: 0px;
        width: 530px;

    }

</style>  
    </asp:PlaceHolder>
</form>
</body>
</html>

最佳答案

在您的悬停图像上,添加 usemap 以使用相同的 map 。这样它们在显示时就不会触发 mouseout 事件。

请参阅此 fiddle :http://jsfiddle.net/NPFWm/4/

<img src="https://www.google.com/images/srpr/logo4w.png" usemap="#theMap_map" />
<map id="theMap_map" name="theMap_map">
    <area shape="poly" coords="1,1,1,50,50,50,50,1,1,1" id="area1" style="background: #FF0000;" href="#" />
</map>

<img src="https://www.google.com/images/srpr/logo4w.png" id="hover" usemap="#theMap_map" />

关于c# - 鼠标悬停时图像闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973606/

相关文章:

javascript - Mootools 微调中心屏幕

javascript - 用于选择字体的文本属性输入框

c# - 系统.Net.WebException : The underlying connection was closed: An unexpected error occurred on a receive

c# - 两个顶点之间的最长路径

c# - asp.net mvc2 根据列表框值从数据库中选择值

javascript - 如何从数组项中删除字符?

javascript - babel-node 不识别 es2015?

jquery - Fancybox 根据屏幕尺寸错误地改变高度

jquery - 预签名的 AWS S3 PUT url 无法使用 jquery 从客户端上传

c# - 为什么我的 ConvertBack 没有被调用,WPF 转换器和 ValidationRule?