通常我会使用:hover,但我希望我的网站也可以在触摸屏上访问。
我知道可以使用 :active,但是一旦我松开鼠标按钮,它就回到了非活动状态。
事实上,我想要的是:
鼠标按下:Div 变绿
鼠标释放:Div 保持绿色
鼠标按下:Div 变红
鼠标释放:Div 保持红色
而不是:
鼠标按下:Div 变绿
鼠标释放:Div 变红
通常我会使用:hover,但我希望我的网站也可以在触摸屏上访问。
我知道可以使用 :active,但是一旦我松开鼠标按钮,它就回到了非活动状态。
事实上,我想要的是:
鼠标按下:Div 变绿
鼠标释放:Div 保持绿色
鼠标按下:Div 变红
鼠标释放:Div 保持红色
而不是:
鼠标按下:Div 变绿
鼠标释放:Div 变红
不依赖于jQuery:
:active
伪类用于在元素被点击时应用CSS样式。
.button {
color: red;
}
.button:active {
color: green;
}
以下是如何制作纯CSS切换按钮(需要CSS3):
.toggle-button
{
background-color: #FF0000;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.toggle-box:checked + .toggle-button
{
background-color: #00FF00;
}
<input type="checkbox" class="toggle-box" id="toggle-1" />
<label for="toggle-1" class="toggle-button">Click Me</label>
:checked
伪类),因此最好使用JavaScript。:focus
(并不完全相同)是唯一的解决方案。 - Andy E$(function(){
$('#yo-content').click(function() {
$(this).toggleClass('make-me-green');
});
});
#yo-content {
background-color: #ff0000;
cursor: pointer;
}
.make-me-green {
background-color: #33ff00 !important;
}
HTML:
<div id="yo-content">Feel free to click</div>
// let's suppose your div's (on page load) initial state is red (#F00),
// and this flag will stand for it
var initialState = true; // setup a global state flag
$("#foo").mousedown( function() { // on mousedown
$(this).css("background-color", intialState ? "#0F0" : "#F00"); // toggle bgColor
initialState = !initialState; // toggle flag
});
如果你想让表现方面尽可能地保持 CSS 中心化(这是一个不错的观点),那么你可以设置/添加/删除类名,而不是设置 CSS 属性。