Making custom CSS changes on your site

:bookmark: This guide explains how to make CSS changes on your Discourse site, including an introduction to CSS, where to add CSS in Discourse, and how to find the right selectors using browser inspection tools.

:person_raising_hand: Required user level: Administrator

Summary

This guide covers:

  1. A brief introduction to CSS and key concepts
  2. How to add CSS to your Discourse site using theme components
  3. Using browser inspection tools to find the right CSS selectors

Understanding CSS basics

CSS stands for Cascading Style Sheets. Here are three key concepts to understand:

  1. Structure: A CSS rule consists of a selector, property, and value.
p {
  color: red;
}
  1. Cascade: The last rule applied takes precedence. For example:
p {
  color: red;
}
p {
  color: green;
}

The paragraphs will be green because it’s the last rule applied.

  1. Specificity: More specific rules override less specific ones. For example:
div p {
  color: green;
}
p {
  color: red;
}

Paragraphs inside divs will remain green because div p is more specific than p.

Adding CSS to your Discourse site

To add CSS to your Discourse site:

  1. Go to Appearance > Themes & components from the Admin navigation sidebar and click the Components tab. (Or follow this url for your site: https://yoursite.com/admin/config/customize/components)

  2. Click Install then :heavy_plus_sign: Create New

  3. Name your theme component and click Create

  4. Choose the theme(s) where the component will be applied and click the green checkmark icon to save your selection

:warning: If you have multiple user-selectable themes, make sure to add your theme components to all relevant themes.

  1. Click Edit Code

  2. Add your CSS to the CSS tab

  3. Click “Save” to apply your changes.

Finding the right CSS selectors

Use browser inspection tools to find the correct CSS selectors:

  1. Right-click on the element you want to modify.

  2. Select “Inspect” from the context menu.

  3. In the developer tools panel, locate the element selectors.

  4. Click the respective selectors and add your CSS rule.

  5. Copy the rule, paste it into your theme component’s CSS section and remove conflicting rules.

For more specific selectors, you may need to copy the selector used in Discourse’s existing styles and modify it in your theme component.

Here’s a video demonstrating the above steps:

Troubleshooting

If your changes aren’t applied, confirm that:

  • The theme component is enabled on all relevant themes
  • Your CSS rule is specific enough to override existing styles

Additional resources

39 Likes
Policy notice: no basic HTML / CSS questions please
How can hide the 'Latest', 'Top', 'Badges' and 'Categories' in the hamburger menu?
Anyway to style discourse topic title? ( IE, red, bold, highlight, anything. )
Remove background color change after page loading
How to make pinned items have less text underneath them
Notification color: light blue
Customising Login Page
How to disable all alert banners in discourse
Disable bio, location and profile picture
Prevent users from changing their Full Names
Is it possible to change vis CSS the Category Moderator shield?
Line under avatar?
Custom CSS/HTML in non-default theme (without component)
Advanced Header Search
Edit or Disable "community" in sidebar menu
How do I change text color in my Header?
Customize posts' contents with your own styles
Toolbar under site header per category
How to hide 0 votes?
Change Default Badge Colors (Bronze, Silver, Gold)
🌐 www theme
How to change search banner headline font size?
Cloudfront cdn with discourse?
How to reduce the size of category logo image
Can I make a custom button with CSS and HTML?
Applying Scroll Bar (Horizontal & Vertical) to Code Snippets
Hide suspension status
How can I hide the add button from sidebar
Forum homepage, how to make full screen?
Customizing FAQs and Guidelines
Switching the discourse color scheme: Changing Red Hues in CSS
Selected Quote Background Color
How can i disable categories on home page?
How to remove bottom bar from all topics
How to change layout of login screen
Can you change the color of customizable text?
Policy notice: no basic HTML / CSS questions please
How to resize 'Modern Category + Group Boxes' thumbnail via CSS
Category List with Banners
Customize Login pop-up box?
Search Banner image cuts off on smaller screens
"Reader Mode" theme component feedback
How to change the buttons' colors on hover?
How to remove Tos and privacy from ui?
How to add separator lines to the Welcome Banner sections?
Understanding link click counters
Watching category mandatory
Show Only Categories on Mobile View
Change URL or remove Powered by Discourse
Wishlist: visual cue for "user got a badge for this post"
Remove "pinned" button at bottom of topic
How to style category boxes?
vBulletin Emojis
Can We Represent Our Categories Like This on a Discourse Hosted Community
How to Edit the Menu Design and User Profile Design
Rounded login buttons
How can I make the home page similar to this one?
How do I add CSS?
Show sidebar to anonymous user + Welcome area in central theme
Remove search from the header
Replies and Views Orange Color, help!
Differentiate Admin and Moderator Shield Icons
Configuring the default sidebar for your users
How to use CSS for versatile-banner
Turn off the “views” on topic
CSS edits not being applied on mobile
How to make login and registration pages look like this?
Theme Identification
How to customize the composer toolbar?
Which path or file handles the custom template CSS?
Top contributors sidebar Backgound
Homepage Feature
Which is Better? Discourse or Flarum?
Is there a way to link replies after they are posted?
Customize User Cards
Change hover background color for nav class buttons
Allow “Name" field to be disabled in registration dialog
How can discourse administrators turn off personal messages
How to change/remove icon on login screen?
Easy Responsive Footer
Versatile Banner
Versatile Banner
Howto add a GAP between Categories
How can I add a menu item
Can't remove topic footer buttons on iOS
Discourse Docs
Support for Umami analytic
Hiding empty votes via plugin options
New default nav style and simplified color scheme
How can we either hide or grey out the upload icon in the Edit window? We have uploading disabled
Can the user avatars on the website and the content page of the post be hidden?
Removing category descriptions in main page, but retain them in individual category pages?
How to disable title changes for all users on Discourse?
Beginner's guide to using Discourse Themes
Trying to re-align an element of a theme and just wondering what it's called
Selected Quote Background Color
Differentiate contents from the topic list rows using different colors
Adjusting default composer height
Removing options from user activity action list
Understanding and managing post notices
Understanding and managing post notices
Is there a way to remove the pop-ups when making a new topic?
Looking for the perfect theme
Default category heading not hidden when category banner is used
Adding a table to your post using markdown
Search section like on Reddit?
Search section like on Reddit?
How to hide a button (SVG icon) if user is logged in?
Change the headings of preferences settings

Could this be made a wiki? The info under the heading Where Do I Add My CSS? needs updating, because there is no more Edit CSS/HTML button if you installed an existing theme — which is likely now if someone chose a theme through the newer Setup Wizard. Now we just use theme components that will be added to existing themes.

https://meta.discourse.org/t/make-css-changes-on-your-site/168101#where-do-i-add-my-css-5

I can update it once it’s made into a wiki.

10 Likes

Ok this is done now :+1:

5 Likes