content logo

React Buttons:

React Button with Sliding Effect on Hover

In this post, we have prepared buttons using React. These buttons have a hover effect. The color of these buttons is blue. By placing the mouse cursor on the first button, that button becomes more colorful from the corners to the center and as a slide. The second button also makes the button more colorful from one corner to the other.

#

HTML Animating React Button

#

Javascript React Button

#

React Sliding Animation

#

React Button Hover Effect

<!-- This script got from frontendfreecode.com -->
<div id="app"></div><a style="font-size: 8pt; text-decoration: none" target="_blank" href="http://frontendfreecode.com">Free Frontend</a>
                                                                            
html, body {
	height: 100%;
}
body {
	background: #333;
	display: flex;
	justify-content: center;
	align-items: center;
	font-size: 16px;
}
.container {
	display: flex;
	justify-content: space-around;
	flex-wrap: wrap;
	flex-direction: row;
	width: 100%;
}
*:before, *:after {
	z-index: 1;
}
.button {
	position: relative;
	display: block;
	overflow: hidden;
	max-width: 10em;
	border-radius: 50px;
	padding: 1em 2em;
	margin: 2em;
	border: 0;
	font-family: "Raleway", sans-serif;
	text-transform: uppercase;
	letter-spacing: 2px;
	text-align: center;
	width: 100%;
	height: 3em;
}
.button__text {
	z-index: 2;
	position: relative;
	display: block;
	transition: transform 1s;
}
.button--blue {
	color: #fff;
	background-image: linear-gradient(-135deg, #2D76D1 0%, #3994CE 52%, #2EA4A8 100%);
}
.button--diagonal:before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, 0.44);
	transform: translateX(100%);
	box-sizing: content-box;
	transition: 0.7s ease-in-out;
	-webkit-clip-path: polygon(100% 0, 0 0, 100% 100%);
	clip-path: polygon(100% 0, 0 0, 100% 100%);
}
.button--diagonal:after {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	box-sizing: border-box;
	border: 1px solid transparent;
	background-color: rgba(0, 0, 0, 0.44);
	transform: translateX(-100%);
	transition: 0.7s ease-in-out;
	-webkit-clip-path: polygon(0 100%, 0 0, 100% 100%);
	clip-path: polygon(0 100%, 0 0, 100% 100%);
}
.button--diagonal:hover .button__text {
	transform: scale(1.09);
}
.button--diagonal:hover:before, .button--diagonal:hover:after {
	transform: translateX(0);
}
.button--swipe:before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	bottom: 0;
	width: 100%;
	background-color: rgba(0, 0, 0, 0.44);
	box-sizing: border-box;
	border-radius: 50px;
	transform: translate(-100%, 0) rotate(10deg);
	transform-origin: top left;
	transition: 0.2s transform ease-out;
	will-change: transform;
}
.button--swipe:hover .button__text {
	transform: scale(1.09);
}
.button--swipe:hover:before, .button--swipe:hover:after {
	transform: translate(0);
}
class App extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement(Container, null));
  }}
class Container extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement("div", { className: "container" }, /*#__PURE__*/
      React.createElement(Button1, { value: 'upload' }), /*#__PURE__*/
      React.createElement(Button2, { value: 'upload' })));
  }}
class Button1 extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement("button", { className: "button button--blue button--diagonal" }, /*#__PURE__*/
      React.createElement("span", { className: "button__text" }, this.props.value)));
  }}
class Button2 extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement("button", { className: "button button--blue button--swipe" }, /*#__PURE__*/
      React.createElement("span", { className: "button__text" }, this.props.value)));
  }}
ReactDOM.render( /*#__PURE__*/React.createElement(App, null), document.getElementById('app'));
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Raleway:800'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.min.js'></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- This script got from frontendfreecode.com -->

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Raleway:800'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.min.js'></script>
<style>
html, body {
	height: 100%;
}
body {
	background: #333;
	display: flex;
	justify-content: center;
	align-items: center;
	font-size: 16px;
}
.container {
	display: flex;
	justify-content: space-around;
	flex-wrap: wrap;
	flex-direction: row;
	width: 100%;
}
*:before, *:after {
	z-index: 1;
}
.button {
	position: relative;
	display: block;
	overflow: hidden;
	max-width: 10em;
	border-radius: 50px;
	padding: 1em 2em;
	margin: 2em;
	border: 0;
	font-family: "Raleway", sans-serif;
	text-transform: uppercase;
	letter-spacing: 2px;
	text-align: center;
	width: 100%;
	height: 3em;
}
.button__text {
	z-index: 2;
	position: relative;
	display: block;
	transition: transform 1s;
}
.button--blue {
	color: #fff;
	background-image: linear-gradient(-135deg, #2D76D1 0%, #3994CE 52%, #2EA4A8 100%);
}
.button--diagonal:before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, 0.44);
	transform: translateX(100%);
	box-sizing: content-box;
	transition: 0.7s ease-in-out;
	-webkit-clip-path: polygon(100% 0, 0 0, 100% 100%);
	clip-path: polygon(100% 0, 0 0, 100% 100%);
}
.button--diagonal:after {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 100%;
	box-sizing: border-box;
	border: 1px solid transparent;
	background-color: rgba(0, 0, 0, 0.44);
	transform: translateX(-100%);
	transition: 0.7s ease-in-out;
	-webkit-clip-path: polygon(0 100%, 0 0, 100% 100%);
	clip-path: polygon(0 100%, 0 0, 100% 100%);
}
.button--diagonal:hover .button__text {
	transform: scale(1.09);
}
.button--diagonal:hover:before, .button--diagonal:hover:after {
	transform: translateX(0);
}
.button--swipe:before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	bottom: 0;
	width: 100%;
	background-color: rgba(0, 0, 0, 0.44);
	box-sizing: border-box;
	border-radius: 50px;
	transform: translate(-100%, 0) rotate(10deg);
	transform-origin: top left;
	transition: 0.2s transform ease-out;
	will-change: transform;
}
.button--swipe:hover .button__text {
	transform: scale(1.09);
}
.button--swipe:hover:before, .button--swipe:hover:after {
	transform: translate(0);
}
</style>

</head>
<body>
<div id="app"></div><div id="bcl"><a style="font-size:8pt;text-decoration:none;" href="http://www.devanswer.com">Free Frontend</a></div>
<script>
class App extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement(Container, null));
  }}
class Container extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement("div", { className: "container" }, /*#__PURE__*/
      React.createElement(Button1, { value: 'upload' }), /*#__PURE__*/
      React.createElement(Button2, { value: 'upload' })));
  }}
class Button1 extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement("button", { className: "button button--blue button--diagonal" }, /*#__PURE__*/
      React.createElement("span", { className: "button__text" }, this.props.value)));
  }}
class Button2 extends React.Component {
  render() {
    return /*#__PURE__*/(
      React.createElement("button", { className: "button button--blue button--swipe" }, /*#__PURE__*/
      React.createElement("span", { className: "button__text" }, this.props.value)));
  }}
ReactDOM.render( /*#__PURE__*/React.createElement(App, null), document.getElementById('app'));
</script>

</body>
</html>
Preview