【问题标题】:after mouseover back to previous state with mouseout? -without setting fixed values鼠标悬停后用鼠标悬停回到以前的状态? - 不设置固定值
【发布时间】:2017-11-27 19:45:59
【问题描述】:

我正在开发一个颜色选择器来使用 JS 更改 SVG 图像的 CSS 属性。 到目前为止,我的基本代码可以在单击和鼠标悬停时更改 SVG-Path 的填充颜色。

我希望在用鼠标离开按钮后填充颜色回落到以前的“选定”颜色。 我知道我可以为 mouseout 函数定义一个固定值。但是,如果用户通过单击选择颜色,我 希望设置单击的选择(稍后将它们放入 php 变量中)和快速鼠标悬停-'blend- ins 真的应该暂时显示用户悬停..

也就是说:如果用户之前点击过,则通过退回到点击状态退出鼠标悬停状态。

颜色将立即设置为鼠标悬停选择;这应该只是对用户的视觉指导,而不是设置本身。

可能我的 JS-Example 比我说的更能说明问题:

$(function(){
$("#s01aFI").css("fill","#fff");

  $("#fw01-f01").mouseover(function(){
  $("#s01aFI").css("fill","#e53741");
  });
  $("#fw01-f01").click(function(){
  $("#s01aFI").css("fill","#e53741");
  });
  $("#fw01-f01").mouseout(function(){
  $("#s01aFI").css("fill","RECENT-STATE");
  });

  ...

});
.f01 { background-color:#e53741; }
.f02 { background-color:#419327; }
...
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
*JS-Function*
</script>

<svg>
<path id="s01aFI" d="***"/>
</svg>

<button id="fw01-f01" class="farbwahler f01">01</button>
<button id="fw01-f02" class="farbwahler f02">02</button>
...
附言如果你能给我一个关于冗余的提示,那也太棒了;因为我要为很多颜色和元素做这个,而且从昨天开始我是 JS 的新手。 :)

【问题讨论】:

    标签: javascript jquery css mouseover mouseout


    【解决方案1】:

    如果我理解正确,您需要此代码:

    $(this) - 使用鼠标悬停的当前按钮

    $(function(){
      var preview = $("#s01aFI");
      var colorBut = $(".farbwahler"); //any button
      var curColor = "gold";
    
      colorBut.mouseover(function(){
        $(this).data('clicked', false);
        var color = $(this).css('background-color');
        preview.css("fill",color);
      });
     
      colorBut.mouseout(function(){
        var isClick = $(this).data('clicked');
        if(!isClick){
          var color = $(this).css('background-color');
          preview.css("fill",curColor );
        }
      });
      
      colorBut.click(function(){
        var color = $(this).css('background-color');
        preview.css("fill",color);
        curColor = color;
        $(this).data('clicked', true);
      });
    });
    .f01 { background-color:#e53741; }
    .f02 { background-color:#419327; }
    
    svg {
      width: 200px;
      height: 200px;
      border: 1px solid red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <svg>
      <path id="s01aFI" d="M 10,110 L 10,10 L 40,50 L 70,10 L 100,50 L 130,10 L 130,110 z"
              fill="gold" stroke="orange" stroke-width="5"/>
    </svg>
    
    <button id="fw01-f01" class="farbwahler f01">01</button>
    <button id="fw01-f02" class="farbwahler f02">02</button>

    【讨论】:

    • 是的。谢谢!你是这个答案的王冠。 :) 不仅它有效,而且它也是一个完美的练习,我可以按照你的思路来了解我的想法和它的实际运作方式之间的差异。
    猜你喜欢
    • 2011-08-04
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2015-04-22
    • 2011-05-26
    相关资源
    最近更新 更多