Onclick CSS button effect

130,402

Solution 1

You should apply the following styles:

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

This will give you the necessary effect, demo here.

Solution 2

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.

Solution 3

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!

Solution 4

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

enter image description here

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>
Share:
130,402

Related videos on Youtube

Kimberley Furson
Author by

Kimberley Furson

Just learning:)

Updated on July 09, 2022

Comments

  • Kimberley Furson
    Kimberley Furson almost 2 years

    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 pushing the whole bottom of the button. How would you proceed?

    <div class="one">
        <p><a id="button" href=#>Button</a></p>
    </div>
    

    Here's the CSS:

    #button {
        display: block;
        width:150px;
        margin:10px auto;
        padding:7px 13px;
        text-align:center;
        background:#a2bb33;
        font-size:20px;
        font-family: 'Arial', sans-serif;
        color:#ffffff;
        white-space: nowrap;
        box-sizing: border-box;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
    
    }
    
    #button:active {
        vertical-align: top;
        padding-top: 8px;
    }
    
    .one a {
        text-decoration: none;
    }
    
  • A.B. Carroll
    A.B. Carroll over 8 years
    This would be awesome, except for whatever reason in my particular setup, in Chrome, it suddenly antialiases the (8pt) text during transition and removes the antialias when done, which looks a bit strange. Really creative use of CSS otherwise!

Related