Categories: CSSScriptWeb Design

Create Animated RGB Glow Buttons with Pure CSS – rgb-button.css

RGB Glow Button is a pure CSS library that creates an animated RGB glow border for buttons and links.

It provides smooth, customizable RGB animations that work across modern browsers while maintaining accessibility standards.

Features:

  • Pure CSS animation engine with no JavaScript dependencies.
  • Framework-agnostic design compatible with any HTML/CSS setup.
  • Over 50 customizable CSS variables for complete visual control.
  • Built-in accessibility support, including reduced motion preferences.
  • Hardware-accelerated animations optimized for 60fps performance.

How to use it:

1. Download the package and link the stylesheet in the <head> section of your HTML file.

<link rel="stylesheet" href="styles/rgb-button.css">

2. Add the rgb-button class to any <button> or <a> element.

<button class="rgb-button">Action Button</button>
<a class="rgb-button" href="#">CTA Link</a>

3. You can override the default styles directly in the CSS or with inline styles for one-off modifications.

  • Animation Controls: --rgb-speed controls the animation duration (default 20s), --rgb-size sets the gradient background size (default 400%), and --rgb-blur adjusts the glow intensity (default 5px).
  • Visual Styling: --rgb-gradient defines the animated colors, --rgb-background sets the main button color, --rgb-foreground controls text color, and --rgb-radius determines border radius.
  • Spacing and Layout: --rgb-padding-x and --rgb-padding-y control button dimensions, while --rgb-glow-gap sets the border thickness.
  • Interactive States: --rgb-hover-opacity defines hover transparency, and --rgb-active-transform controls the click animation.
  • Size Modifiers: Use rgb-button--sm for compact buttons or rgb-button--lg for prominent call-to-action elements.
  • Speed Controls: Apply rgb-button--super-fast (3s), rgb-button--fast (8s), or rgb-button--slow (30s) classes to control animation timing without custom CSS.
<button 
  class="rgb-button" 
  style="--rgb-speed: 10s; --rgb-blur: 15px; --rgb-radius: 20px;">
  Action Button
</button>
:root {
  /* Customizable properties */  --rgb-gradient: linear-gradient(
    45deg,
    #ff0000, #ff7300, #fffb00, #48ff00,
    #00ffd5, #002bff, #7a00ff, #ff00c8,
    #ff0000
  );
  --rgb-background: rgb(17, 17, 17);
  --rgb-after-background: rgb(34, 34, 34);
  --rgb-foreground: rgb(255, 255, 255);
  --rgb-radius: 10px;
  --rgb-padding-y: 0.6em;
  --rgb-padding-x: 2em;
  --rgb-speed: 20s;
  --rgb-size: 400%;
  --rgb-blur: 5px;
  --rgb-glow-gap: 2px;
  
  /* Animation properties */  --rgb-animation-name: glowing-rgb-button;
  --rgb-animation-duration: 20s;
  --rgb-animation-timing-function: linear;
  --rgb-animation-iteration-count: infinite;
  --rgb-animation-fill-mode: none;
  --rgb-animation-direction: normal;
  
  /* Positioning and layout */  --rgb-z-index: 0;
  --rgb-pseudo-z-index: -1;
  --rgb-position: relative;
  --rgb-pseudo-position: absolute;
  
  /* Background properties */  --rgb-background-repeat: no-repeat;
  --rgb-background-position-start: 0%;
  --rgb-background-position-middle: 100%;
  --rgb-background-position-end: 0%;
  --rgb-background-position-y: 50%;
  
  /* Dimensions */  --rgb-pseudo-width: 100%;
  --rgb-pseudo-height: 100%;
  --rgb-pseudo-top: 0;
  --rgb-pseudo-left: 0;
  
  /* Interactive states */  --rgb-hover-opacity: 0.9;
  --rgb-active-transform: translateY(1px);
  --rgb-transition-duration: 0.3s;
  --rgb-transition-timing: ease-in-out;
  --rgb-transition-property: opacity;
  
  /* Focus styles */  --rgb-focus-outline-width: 2px;
  --rgb-focus-outline-style: solid;
  --rgb-focus-outline-offset: 2px;
  
  /* Typography */  --rgb-line-height: 1.2;
  --rgb-text-decoration: none;
  --rgb-display: inline-block;
  --rgb-font-family: inherit;
  --rgb-font-size: inherit;
  --rgb-font-weight: inherit;
  
  /* Interaction */  --rgb-cursor: pointer;
  --rgb-user-select: none;
  --rgb-touch-action: manipulation;
  
  /* Border and outline */  --rgb-border: none;
  --rgb-outline: none;
  
  /* Speed modifier values */  --rgb-speed-super-fast: 3s;
  --rgb-speed-fast: 8s;
  --rgb-speed-slow: 30s;
  
  /* Size modifier values */  --rgb-sm-padding-y: 0.375em;
  --rgb-sm-padding-x: 1.5em;
  --rgb-sm-radius: 8px;
  --rgb-lg-padding-y: 0.75em;
  --rgb-lg-padding-x: 2.5em;
  --rgb-lg-radius: 12px;
}

