gpt4 book ai didi

css - 圆形按钮周围的条形动画

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:50 30 4
gpt4 key购买 nike

我正在尝试实现这样的事情,即当按下按钮时,按钮周围的栏应该是动画的。

这是我的按钮CSS

button {
border: none;
cursor: pointer;
color: white;
width: 60px;
height: 60px;
border-radius: 50%;
font-size: 22px;
box-shadow: 2px 2px 4px rgba(0, 0, 0, .4);
background: #2196F3;
}

button {
position: relative;
overflow: hidden;
}

button:after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 5px;
height: 5px;
background: rgba(255, 255, 255, .5);
opacity: 0;
border-radius: 100%;
transform: scale(1, 1) translate(-50%);
transform-origin: 50% 50%;
}

@keyframes ripple {
0% {
transform: scale(0, 0);
opacity: 1;
}
20% {
transform: scale(25, 25);
opacity: 1;
}
100% {
opacity: 0;
transform: scale(40, 40);
}
}

button:focus:not(:active)::after {
animation: ripple 1s ease-out;
}
<button>
+
</button>

https://jsfiddle.net/k1a3ha4c/2/

我无法理解 CSS3 中的逻辑如何在按钮周围创建加载栏。谁能帮忙?

最佳答案

您可以在元素之前添加一个伪元素,然后跟随 w3schools guide关于如何制作装载机。

我提供的示例创建了一个伪 ::before 元素,它有一个 1/4 圆形的绿色边框,当单击按钮时,将调用旋转动画,该元素会以缓入方式旋转元素-出效果。动画:自旋 1s cubic-bezier(0.46, 0.03, 0.52, 0.96) 1;

示例:

button {
border: none;
cursor: pointer;
color: white;
width: 60px;
height: 60px;
border-radius: 50%;
font-size: 22px;
box-shadow: 2px 2px 4px rgba(0, 0, 0, .4);
background: #2196F3;
outline: none;
}

button {
position: relative;
// overflow: hidden;
}

button:after {
content: '';
position: absolute;
width: 60px;
height: 60px;
top: -5px;
left: -5px;
transform-origin: 50% 50%;
border: 5px solid rgba(0, 0, 0, 0);
border-top: 5px solid #008744;
border-radius: 50%;
opacity: 0;
}

button:before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 5px;
height: 5px;
background: rgba(255, 255, 255, .5);
opacity: 0;
border-radius: 50%;
transform: scale(1, 1) translate(-50%);
transform-origin: 50% 50%;
}

@keyframes ripple {
0% {
transform: scale(0, 0);
opacity: 1;
}
20% {
transform: scale(15, 15);
opacity: 1;
}
100% {
transform: scale(20, 20);
opacity: 0;
}
}

@keyframes spin {
0% {
opacity: 1;
transform: rotate(0deg);
}
100% {
opacity: 1;
transform: rotate(360deg);
}
}

button:focus:not(:active)::before {
animation: ripple 1s ease-out;
}

button:focus:not(:active)::after {
animation: spin 1s cubic-bezier(0.46, 0.03, 0.52, 0.96) 1;
}
<button>
+
</button>

希望这对您有所帮助!

关于css - 圆形按钮周围的条形动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44477403/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com