@xiee/utils
v1.14.24
Published
Miscellaneous tools and utilities to manipulate HTML pages
Readme
This repo contains miscellaneous lightweight tools and utilities written in
JavaScript. They are published as an NPM package
@xiee/utils. You can load them
via jsdelivr.com, e.g.,
<script src="https://cdn.jsdelivr.net/npm/@xiee/utils/js/faq.min.js" defer></script>
<link href="https://cdn.jsdelivr.net/npm/@xiee/utils/css/faq.min.css" rel="stylesheet">See the full documentation at https://yihui.org/en/2018/11/md-js-tricks/.
alt-title.js
Add the title attribute to <img> if the attribute does not exist. The value
of the attribute is taken from the alt attribute. It modifies
<img src="foo.png" alt="an image" />to
<img src="foo.png" alt="an image" title="an image" />Then the image will have a tooltip on mouseover.
center-img.js
Center <img>, <video>, and <object> on a page if they are the only child
of their parent element.
code-lang.js
Add the language- prefix to the class name of <code> inside <pre> when
appropriate, so that syntax highlighters such as prism.js can work.
copy-button.js
Add a copy button to any element (by default, <pre> code blocks) on a page.
See this post for details.
dl-fieldset.js
Convert definition lists <dl> to <fieldset>. See more information in this
post.
docco-classic.js
Find code blocks on a page and put them in the right column. Other elements will be placed in the left column.
external-link.js
If a link of <a> does not start with http:// or https://, add the
attribute target="_blank" to <a> so it opens in a new tab/window.
faq.js
Turn an ordered list on an HTML page into a collapsible FAQ list. Click on any
question to toggle the visibility of its answer. Or click on the button at the
top-right to expand or collapse all answers. Each FAQ item has an anchor (shown
as the # symbol at the end on mouseover) that provides the link to the
specific question.
Note that you will need to load faq.css accordingly. See a more detailed
introduction here.
fix-footnote.js
Add [ ] to footnote numbers and move the return symbols in footnotes.
fix-toc.js
Fix the table of contents generated by lower versions of Hugo.
fold-details.js
Move elements into <details> so that they can be folded. By default, code
blocks (<pre>) are folded. Other elements can also be folded via custom
options. See this post for more
information.
fold-output.js
Click on a code block of the class language-* to toggle the visibility of its
siblings on the page before the next language-* block. Click while holding the
Alt key to toggle siblings of all language-* blocks on the page.
fullwidth.js
Find <pre>, <table>, and TOC (with ID TableOfContents) elements and add
the fullwidth class to them if they are too wide, so they can be styled
differently (e.g., full bleed).
fuse-search.js
Perform client-side site searching via Fuse.js. See this post for an application to Hugo sites.
hash-notes.js
Convert HTML comments of the form <!--# comments --> to
<span class="hash-note">comments</span>. If such comments are found, the
document body will gain classes has-notes and hide-notes. You can use CSS to
style the notes or hide/show them as you wish.
heading-anchor.js
Add anchor links to all section headings (e.g., <h2>) that have nonempty id
attributes.
key-buttons.js
Find keyboard keys in <code></code> and convert the tag to <kbd></kbd>,
e.g., convert <code>Ctrl + C</code> to <kbd>Ctrl</kbd> + <kbd>C</kbd>.
With key-buttons.css, the keys will be styled as boxes with shadows like
buttons. You can learn more details in this
post.
load-highlight.js
Disable highlight.js's auto language detection, and then apply highlighting. This requires highlight.js to be loaded in advance.
math-code.js
Write LaTeX math expressions ($\alpha$) in <code></code> in HTML or a pair
of backticks in Markdown (which will be rendered to <code> in HTML), and this
script will remove the <code> tag, so that MathJax can recognize the math
expressions (by default, MathJax ignores math in <code>).
no-highlight.js
Add the nohighlight class to <code> in <pre> when it does not have a
class, so that highlight.js will not try to syntax highlight the code in it.
number-captions.js
Number figure and table captions.
number-sections.js
Find all section headings (h1 - h6) and number them.
ol-id.js
Add IDs of the form li-N to items in ordered lists, where N is the index of
a list item. This makes it possible to reference or locate a specific item on a
page by a hash in the URL. If you hold Alt and click on an item, you will get
the URL with the hash in the address bar of your browser.
render-katex.js
Simply run renderMathInElement(document.body) to render math expression using
KaTeX's auto-render extension.
right-quote.js
Right-align a <blockquote> footer if the footer is a <p> that starts with
the em-dash.
snap.js
Create HTML slides using the CSS Scroll Snap technique.
tabsets.js
Create tabsets from section headings and their content. See this post for documentation.
toc.js
Automatically build a table of contents (TOC) from all section headings.
toc-highlight.js
Add a class active to the TOC item (<a>) corresponding to the section
heading that is currently being scrolled into view.
