【问题标题】:jQuery: Changing the hover color with a color pickerjQuery:使用颜色选择器更改悬停颜色
【发布时间】:2020-08-17 20:32:38
【问题描述】:

我想用颜色选择器更改悬停颜色。

这是我尝试过的:

// First Try

$("input[type=color]").change(function(e) {
  var pickedColor = e.target.value;
  // $("body").css("background-color", pickedColor);
  $("div:hover").css("color", pickedColor);
});


// Second Try

$("input[type=color]").change(function(e) {
  var pickedColor = e.target.value;
  // $("body").css("background-color", pickedColor);
  $(".hover").css("color", pickedColor);
});

$("div").hover(function() {
  $(this).addClass("hover");
}, function() {
  $(this).removeClass("hover");
});
body {
  display: flex;
  font-size: 30px;
  font-family: Arial;
  cursor: default;
}

div {
  color: red;
  padding: 10px;
}

div:hover {
  color: orange;
}

.hover {
  color: blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>Hello</div>

<input type="color">

不幸的是,两者都不起作用。我猜颜色选择器让它有点复杂。有人可以帮帮我吗?

非常感谢!

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    在第二个(使用 jquery hover())中,您将 .hover 类添加到 div,这工作正常,但是 css div:hover 优先,因此显示在橙色

    颜色是动态的(来自颜色选择器)的(更新的)问题意味着您不能使用 css 类。 (可以,但添加&lt;style&gt; 元素:https://stackoverflow.com/a/21051833/2181514 有点麻烦,但如果它可以多次更改,则不是真正可用)。

    您也不能直接设置:pseudo(如:hover)元素的样式。

    留下使用.hover()的选项。

    // Setup the colour
    $("input[type=color]").change(function(e) {
      var pickedColor = e.target.value;
      $("div.hoverme").data("hovercolour", pickedColor);
    });
    
    // Set the colour on hover/unhover
    
    $("div").hover(function() {
      var pickedColor = $(this).data("hovercolour");
      $(this).css("color", pickedColor);
    }, function() {
      var normalColor = $(this).data("normalcolour")
      $(this).css("color", normalColor);
    });
    body {
      font-size: 30px;
    }
    
    div {
      color: red;
      padding: 10px;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div class="hoverme" data-hovercolour="orange" data-normalcolour="red">Hello</div>
    
    <input type="color">

    在这里,我没有为颜色使用全局变量,而是将这两种颜色与默认的 orange 一起存储在 data- 属性中 - jquery 可以在悬停时读取它

    【讨论】:

    • 嘿,很抱歉,我不得不更新问题,因为我正在使用颜色选择器。在这种情况下,您的解决方案不起作用。如果你能再看看它会很酷! :)
    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多