javascript - jQuery:使用颜色选择器更改悬停颜色

标签 javascript jquery

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

这是我试过的:

// 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">

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

非常感谢!

最佳答案

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

颜色是动态的(来自颜色选择器)的(更新)问题意味着您不能使用 css 类。 (您可以,但是在添加 <style> 元素的地方有点老套: 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">

在这里,我没有为颜色使用全局变量,而是将两种颜色存储在 data- 中。属性以及默认值 orange - 当需要悬停时,哪个 jquery 可以读取

关于javascript - jQuery:使用颜色选择器更改悬停颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63449903/

相关文章:

javascript - NodeJS 反向 SSH 隧道 : unable to bind to serveo.net:80

javascript - 如何为 TD 设置省略号

javascript - 如何阻止模式对话框在单击按钮时关闭?

javascript - 使用ajax滚动div不起作用

javascript - 序列化和反序列化数组(没有jquery?)

javascript - 在 iOS/iphone/ipad 中放大时 jqueryui 对话框的位置问题

javascript - JQueryUI 垂直选项卡 - 添加一些(显然不相关的)CSS 样式后,用于选项卡功能的 JS 停止工作

jquery - 用于渐变效果的引导工具提示

javascript - d3.js 带有工具提示的移动平均线图(自定义插值)

javascript - vue.js 在直接 css/样式更改和从数组中删除项目时的奇怪行为