V4 Early Bird: save 25% on Annual, 30% on Lifetime, and get 2x site activations on every plan. Ends Oct 17.V4 Early Bird: up to 30% off + 2x sites · ends Oct 17. See plans →
Utility extension · Free

Elementor custom CSS, free: per-element CSS for Elementor 4 Atomic Elements

Add a CSS box to Headings, Buttons, Images and containers, type selector to target that one element, and give each device its own rules. Works on Elementor Free.

  • Free on Elementor Free
  • Per-breakpoint on/off and CSS
  • selector targets this element only
  • Script loads only on pages that use it

Animation Addons 4.3Updated

Demo variations

Six ways to use Custom CSS.

Ideas you can build today with Custom CSS, free in Animation Addons, on Elementor 4's own elements. The settings on each card are a good place to start.

01Agency and portfolio home pages

Gradient headline for a studio hero

A large two-line headline filled with an orange-to-violet gradient on a near-black hero.

Built with
Custom CSS on a Heading.
Start with
selector { background: linear-gradient(90deg,#ff6a3d,#7a5cff); -webkit-background-clip: text; background-clip: text; color: transparent; }
02Cafés, bakeries and restaurants with a menu grid

Swipeable menu cards on mobile only

Three columns of menu cards on desktop; one swipeable row on phones.

Built with
A Grid with Enable Custom CSS switched on at the Mobile breakpoint only.
Start with
selector { grid-auto-flow: column; grid-auto-columns: 80%; overflow-x: auto; scroll-snap-type: x mandatory; } selector > * { scroll-snap-align: start; }
03SaaS and fintech landing pages

Underline that draws in on hover

A text-style button whose underline grows from left to right when hovered.

Built with
Custom CSS on a Button.
Start with
selector { position: relative; } selector::after { content: ""; position: absolute; left: 0; bottom: -4px; height: 2px; width: 0; background: currentColor; transition: width .3s; } selector:hover::after { width: 100%; }
04Clinics, law firms and team pages

Colour portraits on card hover

Greyscale staff photos that turn full colour when their card is hovered.

Built with
Custom CSS on each card's Div Block.
Start with
selector img { filter: grayscale(1); transition: filter .4s; } selector:hover img { filter: none; }
05Subscription apps and course sellers

"Most popular" ribbon on a pricing card

The middle of three pricing cards carries a diagonal corner ribbon, with no extra element.

Built with
Custom CSS on the middle Div Block.
Start with
selector { position: relative; overflow: hidden; } selector::before { content: "Most popular"; position: absolute; top: 18px; right: -40px; transform: rotate(45deg); background: #1f7a5a; color: #fff; padding: 4px 48px; font-size: 12px; }
06

A logo marquee that stops for reduced motion

Client logos sliding left in a loop; for visitors who ask their device to reduce motion, the strip stands still.

Built with
Custom CSS on a Flexbox.
Start with
@keyframes slide { to { transform: translateX(-50%); } } selector { animation: slide 30s linear infinite; } @media (prefers-reduced-motion: reduce) { selector { animation: none; } }
Features

What you get with Custom CSS.

Every point below is a real control in the Custom CSS panel section or part of how it works. Nothing here needs custom code.

Target one element without hunting for IDs

Type selector and Animation Addons swaps it for this element's own attribute, so you never look up a class or ID, and a duplicated card carries its rule without styling its neighbours.

A different rule for every device

Enable Custom CSS and Custom CSS are both responsive. Switch the box on for Mobile only, or write one rule for Desktop and a lighter one for Tablet.

CSS the Style tab can't express

Pseudo-elements, @keyframes, descendant selectors such as selector:hover img, and media queries all work, because the field takes plain CSS.

Animated presets keep working

Some Animation Addons presets store keyframes and ::before layers in this extension's fields. Keeping Custom CSS switched on is what lets those presets play on the front end.

Step by step

How to add custom CSS in Elementor 4 (free)

Six steps from switching it on to publishing. The bold names are the exact labels you will see on screen.

Download free
  1. Install and activate Animation Addons for Elementor and open a page in the Atomic Editor.

  2. Select a Heading, Button, Image, SVG, Flexbox, Div Block or Grid.

  3. In the element's panel, open the Custom CSS section and switch on Enable Custom CSS.

  4. Write your rules in Custom CSS, starting with selector { … } to target this element.

  5. Use Elementor's device switcher to add or turn off rules for Tablet or Mobile.

  6. Check the canvas, then publish.

Who it's for

Who uses Custom CSS?

The people who get the most out of it, and what they use it for.

  • Freelancers and agencies

    Building on Elementor Free for clients who won't pay for Pro.

  • Designers moving from v3

    Who miss the per-widget CSS box.

  • Developers

    Who need pseudo-elements, keyframes or one-off mobile fixes.

FAQ

Questions about Custom CSS

How do I add custom CSS in Elementor without Pro?

Install the free Animation Addons for Elementor plugin, select an atomic element and open its Custom CSS section. Turn on Enable Custom CSS and write your rules, using selector to target that element. The Animation Addons Custom CSS extension works on Elementor Free, so you don't need Elementor Pro's Advanced plan for per-element CSS on Elementor 4.

What does "selector" mean in the Custom CSS box?

In the Animation Addons Custom CSS extension, selector stands for the element you are editing. On the page it is replaced with that element's own attribute, so selector { color: red; } styles only this Heading. You can also write selector:hover, selector::after or selector img to reach states, pseudo-elements and children of that one element.

Can I add different custom CSS for mobile and tablet?

Yes. In Animation Addons Custom CSS, both Enable Custom CSS and the Custom CSS field are responsive. Switch Elementor's device mode to Mobile and you can turn the box on for phones only, write different rules there, or turn it off on that device. You can also write ordinary @media queries inside the field.

Why don't I see the Custom CSS section on some elements?

Animation Addons Custom CSS is offered on Elementor's Heading, Paragraph, Button, Image, SVG, Flexbox, Div Block and Grid, and on most Animation Addons atomic widgets. It is not on Elementor's Divider, YouTube, Video, Tabs, Accordion or Background Video. Wrap that element in a Div Block and target it from there, for example selector iframe { … }.

Do I need a Pro licence, and does the CSS show in the editor?

No licence is needed. Animation Addons Custom CSS is part of the free plugin, so it works without Animation Addons Pro and without Elementor Pro. Your rules are applied on the Elementor editor canvas as well as on the published page, so you can check the result before you publish. The extension can be switched off in the plugin's Extensions settings.

Will custom CSS slow down my Elementor site?

Very little. Animation Addons only adds the Custom CSS script to pages where an element has the box switched on, and the rules are plain CSS. One trade-off: the script writes the rules after the page loads, so keep layout styles that must show at first paint in the Style tab or a Class.

Should I use Custom CSS or Elementor Classes?

Use Elementor's Classes and the Style tab for anything the panel can do, because those styles are shared and compiled with the page. Reach for Animation Addons Custom CSS when the panel can't express it: pseudo-elements, keyframes, child selectors, scroll-snap or one-element exceptions.

More answers in the FAQ · Documentation · Free vs Pro

Put a CSS box back on every element

Free on Elementor Free, targeted with one word, and different on every device.

  • Free on WordPress.orgNo Elementor Pro needed
  • Part of the free pluginSwitch it on in the Extensions screen
  • Animation Addons 4.3Updated October 2026