Syntax Highlighting using the CSS Custom Highlight API.
The code is highlighted without having to wrap a bunch of <span>
elements around each token, thanks to Prism's tokenizer and the CSS Custom Highlight API.
Install via npm
npm install syntax-highlight-element
Import as ES module
import 'syntax-highlight-element';
Or via CDN
<script type="module" src="https://cdn.jsdelivr.net/npm/syntax-highlight-element/+esm"></script>
<syntax-highlight language="js">
// ...
</syntax-highlight>
Make sure to load a theme e.g. syntax-highlight-element/themes/prettylights.css
.
Or via CDN
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/syntax-highlight-element/dist/themes/prettylights.min.css">
Currently there are only limited themes available/converted. You can always create your own theme. Contributions are also very welcome.
language
The code language. The default isplaintext
. Default suported languageshtml|css|js
.content-selector
A CSS selector to specify the content element. The default is the element itself.
/**
* @typedef Config
* @type {object}
* @property {string[]} [languages=['markup', 'css', 'javascript']] - Language grammars to highlight.
* @property {{ [key: string]: string[] }} languageTokens - Language specific token types.
*/
window.she = window.she || {};
/** @type {Config} */
window.she.config = {};
Full list of all languages supported by the prism tokenizer.
- Bramus Van Damme and his blog post where I first read about using the CSS Custom Highlight API for syntax highlighting.
- Prism's tokenizer.
Distributed under the MIT license. See LICENSE for details.