toggle show/hide div with button?

后端 未结 8 1894

Hopefully this is an easy question. I have a div that I want to toggle hidden/shown with a button

相关标签:
8条回答
  • 2020-11-22 14:34

    This is how I hide and show content using a class. changing the class to nothing will change the display to block, changing the class to 'a' will show the display as none.

    <!DOCTYPE html>
    <html>
    <head>
    <style>
    body  {
      background-color:#777777;
      }
    block1{
      display:block; background-color:black; color:white; padding:20px; margin:20px;
      }
    block1.a{
      display:none; background-color:black; color:white; padding:20px; margin:20px;
      }
    </style>
    </head>
    <body>
    <button onclick="document.getElementById('ID').setAttribute('class', '');">Open</button>
    <button onclick="document.getElementById('ID').setAttribute('class', 'a');">Close</button>
    <block1 id="ID" class="a">
    <p>Testing</p>
    </block1>
    </body>
    </html>
    
    0 讨论(0)
  • 2020-11-22 14:38

    You could use the following:

    mydiv.style.display === 'block' = (mydiv.style.display === 'block' ? 'none' : 'block');

    0 讨论(0)
  • 2020-11-22 14:39

    Pure JavaScript:

    var button = document.getElementById('button'); // Assumes element with id='button'
    
    button.onclick = function() {
        var div = document.getElementById('newpost');
        if (div.style.display !== 'none') {
            div.style.display = 'none';
        }
        else {
            div.style.display = 'block';
        }
    };
    

    SEE DEMO

    jQuery:

    $("#button").click(function() { 
        // assumes element with id='button'
        $("#newpost").toggle();
    });
    

    SEE DEMO

    0 讨论(0)
  • 2020-11-22 14:42

    Here's a plain Javascript way of doing toggle:

    <script>
      var toggle = function() {
      var mydiv = document.getElementById('newpost');
      if (mydiv.style.display === 'block' || mydiv.style.display === '')
        mydiv.style.display = 'none';
      else
        mydiv.style.display = 'block'
      }
    </script>
    
    <div id="newpost">asdf</div>
    <input type="button" value="btn" onclick="toggle();">
    
    0 讨论(0)
  • 2020-11-22 14:42

    Try with opacity

    div { transition: all 0.4s ease }
    .hide { opacity: 0; }
    <input onclick="newpost.classList.toggle('hide')" type="button" value="toggle">
    
    <div id="newpost">Hello</div>

    0 讨论(0)
  • 2020-11-22 14:43

    JavaScript - Toggle Element.styleMDN

    var toggle  = document.getElementById("toggle");
    var content = document.getElementById("content");
    
    toggle.addEventListener("click", function() {
      content.style.display = (content.dataset.toggled ^= 1) ? "block" : "none";
    });
    #content{
      display:none;
    }
    <button id="toggle">TOGGLE</button>
    <div id="content">Some content...</div>

    About the ^ bitwise XOR as I/O toggler
    https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset

    JavaScript - Toggle .classList.toggle()

    var toggle  = document.getElementById("toggle");
    var content = document.getElementById("content");
    
    toggle.addEventListener("click", function() {
      content.classList.toggle("show");
    });
    #content{
      display:none;
    }
    #content.show{
      display:block; /* P.S: Use `!important` if missing `#content` (selector specificity). */
    }
    <button id="toggle">TOGGLE</button>
    <div id="content">Some content...</div>

    jQuery - Toggle

    .toggle()Docs; .fadeToggle()Docs; .slideToggle()Docs

    $("#toggle").on("click", function(){
      $("#content").toggle();                 // .fadeToggle() // .slideToggle()
    });
    #content{
      display:none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button id="toggle">TOGGLE</button>
    <div id="content">Some content...</div>

    jQuery - Toggle .toggleClass()Docs

    .toggle() toggles an element's display "block"/"none" values

    $("#toggle").on("click", function(){
      $("#content").toggleClass("show");
    });
    #content{
      display:none;
    }
    #content.show{
      display:block; /* P.S: Use `!important` if missing `#content` (selector specificity). */
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button id="toggle">TOGGLE</button>
    <div id="content">Some content...</div>

    HTML5 - Toggle using <summary> and <details>

    (unsupported on IE and Opera Mini)

    <details>
      <summary>TOGGLE</summary>
      <p>Some content...</p>
    </details>

    HTML - Toggle using checkbox

    [id^=toggle],
    [id^=toggle] + *{
      display:none;
    }
    [id^=toggle]:checked + *{
      display:block;
    }
    <label for="toggle-1">TOGGLE</label>
    
    <input id="toggle-1" type="checkbox">
    <div>Some content...</div>

    HTML - Switch using radio

    [id^=switch],
    [id^=switch] + *{
      display:none;
    }
    [id^=switch]:checked + *{
      display:block;
    }
    <label for="switch-1">SHOW 1</label>
    <label for="switch-2">SHOW 2</label>
    
    <input id="switch-1" type="radio" name="tog">
    <div>1 Merol Muspi...</div>
    
    <input id="switch-2" type="radio" name="tog">
    <div>2 Lorem Ipsum...</div>

    CSS - Switch using :target

    (just to make sure you have it in your arsenal)

    [id^=switch] + *{
      display:none;
    }
    [id^=switch]:target + *{
      display:block;
    }
    <a href="#switch1">SHOW 1</a>
    <a href="#switch2">SHOW 2</a>
    
    <i id="switch1"></i>
    <div>1 Merol Muspi ...</div>
    
    <i id="switch2"></i>
    <div>2 Lorem Ipsum...</div>


    Animating class transition

    If you pick one of JS / jQuery way to actually toggle a className, you can always add animated transitions to your element, here's a basic example:

    var toggle  = document.getElementById("toggle");
    var content = document.getElementById("content");
    
    toggle.addEventListener("click", function(){
      content.classList.toggle("appear");
    }, false);
    #content{
      /* DON'T USE DISPLAY NONE/BLOCK! Instead: */
      background: #cf5;
      padding: 10px;
      position: absolute;
      visibility: hidden;
      opacity: 0;
              transition: 0.6s;
      -webkit-transition: 0.6s;
              transform: translateX(-100%);
      -webkit-transform: translateX(-100%);
    }
    #content.appear{
      visibility: visible;
      opacity: 1;
              transform: translateX(0);
      -webkit-transform: translateX(0);
    }
    <button id="toggle">TOGGLE</button>
    <div id="content">Some Togglable content...</div>

    0 讨论(0)
提交回复
热议问题