Extra Attributes

Maizzle can automatically add attributes to HTML elements in your email templates.

This can be useful for:

  • adding default attributes based on environment or Template
  • not having to write required attributes all the time
  • automating email accessiblity

The extraAttributes key in your config defines which elements in your emails should receive which attributes with what values.

For example:

// config.js
module.exports = {
  extraAttributes: {
    div: {
      role: 'article'
    }
  }
}

Default attributes

By default, Maizzle makes your <table> accessible, resets its spacing, and ensures that an empty alt="" attribute is added to images that don't have it:

let attributes = {
  table: {
    cellpadding: 0,
    cellspacing: 0,
    role: 'presentation'
  },
  img: {
    alt: ''
  }
}

Disabling

You can turn this off by setting extraAttributes to false in your config:

module.exports = {
  extraAttributes: false
}

Selectors

Tag, class, id, and attribute selectors are supported:

extraAttributes: {
  div: {
    id: 'new'
  },
  '.test': {
    editable: true
  },
  '#test': {
    'data-foo': 'bar'
  },
  '[role]': {
    'aria-roledescription': 'slide'
  }
}

Multiple selectors

Add multiple attributes to multiple elements in one go:

const attributes = {
  'div, p': {
    class: 'test'
  },
  'div[role=alert], section.alert': {
    class: 'alert'
  }
}

Tailwind CSS note

Because Transformers process your HTML after CSS is compiled, you cannot use any Tailwind CSS classes here. That means any class from the compiled main.css.

You will see them added to the element's class="", but they won't exist in the <style> tag, so they won't work. Therefore, adding classes like this can only be useful if you need them at a later stage in your workflow, like in your ESP.