Onclick CSS button effect

前端 未结 4 2095
梦毁少年i
梦毁少年i 2021-02-05 12:56

I\'m creating a CSS button and I\'m trying to make an onclick effect: when the user clicks on the button it would push down the button text by 1px. My problem here is that it\'s

相关标签:
4条回答
  • 2021-02-05 13:35

    JS provides the tools to do this the right way. Try the demo snippet.

    var doc = document;
    var buttons = doc.getElementsByTagName('button');
    var button = buttons[0];
    
    button.addEventListener("mouseover", function(){
      this.classList.add('mouse-over');
    });
    
    button.addEventListener("mouseout", function(){
      this.classList.remove('mouse-over');
    });
    
    button.addEventListener("mousedown", function(){
      this.classList.add('mouse-down');
    });
    
    button.addEventListener("mouseup", function(){
      this.classList.remove('mouse-down');
      alert('Button Clicked!');
    });
    
    //this is unrelated to button styling.  It centers the button.
    var box = doc.getElementById('box');
    var boxHeight = window.innerHeight;
    box.style.height = boxHeight + 'px'; 
    button{
      text-transform: uppercase;
      background-color:rgba(66, 66, 66,0.3);
      border:none;
      font-size:4em;
      color:white;
      -webkit-box-shadow: 0px 10px 5px -4px rgba(0,0,0,0.33);
      -moz-box-shadow: 0px 10px 5px -4px rgba(0,0,0,0.33);
      box-shadow: 0px 10px 5px -4px rgba(0,0,0,0.33);
    }
    button:focus {
      outline:0;
    }
    .mouse-over{
      background-color:rgba(66, 66, 66,0.34);
    }
    .mouse-down{
      -webkit-box-shadow: 0px 6px 5px -4px rgba(0,0,0,0.52);
      -moz-box-shadow: 0px 6px 5px -4px rgba(0,0,0,0.52);
      box-shadow: 0px 6px 5px -4px rgba(0,0,0,0.52);                 
    }
    
    /* unrelated to button styling */
    #box {
      display: flex;
      flex-flow: row nowrap ;
      justify-content: center;
      align-content: center;
      align-items: center;
      width:100%;
    }
    
    button {
      order:1;
      flex: 0 1 auto;
      align-self: auto;
      min-width: 0;
      min-height: auto;
    }            
    
    
        
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset=utf-8 />
        <meta name="description" content="3d Button Configuration" />
      </head>
    
      <body>
        <section id="box">
          <button>
            Submit
          </button>
        </section>
      </body>
    </html>

    0 讨论(0)
  • 2021-02-05 13:44

    Push down the whole button. I suggest this it is looking nice in button.

    #button:active {
        position: relative;
        top: 1px;
    }
    

    if you only want to push text increase top-padding and decrease bottom padding. You can also use line-height.

    0 讨论(0)
  • 2021-02-05 13:47

    You should apply the following styles:

    #button:active {
        vertical-align: top;
        padding: 8px 13px 6px;
    }
    

    This will give you the necessary effect, demo here.

    0 讨论(0)
  • 2021-02-05 13:58

    This is a press down button example I've made:

    <div>
        <form id="forminput" action="action" method="POST">
           ...
        </form>
        <div style="right: 0px;bottom: 0px;position: fixed;" class="thumbnail">
            <div class="image">
                <a onclick="document.getElementById('forminput').submit();">
                    <img src="images/button.png" alt="Some awesome text">
                </a>
            </div>
        </div>
    </div>
    

    the CSS file:

    .thumbnail {
        width: 128px;
        height: 128px;
    }
    
    .image {
        width: 100%;
        height: 100%;    
    }
    
    .image img {
        -webkit-transition: all .25s ease; /* Safari and Chrome */
        -moz-transition: all .25s ease; /* Firefox */
        -ms-transition: all .25s ease; /* IE 9 */
        -o-transition: all .25s ease; /* Opera */
        transition: all .25s ease;
        max-width: 100%;
        max-height: 100%;
    }
    
    .image:hover img {
        -webkit-transform:scale(1.05); /* Safari and Chrome */
        -moz-transform:scale(1.05); /* Firefox */
        -ms-transform:scale(1.05); /* IE 9 */
        -o-transform:scale(1.05); /* Opera */
         transform:scale(1.05);
    }
    
    .image:active img {
        -webkit-transform:scale(.95); /* Safari and Chrome */
        -moz-transform:scale(.95); /* Firefox */
        -ms-transform:scale(.95); /* IE 9 */
        -o-transform:scale(.95); /* Opera */
         transform:scale(.95);
    }
    

    Enjoy it!

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