我有几个红色和黑色按钮,我想将'onmousedown'和'onmouseup'事件添加到共享同一类(“红色按钮”)的红色按钮组中。
onmousedown我想更改添加类“opaque”和onmouseup再次将其删除。
因此,已经“选中”的红色按钮略微透明,onmouseup恢复正常(红色)。其他按钮不受影响。
CSS
.button {
background-color: black;
color: white;
height: 30px;
width: 150px;
text-align: center;
}
.button.red {
background-color: red;
}
.button.red.opaque {
opacity: 0.7;
}
javascript(目前为止)
var classname = this.document.getElementsByClassName("button red");
for (var i = 0; i < classname.length; i++) {
classname[i].addEventListener('onmousedown', classList.add("opaque"), false);
classname[i].addEventListener('onmouseup', classList.remove("opaque"), false);
}
答案 0 :(得分:6)
您只能使用CSS执行此操作。
username
button {
padding: 0.5rem 1rem;
background-color: lightgray;
border: 1px solid gray;
}
button:active {
background-color: salmon;
opacity: 0.5;
}
要在JS中解决这个问题,就像你正在做的那样,你需要解决一些问题。
正如评论中所提到的,<button>Click Me!</button>
有一种类型。我会使用getElementsByClassName()
代替querySelectorAll()
,因为它可以更灵活地选择元素。
getElementsByClassName()
是DOM元素的属性,不能单独使用。这样做classList
,而不是element.classList.add( 'class' )
。
您的CSS选择器不正确,即classList.add( 'class' )
将尝试选择类.button red opaque
的元素,该元素包含.button
元素,其元素为<red>
。
您的标记和选择器可能有问题,但我没有您的HTML进行验证。我为你的例子假设了你的标记。
<opaque>
var $btns = [].slice.call( document.querySelectorAll( '.button.red' ) );
$btns.map( function ( btn ) {
btn.addEventListener( 'mousedown', function ( e ) {
btn.classList.add( 'opaque' );
} );
btn.addEventListener( 'mouseup', function ( e ) {
btn.classList.remove( 'opaque' );
} );
} );
.button {
padding: 0.5rem 1rem;
background-color: lightgray;
border: 1px solid gray;
}
.button.red {
background-color: indianred;
}
.button.opaque {
opacity: 0.5;
}
答案 1 :(得分:2)
可以使用css,但这是一个在鼠标按下和鼠标按下时添加jquery监听器的解决方案。
$('.button' + '.red').each(function() {
$(this).mousedown(function() {
$(this).toggleClass('opaque');
});
$(this).mouseup(function() {
$(this).toggleClass('opaque');
});
});
&#13;
.button {
background-color: black;
color: white;
height: 30px;
width: 150px;
text-align: center;
}
.red {
background-color: red;
}
.black {
background-color: black;
}
.opaque {
opacity: 0.7;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="button red">Button</button>
<button class="button black">Button</button>
&#13;
答案 2 :(得分:2)
<form>
标记中的已包装按钮transition
属性
var form = document.forms.main;
form.addEventListener('mousedown', fade, false);
form.addEventListener('mouseup', fade, false);
function fade(e) {
if (e.target !== e.currentTarget) {
e.target.classList.toggle('opq');
}
}
&#13;
.btn {
background-color: black;
color: white;
height: 30px;
width: 50px;
text-align: center;
opacity: 1;
cursor: pointer;
border-radius: 10px;
transition: all .5s ease;
}
.red {
background-color: red;
transition: all .5s ease
}
.btn.red.opq {
opacity: 0.7;
transition: all .5s ease
}
&#13;
<form id='main'>
<button class='red btn' type='button'>RED</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='red btn' type='button'>RED</button>
<button class='btn' type='button'>BLK</button>
<button class='btn' type='button'>BLK</button>
</form>
&#13;
答案 3 :(得分:1)
var classname = this.document.getElementsByClassName("button red");
for (var i = 0; i < classname.length; i++) {
classname[i].addEventListener('mousedown', function () {
this.classList.add("opaque")
}, false);
classname[i].addEventListener('mouseup', function () {
this.classList.remove("opaque")
}, false);
}
CSS:
.button {
background-color: black;
color: white;
height: 30px;
width: 150px;
text-align: center;
}
.button.red {
background-color: red;
}
.button.red.opaque {
opacity: 0.7;
}
getElementByClassName
应为getElementsByClassName
classList
属性mousedown
和mouseup