使按钮保持一种颜色,除非悬停在上面
Make button stay one color except when hovered over
我如何制作一个按钮,它可以在 hover
上改变颜色,然后在 return 上单击它后又恢复到原来的颜色?
问题是我的按钮以红色渐变开始,然后在悬停时改变颜色,然后在点击后变成白色。但我希望它在被点击后 return 变成红色,而不是白色。
我以为我通过添加 focus
找到了解决方案。这样,单击按钮后,它会 return 在焦点对准时恢复为原来的颜色。但随后悬停不会改变按钮的颜色,直到焦点从按钮上移开。
我还没有找到伪 类 或 javascript 的组合来使此按钮保持红色,除非它悬停在上面。
编辑
根据 @webeno 的评论,我删除了 CSS 并尝试使用此 javascript 的新方法,但该按钮继续以其默认样式工作。 (在此示例中,颜色为蓝色,悬停时为红色。)
<button class = "btn">Go</button>
<script>
.red {background-color: #f00;
}
.blue {background-color: #00f;
}
$(document).ready(function(){
$('.btn').mouseover(function(){
$(this).addClass('red');
}).mouseout(function(){
$(this).addClass('blue');
});
});
</script>
您在 script
标签内添加了 CSS 定义,这显然是不正确的。您应该将它放在 style
标签下的 head
部分,或者放在单独的 .css
文件中并在 head
.
中引用它
所以...
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
...或...
<head>
<style>
/* Your CSS rules come here */
</style>
</head>
一旦你这样做了,你问题底部的代码应该可以正常工作(前提是你 link 到 jQuery 也正确,就像你对你的样式表一样,如上所示).
这里是完整的:
<head>
<style>
.red {background-color: #f00;}
.blue {background-color: #00f;}
</style>
<script>
$(document).ready(function(){
$('.btn').mouseover(function(){
$(this).addClass('red');
}).mouseout(function(){
$(this).addClass('blue');
});
});
</script>
</head>
<body>
<button class = "btn">Go</button>
</body>
这是一个 fiddle 演示:https://jsfiddle.net/6wbnvy7g/
还有一件事:请注意,每次触发事件时您都必须注意删除 class,否则您最终会同时应用两个 class下次您尝试将鼠标悬停在按钮上时,将鼠标悬停在元素上。因此,我会将您的 jQuery 代码更改为以下代码之一:
$(document).ready(function(){
$('.btn').mouseover(function(){
$(this).removeClass('blue');
$(this).addClass('red');
}).mouseout(function(){
$(this).removeClass('red');
$(this).addClass('blue');
});
});
或者更简单,使用jQuery的.hover
函数:
$(document).ready(function(){
$('.btn').hover(function(){
$(this).removeClass('blue');
$(this).addClass('red');
}, function(){
$(this).removeClass('red');
$(this).addClass('blue');
});
});
这是该版本的更新 fiddle:https://jsfiddle.net/6wbnvy7g/2/
在鼠标悬停时更改颜色的最佳方法是使用 CSS。
.btn, .btn:focus, .btn:active {background-color: #00f;}
.btn:hover {background-color: #f00;}
适用于我的代码的解决方案是遵循 zatee29 的回答,将其放在 css:
.btn, .btn:focus, .btn:active {background-color: #00f;}
.btn:hover {background-color: #f00;}
当然还有 html 中的按钮:
<button class = "btn">Go</button>
结果完全符合预期。该按钮开始为蓝色,悬停时变为红色,然后 returns 变为蓝色。
请注意,webeno 的第二个解决方案在 JSFiddle 中提供了相同的功能,但我不明白为什么它在我现有的程序中不起作用。
我如何制作一个按钮,它可以在 hover
上改变颜色,然后在 return 上单击它后又恢复到原来的颜色?
问题是我的按钮以红色渐变开始,然后在悬停时改变颜色,然后在点击后变成白色。但我希望它在被点击后 return 变成红色,而不是白色。
我以为我通过添加 focus
找到了解决方案。这样,单击按钮后,它会 return 在焦点对准时恢复为原来的颜色。但随后悬停不会改变按钮的颜色,直到焦点从按钮上移开。
我还没有找到伪 类 或 javascript 的组合来使此按钮保持红色,除非它悬停在上面。
编辑
根据 @webeno 的评论,我删除了 CSS 并尝试使用此 javascript 的新方法,但该按钮继续以其默认样式工作。 (在此示例中,颜色为蓝色,悬停时为红色。)
<button class = "btn">Go</button>
<script>
.red {background-color: #f00;
}
.blue {background-color: #00f;
}
$(document).ready(function(){
$('.btn').mouseover(function(){
$(this).addClass('red');
}).mouseout(function(){
$(this).addClass('blue');
});
});
</script>
您在 script
标签内添加了 CSS 定义,这显然是不正确的。您应该将它放在 style
标签下的 head
部分,或者放在单独的 .css
文件中并在 head
.
所以...
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
...或...
<head>
<style>
/* Your CSS rules come here */
</style>
</head>
一旦你这样做了,你问题底部的代码应该可以正常工作(前提是你 link 到 jQuery 也正确,就像你对你的样式表一样,如上所示).
这里是完整的:
<head>
<style>
.red {background-color: #f00;}
.blue {background-color: #00f;}
</style>
<script>
$(document).ready(function(){
$('.btn').mouseover(function(){
$(this).addClass('red');
}).mouseout(function(){
$(this).addClass('blue');
});
});
</script>
</head>
<body>
<button class = "btn">Go</button>
</body>
这是一个 fiddle 演示:https://jsfiddle.net/6wbnvy7g/
还有一件事:请注意,每次触发事件时您都必须注意删除 class,否则您最终会同时应用两个 class下次您尝试将鼠标悬停在按钮上时,将鼠标悬停在元素上。因此,我会将您的 jQuery 代码更改为以下代码之一:
$(document).ready(function(){
$('.btn').mouseover(function(){
$(this).removeClass('blue');
$(this).addClass('red');
}).mouseout(function(){
$(this).removeClass('red');
$(this).addClass('blue');
});
});
或者更简单,使用jQuery的.hover
函数:
$(document).ready(function(){
$('.btn').hover(function(){
$(this).removeClass('blue');
$(this).addClass('red');
}, function(){
$(this).removeClass('red');
$(this).addClass('blue');
});
});
这是该版本的更新 fiddle:https://jsfiddle.net/6wbnvy7g/2/
在鼠标悬停时更改颜色的最佳方法是使用 CSS。
.btn, .btn:focus, .btn:active {background-color: #00f;}
.btn:hover {background-color: #f00;}
适用于我的代码的解决方案是遵循 zatee29 的回答,将其放在 css:
.btn, .btn:focus, .btn:active {background-color: #00f;}
.btn:hover {background-color: #f00;}
当然还有 html 中的按钮:
<button class = "btn">Go</button>
结果完全符合预期。该按钮开始为蓝色,悬停时变为红色,然后 returns 变为蓝色。
请注意,webeno 的第二个解决方案在 JSFiddle 中提供了相同的功能,但我不明白为什么它在我现有的程序中不起作用。