content logo

React Buttons:

React Button with Animation on Click

The buttons in this post are all made using React. Click on any of these buttons to see an effect such as the button glow. Also, by placing the mouse cursor on each of the buttons, that button becomes a little more colorful. The title of these buttons is white and both buttons have an outer shadow.

#

Free React Button Code

#

HTML Button Hover Effect

#

Shining Effect Button Code

#

React Button Click Effect

<!-- This script got from frontendfreecode.com -->
<div id="root"></div><a style="font-size: 8pt; text-decoration: none" target="_blank" href="http://frontendfreecode.com">Free Frontend</a>
                                                                            
:root {
  background-color: #232323;
}
.btn-group {
  display: flex;
  flex-direction: row;
}
.btn-group .btn {
  color: white;
  position: relative;
  display: inline-flex;
  appearance: none;
  padding: 1em 4em;
  margin: auto;
  margin-left: 0.5rem;
  background: #e67a63;
  border-radius: 2px;
  border: solid thin #e2674d;
  box-shadow: 0.1em 0.15em 0.2em rgba(0, 0, 0, 0.4);
  transition: all 0.5s ease;
  overflow: hidden;
  cursor: pointer;
}
.btn-group .btn:hover {
  background: #df5537;
}
.btn-group .btn:active {
  border: solid thin #da4323;
}
.splash {
  position: absolute;
  display: block;
  background: rgba(158, 99, 195, 0.5);
  width: 10vw;
  height: 10vw;
  border-radius: 30%;
  transform: scale(0);
  animation: ripple 0.5s linear;
}
@keyframes ripple {
  to {
    opacity: 0;
    transform: scale(3.5);
  }
}
var root = document.querySelector("#root");
function App(props) {
  return /*#__PURE__*/(
    React.createElement(ButtonGroup, { buttons: props.buttons }));
}
function Button(props) {
  const [state, setState] = React.useState({ clicked: false });
  const rippleEffect = event => {
    console.log("Clicked");
    const posX = event.clientX - event.target.offsetLeft - 25,
    posY = event.clientY / event.target.offsetHeight - 20;
    setState({ clicked: !state.clicked, posX, posY });
    setTimeout(() => {
      setState({ clicked: false });
    }, 500);
  };
  return /*#__PURE__*/(
    React.createElement("div", null, /*#__PURE__*/
    React.createElement("button", { className: "btn", onClick: rippleEffect },
    props.label,
    state.clicked && /*#__PURE__*/
    React.createElement("span", { className: "splash", style: {
        top: state.posY + 'px',
        left: state.posX + 'px' } }))));
}
function ButtonGroup(props) {
  let btns = [],
  toRender = props.buttons;
  toRender.map(button => {
    btns.push( /*#__PURE__*/React.createElement(Button, { label: button.label }));
  });
  return /*#__PURE__*/(
    React.createElement("div", { className: "btn-group" },
    btns));
}
let renderButtons = [
{
  label: "Login" },
{
  label: "Register" }];
ReactDOM.render( /*#__PURE__*/React.createElement(App, { buttons: renderButtons }), root);
<script src='https://cdnjs.cloudflare.com/ajax/libs/react/16.12.0/umd/react.production.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js'></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- This script got from frontendfreecode.com -->

<script src='https://cdnjs.cloudflare.com/ajax/libs/react/16.12.0/umd/react.production.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js'></script>
<style>
:root {
  background-color: #232323;
}
.btn-group {
  display: flex;
  flex-direction: row;
}
.btn-group .btn {
  color: white;
  position: relative;
  display: inline-flex;
  appearance: none;
  padding: 1em 4em;
  margin: auto;
  margin-left: 0.5rem;
  background: #e67a63;
  border-radius: 2px;
  border: solid thin #e2674d;
  box-shadow: 0.1em 0.15em 0.2em rgba(0, 0, 0, 0.4);
  transition: all 0.5s ease;
  overflow: hidden;
  cursor: pointer;
}
.btn-group .btn:hover {
  background: #df5537;
}
.btn-group .btn:active {
  border: solid thin #da4323;
}
.splash {
  position: absolute;
  display: block;
  background: rgba(158, 99, 195, 0.5);
  width: 10vw;
  height: 10vw;
  border-radius: 30%;
  transform: scale(0);
  animation: ripple 0.5s linear;
}
@keyframes ripple {
  to {
    opacity: 0;
    transform: scale(3.5);
  }
}
</style>

</head>
<body>
<div id="root"></div><div id="bcl"><a style="font-size:8pt;text-decoration:none;" href="http://www.devanswer.com">Free Frontend</a></div>
<script>
var root = document.querySelector("#root");
function App(props) {
  return /*#__PURE__*/(
    React.createElement(ButtonGroup, { buttons: props.buttons }));
}
function Button(props) {
  const [state, setState] = React.useState({ clicked: false });
  const rippleEffect = event => {
    console.log("Clicked");
    const posX = event.clientX - event.target.offsetLeft - 25,
    posY = event.clientY / event.target.offsetHeight - 20;
    setState({ clicked: !state.clicked, posX, posY });
    setTimeout(() => {
      setState({ clicked: false });
    }, 500);
  };
  return /*#__PURE__*/(
    React.createElement("div", null, /*#__PURE__*/
    React.createElement("button", { className: "btn", onClick: rippleEffect },
    props.label,
    state.clicked && /*#__PURE__*/
    React.createElement("span", { className: "splash", style: {
        top: state.posY + 'px',
        left: state.posX + 'px' } }))));
}
function ButtonGroup(props) {
  let btns = [],
  toRender = props.buttons;
  toRender.map(button => {
    btns.push( /*#__PURE__*/React.createElement(Button, { label: button.label }));
  });
  return /*#__PURE__*/(
    React.createElement("div", { className: "btn-group" },
    btns));
}
let renderButtons = [
{
  label: "Login" },
{
  label: "Register" }];
ReactDOM.render( /*#__PURE__*/React.createElement(App, { buttons: renderButtons }), root);
</script>

</body>
</html>
Preview