javascript - 更改按钮颜色和背景颜色onclick

标签 javascript html css

我想创建 nav-menu 折叠,但是当我单击菜单按钮时,它会更改为另一种 colorbackground-color。使用 hoverfocus 它会在无法保留旧颜色时更改颜色。因此,我使用 display: blockdisplay: none 一对一地修复了两个按钮。我需要单击 button 按钮 colorbackground-color 再次更改我单击的颜色已更改为旧颜色。

function openNav() {

    document.getElementById("firstbtn").style.display = 'none';
    document.getElementById("secondbtn").style.display = 'block';
    document.getElementById("navbar").style.height = '200px';

}
function closeNav() {

    document.getElementById("firstbtn").style.display = 'block';
    document.getElementById("secondbtn").style.display = 'none';
    document.getElementById("navbar").style.height = '0px';
}
.nav-bg{
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    background-color: #0dc5c1;
    padding-top: 12px;
    position: fixed;
    overflow: hidden;
}
button.nav-btn {
    float: right;
    font-size: 24px;
    border: none;
    margin-right: 16px;
    padding: 4px 8px;
    background-color: #fff;
    color: #0dc5c1;
border-radius: 4px;
}
button.nav-btn1 {
    float: right;
    font-size: 24px;
    border: none;
    margin-right: 16px;
    padding: 4px 8px;
    background-color: #0dc5c1;
    color: #ffffff;
    border-radius: 4px;
}
.navbar-col{
    color: #fff;
    margin-top: 50px;
    transition: 0.7s;
}
.nav-ul{
    list-style: none;
}
li {
    position: relative;
    display: block;
}
a {
    padding-top: 10px;
    padding-bottom: 10px;
    line-height: 25px;
    font-size: 24px;
    font-family: "Segoe UI";
    position: relative;
    display: block;
    padding: 10px 0px;
}
.d-btn,.l-btn,.t-btn,.s-btn{
    background: none;
    border: none;
    color: #ffffff;
}
<nav  class="nav-bg container">
    <button class="nav-btn"  onclick="openNav()" id="firstbtn"><span class="fa fa-bars"></span></button>
    <button class="nav-btn1"  onclick="closeNav()" id="secondbtn" style="display: none"><span class="fa fa-bars"></span></button>                   
    <div class="navbar-col  collapse" id="navbar" style="height: 0px">
       <ul class="nav-ul">
         <li><button class="d-btn"><a>Desktop</a></button></li>
         <li><button class="l-btn"><a>Laptop</a></button></li>
         <li><button class="t-btn"><a>Tablet</a></button></li>
         <li><button class="s-btn"><a>Smartphone</a></button></li>
       </ul>
    </div>
</nav>

Nav-collapse

enter image description here

Nav-expand

enter image description here

最佳答案

您可以通过使用单个按钮来实现。您需要根据您的要求创建两个类,将 background-colorcolor 放在两个类中。现在单击按钮,您可以按类名检查条件。例如

//If you button containe {open} class then you need to assign {close} class else vice versa
if (btn.classList.contains('nav-btn-open')) {
    //Put your logic here.
} else {
    //Put your logic here.
}

演示

function onShowHide(btn) {
  if (btn.classList.contains('nav-btn-open')) {
    btn.classList.remove('nav-btn-open');
    btn.classList.add('nav-btn-close');
    btn.closest('.nav-bg').querySelector('div.navbar-col').style.height = '200px';
  } else {
    btn.classList.remove('nav-btn-close');
    btn.classList.add('nav-btn-open');
    btn.closest('.nav-bg').querySelector('div.navbar-col').style.height = '0px';
  }

}
.nav-bg {
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  background-color: #0dc5c1;
  padding-top: 12px;
  position: fixed;
  overflow: hidden;
}

.right-btn {
  float: right;
  font-size: 24px;
  border: none;
  margin: 0 10px 10px 0;
  padding: 5px 10px;
  border-radius: 4px;
  cursor: pointer;
}

.nav-btn-open {
  background-color: #fff;
  color: #0dc5c1;
}

.nav-btn-close {
  background-color: #0dc5c1;
  color: #ffffff;
}

.navbar-col {
  color: #fff;
  margin-top: 50px;
  transition: 0.7s;
  height: 0px;
}

.nav-ul {
  list-style: none;
}

li {
  position: relative;
  display: block;
}

a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 25px;
  font-size: 24px;
  font-family: "Segoe UI";
  position: relative;
  display: block;
  padding: 10px 0px;
}

.d-btn,
.l-btn,
.t-btn,
.s-btn {
  background: none;
  border: none;
  color: #ffffff;
}
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<nav class="nav-bg container">

  <button class="right-btn nav-btn-open" onclick="onShowHide(this)"><span class="fa fa-bars"></span></button>

  <div class="navbar-col">
    <ul class="nav-ul">
      <li><button class="d-btn"><a>Desktop</a></button></li>
      <li><button class="l-btn"><a>Laptop</a></button></li>
      <li><button class="t-btn"><a>Tablet</a></button></li>
      <li><button class="s-btn"><a>Smartphone</a></button></li>
    </ul>
  </div>
</nav>

关于javascript - 更改按钮颜色和背景颜色onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50887081/

相关文章:

javascript - 使用确认从按钮中的 JavaScript 停止 Angular

javascript - 较小的运算符在 JavaScript 代码中给出错误

Javascript FileReader.onload 在表单提交(POST)后不起作用

html - 调整大小时,导航栏的高度加倍

html - 使用本地样式表规范化 CSS 显示不正确

javascript - 如何从 Form-POST 操作和 JavaScript 将 CSS 和 HTML 元素呈现回客户端浏览器?

javascript - 如何更改 variable.scss 中变量的值?

javascript - 在 jQuery 中使用单个输入来设置多个不同选项的值的方法

audio - HTML5音频链接屏蔽?

html - 子子菜单CSS