There are some situations where to write a technical article, we need to draw attention of the reader of the reader. HTML code element, pre are designed to serve specific purposes. Sometime we need to highlight code with more colours than code than our good syntax highlighter plugin like Crayon Syntax Highlighter for WordPress can do. Here is a guide on nested highlighting in WordPress post with CSS and HTML5 samp element. From our examples readers will understand that such usage is really for few articles with extensive need of manual override. Hence we will suggest to load the CSS for the particular post via WordPress post editor Script input option to inject scripts – standard premium theme like StudioPress Genesis have such option to load the CSS for the particular post. Of course there are free WordPress themes and plugins to load the CSS for the particular post. Obviously adding CSS to theme’s style.css
always work.
Inline Nested Highlighting In WordPress With CSS & HTML5 samp
The HTML element tt
is absolute in HTML5. The tt
element was been in use for marking up computer output. Browsers automatically used browser’s default monotype font. For HTML 5 we can consider the samp element :
1 2 | https://www.w3.org/TR/html5/text-level-semantics.html#the-samp-element https://www.w3.org/TR/html5/obsolete.html |
If we use samp element, we will get exactly code
like font effect without any extra CSS. tt
is absolute in HTML5 and will return plain text. Modern web crawlers understand everything. To colorize as nested element, we need a set of CSS like this :
---
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <style> samp.match { background-color: #C0E0FF; } samp.string { background-color: #C0FFC0; } samp.code { white-space: nowrap; } .regexnest1 { color: #000000; background-color: #60F040; } .regexnest2 { color: #000000; background-color: #00C000; } .regexnest3 { color: #FFFFFF; background-color: #006000; } .regexplain { background-color: #FFE0C0; } .regexspecial { color: #000080; background-color: #80C0FF; } .regexccopen { color: #181000; background-color: #FFC040; font-weight: bold; } .regexccspecial { color: #181000; background-color: #F09000; } .regexccliteral { color: #302000; background-color: #FFC040; } .regexescaped { color: #202020; background-color: #C0C0C0; } .regexccrange { color: #302000; background-color: #F8A820; } .regexcomment { color: #0000FF; background-color: #FFE0C0; font-weight: bold; font-style: italic; } .regexerr { color: #FFFFFF; background-color: #FF0000; } .regexmeta { color: #300040; background-color: #C080FF; } .replaceplain { background-color: #FFF860; } </style> |
The above code is “stolen” from regular-expressions.info
website as they need to use hugely odd regex and our readers can see the examples of usage on that website. The above CSS has classes :
- regexnest1,
- regexnest2,
- regexnest3,
- regexplain,
- regexspecial,
- regexccopen,
- regexccspecial,
- regexccliteral,
- regexescaped,
- regexccrange,
- regexcomment,
- regexerr,
- ,
- replaceplain.
The HTML I used above is :
1 | <samp class="code"><span class="regexnest1">regexnest1</span></samp> |
samp
is explained above, class="code"
is used to use our theme’s existing code block specific CSS and span class="regexnest1"
used to pick up the desired CSS.
Examples Of Inline Nested Highlighting In WordPress With CSS & HTML5 samp
With HTML5 samp element :
(?<=text), (?<=text), \b\w+(?<!s)\b, \b\w*[^s\W]\b, (?<!ab{2,4}c{3,5}d)test
With HTML5 kbd instead of tt element :
(?<=text), (?<=text), \b\w+(?<!s)\b, \b\w*[^s\W]\b, (?<!ab{2,4}c{3,5}d)test
Of course the HTML are not exactly closest to easy :
This is first one :
(?<=text)
1 | <samp class="code"><span class="regexnest1">(?<=</span><span class="regexplain">text</span><span class="regexnest1">)</span></samp> |
This is second one :
(?<=text)
1 | <samp class="code"><span class="regexnest1">(?<=</span><span class="regexplain">text</span><span class="regexnest1">)</span></samp> |
This is third one :
\b\w+(?<!s)\b
1 | <samp class="code"><span class="regexspecial">\b</span><span class="regexspecial">\w</span><span class="regexspecial">+</span><span class="regexnest1">(?<!</span><span class="regexplain">s</span><span class="regexnest1">)</span><span class="regexspecial">\b</span></samp> |
This is forth one :
\b\w*[^s\W]\b
1 | <samp class="code"><span class="regexspecial">\b</span><span class="regexspecial">\w</span><span class="regexspecial">*</span><span class="regexccopen">[</span><span class="regexccspecial">^</span><span class="regexccliteral">s</span><span class="regexccspecial">\W</span><span class="regexccopen">]</span><span class="regexspecial">\b</span></samp> |
This is fifth one :
(?<!ab{2,4}c{3,5}d)test
1 | <samp class="code"><span class="regexnest1">(?<!</span><span class="regexplain">a</span><span class="regexplain">b</span><span class="regexspecial">{2,4}</span><span class="regexplain">c</span><span class="regexspecial">{3,5}</span><span class="regexplain">d</span><span class="regexnest1">)</span><span class="regexplain">test</span></samp> |
This is sixth one, notice samp class="match"
:
\b\w+(?<!s)\b
1 | <samp class="match"><span class="regexspecial">\b</span><span class="regexspecial">\w</span><span class="regexspecial">+</span><span class="regexnest1">(?<!</span><span class="regexplain">s</span><span class="regexnest1">)</span><span class="regexspecial">\b</span></samp> |
Advanced Inline Nested Highlighting In WordPress With Automatic Markup Detection
For marking the phrase style.css
we used backtick in WordPress Editor – a good guide to learn how use PHP snippet to convert special character wrap to wanted HTML block. Instead of back tick, if we use tilde to wrap in this fashion ~style.css~
, we can automatically add samp
element which can be added to theme’s functions.php
or our plugin to add snippets.