Bird
Raised Fist0
Tailwindmarkup~5 mins

Extending default theme values in Tailwind

Choose your learning style10 modes available
Introduction

Extending default theme values lets you add your own colors, fonts, or sizes without losing the original Tailwind styles.

You want to add a new brand color alongside Tailwind's default colors.
You need a custom font size that Tailwind doesn't include by default.
You want to add extra spacing options without removing the existing ones.
You want to keep Tailwind's default styles but add your own unique styles.
You want to customize your design while still using Tailwind's utility classes.
Syntax
Tailwind
module.exports = {
  theme: {
    extend: {
      propertyName: {
        key: 'value'
      }
    }
  }
}

extend is used inside the theme section to add new values.

You keep all default values and add your own by placing them inside extend.

Examples
Adds a new color named brandBlue without removing default colors.
Tailwind
module.exports = {
  theme: {
    extend: {
      colors: {
        brandBlue: '#1DA1F2'
      }
    }
  }
}
Adds a very small font size called xxs alongside default sizes.
Tailwind
module.exports = {
  theme: {
    extend: {
      fontSize: {
        'xxs': '0.65rem'
      }
    }
  }
}
Adds extra spacing sizes 72 and 84 for margin or padding.
Tailwind
module.exports = {
  theme: {
    extend: {
      spacing: {
        '72': '18rem',
        '84': '21rem'
      }
    }
  }
}
Sample Program

This example shows how to add a new color brandBlue and a tiny font size xxs. The heading uses the new color, and the paragraph uses the new font size.

Tailwind
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Tailwind Extend Theme Example</title>
  <script src="https://cdn.tailwindcss.com"></script>
  <script>
    tailwind.config = {
      theme: {
        extend: {
          colors: {
            brandBlue: '#1DA1F2'
          },
          fontSize: {
            xxs: '0.65rem'
          }
        }
      }
    }
  </script>
</head>
<body class="p-6">
  <h1 class="text-brandBlue text-3xl font-bold">Hello Brand Blue!</h1>
  <p class="text-xxs mt-2">This is extra small text using extended font size.</p>
</body>
</html>
OutputSuccess
Important Notes

Always use extend to add values so you don't remove Tailwind's defaults.

You can extend colors, spacing, font sizes, and many other theme properties.

Use the Tailwind CDN tailwind.config object for quick testing or update your tailwind.config.js file in projects.

Summary

Use extend inside theme to add new styles without losing defaults.

You can add colors, font sizes, spacing, and more this way.

This helps keep your design consistent and easy to update.

Practice

(1/5)
1. What is the main purpose of using extend inside the theme in Tailwind CSS?
easy
A. To remove unused styles from Tailwind CSS
B. To completely replace the default Tailwind styles
C. To add new styles without removing the default Tailwind styles
D. To disable Tailwind's default configuration

Solution

  1. Step 1: Understand the role of extend in Tailwind

    The extend key inside theme allows you to add new values while keeping the default ones intact.
  2. Step 2: Compare with replacing defaults

    If you don't use extend and directly define values, you replace the defaults, losing them.
  3. Final Answer:

    To add new styles without removing the default Tailwind styles -> Option C
  4. Quick Check:

    Extend = Add without losing defaults [OK]
Hint: Remember: extend adds, doesn't replace defaults [OK]
Common Mistakes:
  • Thinking extend replaces default styles
  • Confusing extend with purge or disable
  • Assuming extend removes unused styles
2. Which of the following is the correct syntax to add a new color named brandBlue with hex #1DA1F2 using extend in Tailwind config?
easy
A. "theme": { "extend": { "colors": { "brandBlue": "#1DA1F2" } } }
B. "extend": { "colors": { "brandBlue": "#1DA1F2" } }
C. "theme": { "colors": { "brandBlue": "#1DA1F2" } }
D. "colors": { "extend": { "brandBlue": "#1DA1F2" } }

Solution

  1. Step 1: Locate where to put extend

    The extend key must be inside the theme object to add new values.
  2. Step 2: Add new color inside extend.colors

    The new color name and value go inside colors nested under extend.
  3. Final Answer:

    "theme": { "extend": { "colors": { "brandBlue": "#1DA1F2" } } } -> Option A
  4. Quick Check:

    Extend inside theme, colors inside extend [OK]
Hint: Put extend inside theme, then add colors inside extend [OK]
Common Mistakes:
  • Placing extend outside theme
  • Adding colors directly inside theme without extend
  • Misplacing extend inside colors
3. Given this Tailwind config snippet, what will be the background color class for the new color?
{
  theme: {
    extend: {
      colors: {
        softGreen: '#a8d5ba'
      }
    }
  }
}

Which class applies the new color as background?
medium
A. bg-softgreen
B. bg-soft_green
C. bg-soft-green
D. bg-softGreen

Solution

  1. Step 1: Understand Tailwind class naming for custom colors

    Tailwind generates utility classes using the exact key name from the theme object as the class suffix, preserving case and format. softGreen (camelCase) becomes bg-softGreen.
  2. Step 2: Form the background color class

    Background color classes are bg- followed by the exact color key name.
  3. Final Answer:

    bg-softGreen -> Option D
  4. Quick Check:

    Exact key match: softGreen -> bg-softGreen [OK]
Hint: Theme keys match class suffixes exactly, case preserved [OK]
Common Mistakes:
  • Assuming Tailwind converts camelCase to lowercase
  • Adding hyphens between camelCase words
  • Using underscores in place of camelCase
4. Identify the error in this Tailwind config snippet that tries to add a new spacing value:
{
  theme: {
    extend: {
      spacing: 72: '18rem'
    }
  }
}
medium
A. Spacing key should be inside colors
B. Missing curly braces around spacing values
C. Colon used instead of comma between key and value
D. extend should be outside theme

Solution

  1. Step 1: Check syntax for spacing extension

    The spacing key must have an object with key-value pairs inside curly braces.
  2. Step 2: Identify missing braces

    Here, spacing: 72: '18rem' misses curly braces around { 72: '18rem' }.
  3. Final Answer:

    Missing curly braces around spacing values -> Option B
  4. Quick Check:

    Objects need braces: spacing: { 72: '18rem' } [OK]
Hint: Use braces {} for objects inside extend keys [OK]
Common Mistakes:
  • Forgetting braces around nested objects
  • Putting spacing inside colors by mistake
  • Placing extend outside theme
5. You want to add a new font size called xxl with value 2.5rem but keep all default font sizes. Which config snippet correctly extends the fontSize theme without losing defaults?
hard
A. { theme: { extend: { fontSize: { xxl: '2.5rem' } } } }
B. { theme: { fontSize: { xxl: '2.5rem' } } }
C. { extend: { fontSize: { xxl: '2.5rem' } } }
D. { fontSize: { xxl: '2.5rem' } }

Solution

  1. Step 1: Understand how to keep default font sizes

    To keep defaults, new values must be added inside extend under theme.
  2. Step 2: Check each option's structure

    { theme: { extend: { fontSize: { xxl: '2.5rem' } } } } correctly places fontSize inside extend inside theme. Others replace or misplace keys.
  3. Final Answer:

    { theme: { extend: { fontSize: { xxl: '2.5rem' } } } } -> Option A
  4. Quick Check:

    Extend inside theme keeps defaults while adding new values [OK]
Hint: Always put new values inside extend under theme [OK]
Common Mistakes:
  • Replacing fontSize directly, losing defaults
  • Placing extend outside theme
  • Omitting extend and overwriting defaults
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard