html - 如何在单击时更改按钮 CSS 颜色

标签 html css styles frontend angular-ui-bootstrap

我有以下按钮,当鼠标悬停在它们上面时会发生变化。

如何在选择其中一个按钮时设置背景颜色而不会在我单击屏幕上的其他位置时丢失选择?

在目前的方式中,点击按钮使其成为您选择的颜色,但点击屏幕的另一个区域返回到原始颜色。

button {
  padding: 15px;
  margin: 0px 3px 0px 0px;
  font-size: 20px;
  font-weight: 400;
  font-family: Arial, Helvetica, sans-serif;
  border: none;
}

button:hover {
  cursor: pointer;
  background: black;
}

.btn-scale-0,
.btn-scale-1,
.btn-scale-2,
.btn-scale-3 {
  background-color: #FE0200;
  color: white;
  text-shadow: 1px 1px 3px #8e8e8e;
}
<button id="scale-0" class="btn-scale-0">&nbsp;0&nbsp;</button>
<button id="scale-1" class="btn-scale-1">&nbsp;1&nbsp;</button>
<button id="scale-2" class="btn-scale-2">&nbsp;2&nbsp;</button>
<button id="scale-3" class="btn-scale-3">&nbsp;3&nbsp;</button>

最佳答案

如果不使用 JavaScript 就不可能在不经历意想不到的副作用的情况下实现这一目标。

如果 visited 状态无关紧要甚至是需要的,请查看 @Blazemonger's回答。

CSS 伪类 focusactive 是通过点击页面其他地方时丢失其状态来定义的。

JavaScript(+JQuery)解决方案:

$("#scale-0").click(function() {
  $("#scale-0").addClass('button-clicked');
});
$("#scale-1").click(function() {
  $("#scale-1").addClass('button-clicked');
});
$("#scale-2").click(function() {
  $("#scale-2").addClass('button-clicked');
});
$("#scale-3").click(function() {
  $("#scale-3").addClass('button-clicked');
});
button {
  padding: 15px;
  margin: 0px 3px 0px 0px;
  font-size: 20px;
  font-weight: 400;
  font-family:Arial, Helvetica, sans-serif;
  border:none;
}

button:hover{
  cursor: pointer;
  background: black;
}

.btn-scale-0, .btn-scale-1, .btn-scale-2, .btn-scale-3{
    background-color: #FE0200;
    color: white;
    text-shadow: 1px 1px 3px #8e8e8e;
}

.button-clicked {
  background-color: black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="scale-0" class="btn-scale-0 btn">&nbsp;0&nbsp;</button>
<button id="scale-1" class="btn-scale-1 btn">&nbsp;1&nbsp;</button>
<button id="scale-2" class="btn-scale-2 btn">&nbsp;2&nbsp;</button>
<button id="scale-3" class="btn-scale-3 btn">&nbsp;3&nbsp;</button>

关于html - 如何在单击时更改按钮 CSS 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58803521/

相关文章:

css - 更改工作项标签的样式

css - 样式化基本元素而不是使用 DIV

css - MVC : Is it a good idea to split CSS files by view?

javascript - Font Awesome 只适用于 chrome 但不适用于 safari

jquery - 数据行 CSS 类 - 确定表中返回的行数 - 说明

jquery - 2 列 - 都滚动(左侧停止其内容)

html - 内容完成后停止 div 滚动,而另一个 div 继续滚动

CSS:水平和垂直居中文本?

html - 图像导致 div 扩展超过 IE 中设置的高度

html - CSS 实现类似的固定 float div,它总是位于其他 div 之上——就像 stackoverflow 一样?