Skip to content

Instantly share code, notes, and snippets.

@gavinmcfarland
Last active March 23, 2020 18:23
Show Gist options
  • Select an option

  • Save gavinmcfarland/2d074c04442b55eb8209a8e831f00e6b to your computer and use it in GitHub Desktop.

Select an option

Save gavinmcfarland/2d074c04442b55eb8209a8e831f00e6b to your computer and use it in GitHub Desktop.
Leading Trim Toggle

Leading Trim Toggle

Below is a CSS snippet you can use to turn leading trimming on and off per element. Otherwise known as line-height crop or text crop.

/* leading-trim.css */

* {
  --line-height: 1.5;
  --cap-height: 0.75;
  --leading-trim-over-adjustment: 0em;
  --leading-trim-under-adjustment: 0em;

  --unset: unset;
  --leading-trim: var(--unset);
  --leading-trim-over: var(--unset);
  --leading-trim-under: var(--unset);
}

::before, ::after {
  display: block;
}

::before {
  content: var(--leading-trim, var(--leading-trim-over, unset));
  margin-bottom: calc((var(--cap-height) - var(--line-height, 1)) * 0.5em - var(--leading-trim-over-adjustment));
}

::after {
  content: var(--leading-trim, var(--leading-trim-under, unset));
  margin-top: calc((var(--cap-height) - var(--line-height, 1)) * 0.5em - var(--leading-trim-under-adjustment));
}

To crop an element just apply --leading-trim: '', --leading-trim-over: '' or --leading-trim-under: ''.

For example:

.button {
  --leading-trim: '';
}

Each font and browser works slightly differently so this is not perfect, but it gives a good result. You can adjust the cap-height depending on the character height for a specicic font. View a demo of it in action.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment