Home > OS >  CSS Hover-Animation to 'Still'?
CSS Hover-Animation to 'Still'?

Time:09-27

The following code lets my button glow in an animation on hover.

Now im trying to make it work without the need to hover over it.

Usually, i would go for .class:hover and try to edit something there. But a bit confused on this one, since there is only 1 line in that attribute.

Thanks for any help

.drts-bs-btn-outline-primary {
    width: 220px;
    height: 50px;
    border: none;
    outline: none;
    color: #fff;
    background: #111;
    cursor: pointer;
    position: relative;
    z-index: 0;
    border-radius: 10px;
}

.drts-bs-btn-outline-primary:before {
    content: '';
    background: linear-gradient(45deg, #ff0000, #ff7300, #fffb00, #48ff00, #00ffd5, #002bff, #7a00ff, #ff00c8, #ff0000);
    position: absolute;
    top: -2px;
    left:-2px;
    background-size: 400%;
    z-index: -1;
    filter: blur(5px);
    width: calc(100%   4px);
    height: calc(100%   4px);
    animation: glowing 20s linear infinite;
    opacity: 0;
    transition: opacity .3s ease-in-out;
    border-radius: 10px;
}

.drts-bs-btn-outline-primary:active {
    color: #000
}

.drts-bs-btn-outline-primary:active:after {
    background: transparent;
}

.drts-bs-btn-outline-primary:hover:before {
    opacity: 1;
}

.drts-bs-btn-outline-primary:after {
    z-index: -1;
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    background: #111;
    left: 0;
    top: 0;
    border-radius: 10px;
}

@keyframes glowing {
    0% { background-position: 0 0; }
    50% { background-position: 400% 0; }
    100% { background-position: 0 0; }
}

CodePudding user response:

The only reason it wasn't working was because the animation was set to opacity: 0; until it was hovered. With the code below you won't need the .drts-bs-btn-outline-primary:hover:before { opacity: 1; } css rule anymore

.drts-bs-btn-outline-primary {
    width: 220px;
    height: 50px;
    border: none;
    outline: none;
    color: #fff;
    background: #111;
    cursor: pointer;
    position: relative;
    z-index: 0;
    border-radius: 10px;
}

.drts-bs-btn-outline-primary:before {
    content: '';
    background: linear-gradient(45deg, #ff0000, #ff7300, #fffb00, #48ff00, #00ffd5, #002bff, #7a00ff, #ff00c8, #ff0000);
    position: absolute;
    top: -2px;
    left:-2px;
    background-size: 400%;
    z-index: -1;
    filter: blur(5px);
    width: calc(100%   4px);
    height: calc(100%   4px);
    animation: glowing 20s linear infinite;
    transition: opacity .3s ease-in-out;
    border-radius: 10px;
}

.drts-bs-btn-outline-primary:active {
    color: #000
}

.drts-bs-btn-outline-primary:active:after {
    background: transparent;
}

.drts-bs-btn-outline-primary:after {
    z-index: -1;
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    background: #111;
    left: 0;
    top: 0;
    border-radius: 10px;
}

@keyframes glowing {
    0% { background-position: 0 0; }
    50% { background-position: 400% 0; }
    100% { background-position: 0 0; }
}
<button >Click Me!</button>

CodePudding user response:

To make the button glow even when not hovering, you should move the contents of .drts-bs-btn-outline-primary:hover:before (note the :hover) into .drts-bs-btn-outline-primary:before (note the lack of :hover). In other words, you should delete the opacity: 0; line.

  • Related