Jump to the navigation menu

CSS, data attributes and feature flags

I recently used Drupal's Feature Toggle module to set a data attribute which enabled some new styling for buttons.

Firstly, within the theme's .theme file, I added this code:

/**
 * Implements hook_preprocess_html().
 */
function mytheme_preprocess_html(array &$variables): void {
  $variables['attributes']['data-use-new-button-styles'] = \Drupal::service('feature_toggle.feature_status')->getStatus('use_the_new_button_styling');
}

If the feature toggle is enabled, it adds a data-use-new-button-styles="" attribute to the body element.

If it is disabled, the attribute is not added, so I can write CSS that's applied when the data attribute is present:

[data-use-new-button-styles] .btn-primary {
  background-color: red;
}

In a Tailwind CSS project (this isn't), the same could be achiveable with a custom interaction state - similar to hover, focus and active. Something like new-button-styles:bg-red-500.

I like using feature flags and was happy to find a way to use them when adding this new CSS.

- Oliver

Was this interesting?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an certified Drupal Triple Expert with 18 years of experience, a Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.