css 单击时更改边框颜色

ssm49v7z  于 2023-05-08  发布在  其他
关注(0)|答案(7)|浏览(233)

我有一个由4个div框组成的菜单。我希望活动框有一个红色的边框,如果另一个框被点击的边框是白色的,其他框的边框是红色的。我需要JavaScript还是CSS就足够了?
jsfiddel div
HTML

<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>

CSS

.box{
margin: 10px;
float: left;
width: 100px;
height: 50px;
background-color: blue;
border: solid 1px red;
}
izkcnapc

izkcnapc1#

如果你想保持点击的状态,你需要JavaScript,hover可以用CSS。
您可以使用div:active { /* style */ }作为单击并保持的样式,但它将在鼠标抬起后消失。
这是使用jQuery的一种快速方法:

$('.box').on('click', function(e){
  e.preventDefault();
  $(this).css('border-color', 'lime');
});

最好还是切换一个类:
JS:

$('.box').on('click', function(e){
      e.preventDefault();
      $(this).toggleClass('myClickState');
    });

CSS:

.myClickState {
  border-color: lime;
}
f0ofjuux

f0ofjuux2#

function fnChangeBorder(boxId)

{document.getElementById(boxId).style.border = "solid #AA00FF";}
<div class="box" id="A" onclick="fnChangeBorder('A')">Click here !!</div>

我选择A作为参数是因为数字不能作为函数参数

nc1teljy

nc1teljy3#

试试这个:

.box:focus{ border-color:#cd3232; }
ct2axkht

ct2axkht4#

是的,您可以使用:active伪选择器来实现这一点。
试试这个:

.box:active {
    border-color: red;   
}

但是,释放鼠标后,这种情况不会持续。
IE6也不支持。

ryevplcw

ryevplcw5#

看看这个函数:
http://jqueryui.com/addClass/
它展示了如何应用click事件和更改CSS类。您只需创建一个具有边框颜色的所需类。

ndasle7k

ndasle7k6#

你可以通过jQuery(JSFiddle here)来实现:

$(document).ready(function() {
  $('.box').click(function() {
    if($('.active').length) {
      $('.active').not($(this)).removeClass('active').addClass('box');
    }      
    $(this).removeClass('box').addClass('active');     
  }); 
});
yqhsw0fo

yqhsw0fo7#

您希望使用:focus CSS伪类代替:active
试试这个:

.box:focus {
    border-color: red;   
}

在单击事件完成后,这应持续存在。

相关问题