4. Or create unique gradient effects by defining your own color sequence. The gradient should include at least five colors with the first and last colors matching to ensure smooth animation loops.

.custom-gradient-button {
  --rgb-gradient: linear-gradient(
    45deg,
    Color-1, Color-2, Color-3, Color-4, Color-5
  );
  --rgb-speed: 10s;
  --rgb-blur: 10px;
}

FAQs:

Q: Why isn’t the animation working after page refresh?
A: The most common cause involves system-level reduced motion settings. Windows users should check Settings → Accessibility → Visual effects → Animation effects and ensure it’s enabled. macOS users can verify System Preferences → Accessibility → Display → Reduce motion is disabled. The component respects these accessibility preferences by default.

Q: Can I use multiple gradient colors without affecting performance?
A: Yes, the CSS gradient engine handles multiple color stops efficiently. However, limiting gradients to 6-8 colors provides the best balance between visual appeal and animation smoothness across devices.

Q: How do I implement the button in React or Vue components?
A: Simply import the CSS file in your component or main stylesheet, then apply the class name.

Q: Can I animate multiple buttons with different speeds simultaneously?
A: Yes, each button instance maintains independent animation timing through CSS custom properties. You can have fast-animating primary buttons alongside slower secondary buttons without conflicts.

Q: How do I optimize performance for mobile devices?
A: The component uses CSS transforms and filters that leverage hardware acceleration automatically. For additional optimization, consider using the rgb-button--fast modifier on mobile devices to reduce animation duration.

The post Create Animated RGB Glow Buttons with Pure CSS – rgb-button.css appeared first on CSS Script.

rssfeeds-admin

Share
Published by
rssfeeds-admin

Recent Posts

Auburn Street improvements project start date delayed to March 23 in Rockford

The Auburn Street Improvements Project (Phase 1) will begin on March 23, and will include…

38 minutes ago

Cisco Firewall 0-day Vulnerability Exploited in the Wild to Deploy Interlock Ransomware

An active campaign by the Interlock ransomware group is exploiting a critical zero-day vulnerability (CVE-2026-20131)…

49 minutes ago

New iOS Exploit With Advanced iPhone Hacking Tools Attacking Users to Steal Personal Data

A sophisticated full-chain iOS exploit kit dubbed DarkSword, actively deployed by multiple commercial surveillance vendors and…

49 minutes ago

The High Cost of Slow Triage: How to Make Tier 1 the Fastest Layer in Your SOC

Why do so many SOCs still struggle to move quickly even with strong detection tools…

49 minutes ago

Winnebago County sheriff cleared of wrongdoing in Motorola radio deal, State’s Attorney says

The Winnebago County Attorney's Office found no wrongdoing by Sheriff Gary Caruana and Chief Deputy…

52 minutes ago

Tennessee Republican objects to checking public school kids’ immigration status

A bill requiring public schools to check the immigration status of all kids in grades…

1 hour ago

This website uses cookies.