Creative Button Styles
antd bnutton
https://code.juejin.cn/pen/7112314290681413662
阴影按钮
.btn {
color: inherit;
cursor: pointer;
display: inline-block;
text-transform: uppercase;
letter-spacing: 1px;
font-weight: 700;
position: relative;
box-shadow: rgb(218, 150, 34) 0px 5px;
font-size: 20px;
height: 50px;
width: 220px;
line-height: 50px;
-webkit-tap-highlight-color: transparent;
border-width: initial;
border-style: none;
border-color: initial;
border-image: initial;
margin: 10px 30px;
outline: 0px;
background: rgb(252, 173, 38);
border-radius: 7px;
color: #fff;
}
<button class="btn">按钮</button>
鼠标光标渐变跟踪
<button class="mouse-cursor-gradient-tracking">
<span>Hover me</span>
</button>
.mouse-cursor-gradient-tracking {
position: relative;
background: #7983ff;
padding: 0.5rem 1rem;
font-size: 1.2rem;
border: none;
color: white;
cursor: pointer;
outline: none;
overflow: hidden;
}
.mouse-cursor-gradient-tracking span {
position: relative;
}
.mouse-cursor-gradient-tracking::before {
--size: 0;
content: '';
position: absolute;
left: var(--x);
top: var(--y);
width: var(--size);
height: var(--size);
background: radial-gradient(circle closest-side, pink, transparent);
transform: translate(-50%, -50%);
transition: width 0.2s ease, height 0.2s ease;
}
.mouse-cursor-gradient-tracking:hover::before {
--size: 200px;
}
var btn = document.querySelector('.mouse-cursor-gradient-tracking')
btn.onmousemove = function(e) {
var x = e.pageX - btn.offsetLeft
var y = e.pageY - btn.offsetTop
btn.style.setProperty('--x', x + 'px')
btn.style.setProperty('--y', y + 'px')
}
注意!
如果元素的父级具有定位上下文(position: relative
),您还需要减去它的偏移量。
var x = e.pageX - btn.offsetLeft - btn.offsetParent.offsetLeft
var y = e.pageY - btn.offsetTop - btn.offsetParent.offsetTop
气泡动画按钮
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>按钮点击气泡效果-jq22.com</title>
<script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
<style>
body {
font-size:16px;
font-family:'Helvetica','Arial',sans-serif;
text-align:center;
background-color:#f8faff;
}
.bubbly-button {
font-family:'Helvetica','Arial',sans-serif;
display:inline-block;
font-size:1em;
padding:1em 2em;
margin-top:100px;
margin-bottom:60px;
-webkit-appearance:none;
appearance:none;
background-color:#ff3de8;
color:#fff;
border-radius:4px;
border:none;
cursor:pointer;
position:relative;
transition:transform ease-in 0.1s,box-shadow ease-in 0.25s;
box-shadow:0 2px 15px rgba(255,0,251,0.5);
}
.bubbly-button:focus {
outline:0;
}
.bubbly-button:before,.bubbly-button:after {
position:absolute;
content:'';
display:block;
width:140%;
height:100%;
left:-20%;
z-index:-1000;
transition:all ease-in-out 0.5s;
background-repeat:no-repeat;
}
.bubbly-button:before {
display:none;
top:-75%;
background-image:radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,transparent 20%,#ff0081 20%,transparent 30%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,transparent 10%,#ff0081 15%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%);
background-size:10% 10%,20% 20%,15% 15%,20% 20%,18% 18%,10% 10%,15% 15%,10% 10%,18% 18%;
}
.bubbly-button:after {
display:none;
bottom:-75%;
background-image:radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,transparent 10%,#ff0081 15%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%),radial-gradient(circle,#ff0081 20%,transparent 20%);
background-size:15% 15%,20% 20%,18% 18%,20% 20%,15% 15%,10% 10%,20% 20%;
}
.bubbly-button:active {
transform:scale(0.9);
background-color:#e60074;
box-shadow:0 2px 25px rgba(255,0,130,0.2);
}
.bubbly-button.animate:before {
display:block;
animation:topBubbles ease-in-out 0.75s forwards;
}
.bubbly-button.animate:after {
display:block;
animation:bottomBubbles ease-in-out 0.75s forwards;
}
@keyframes topBubbles {
0% {
background-position:5% 90%,10% 90%,10% 90%,15% 90%,25% 90%,25% 90%,40% 90%,55% 90%,70% 90%;
}
50% {
background-position:0% 80%,0% 20%,10% 40%,20% 0%,30% 30%,22% 50%,50% 50%,65% 20%,90% 30%;
}
100% {
background-position:0% 70%,0% 10%,10% 30%,20% -10%,30% 20%,22% 40%,50% 40%,65% 10%,90% 20%;
background-size:0% 0%,0% 0%,0% 0%,0% 0%,0% 0%,0% 0%;
}
}@keyframes bottomBubbles {
0% {
background-position:10% -10%,30% 10%,55% -10%,70% -10%,85% -10%,70% -10%,70% 0%;
}
50% {
background-position:0% 80%,20% 80%,45% 60%,60% 100%,75% 70%,95% 60%,105% 0%;
}
100% {
background-position:0% 90%,20% 90%,45% 70%,60% 110%,75% 80%,95% 70%,110% 10%;
background-size:0% 0%,0% 0%,0% 0%,0% 0%,0% 0%,0% 0%;
}
}</style>
</head>
<body>
<button class="bubbly-button">点击气泡动画</button>
<script>
var animateButton = function(e) {
e.preventDefault;
// reset animation 复位动画
e.target.classList.remove('animate');
e.target.classList.add('animate');
setTimeout(function() {
e.target.classList.remove('animate');
}, 700);
};
var btn = document.getElementsByClassName("bubbly-button");
for (var i = 0; i < btn.length; i++) {
btn[i].addEventListener('click', animateButton, false);
}
</script>
</body>
</html>
霓虹按钮
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Poppins", sans-serif;
}
html,
body {
display: grid;
height: 100%;
place-items: center;
background: #000;
overflow: hidden;
}
button {
position: relative;
height: 60px;
width: 200px;
margin: 0 35px;
border-radius: 50px;
border: none;
outline: none;
background: #111;
color: #fff;
font-size: 20px;
letter-spacing: 2px;
text-transform: uppercase;
cursor: pointer
}
button:first-child:hover {
background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4);
background-size: 400%;
}
button:last-child:hover {
background: linear-gradient(90deg, #fa7199, #f5ce62, #e43603, #fa7199);
background-size: 400%;
}
button:first-child:before,
button:last-child:before {
content: '';
position: absolute;
background: inherit;
top: -5px;
right: -5px;
bottom: -5px;
left: -5px;
border-radius: 50px;
filter: blur(20px);
opacity: 0;
transition: opacity 0.5s;
}
button:first-child:hover:before,
button:last-child:hover:before {
opacity: 1;
z-index: -1;
}
button:hover {
z-index: 1;
animation: glow 8s linear infinite;
}
@keyframes glow {
0% {
background-position: 0%;
}
100% {
background-position: 400%;
}
}
</style>
</head>
<body>
<div class="buttons">
<button>Button</button>
<button>Button</button>
</div>
</body>
</html>