0.1.0 • Published 8 months ago

ghmd.css v0.1.0

Weekly downloads
-
License
-
Repository
-
Last release
8 months ago

ghmd.css

🎨 Make your webpage look like a GitHub Markdown document

Installation

The recommended way to use this project is on an existing HTML page to apply a basic GitHub-like style to Markdown-like HTML content. This is similar to other classless CSS themes like MVP.css, Water.css, new.css, etc.

<link rel="stylesheet" href="https://unpkg.com/ghmd.css@1" />

You can also install this CSS theme as a dependency in your project using npm, pnpm, Yarn or your favorite Node.js package manager. Note that all the styles are global and will affect all elements on the page. You can mitigate this by using a shadow root if you do want to scope the CSS to a specific component.

npm install ghmd.css

Usage

Just write normal HTML! <h1>, <p>, <ul>, etc. all get styled to match the GitHub Markdown style.

<link ... />
<h1>Hello world!</h1>
<p>This is a list of things:</p>
<ul>
  <li>One</li>
  <li>Two</li>
  <li>Three</li>
</ul>

npm.io

If you're feeling adventurous, you can use a Markdown ➡ HTML converter like marked to dynamically show Markdown content on your page in the GitHub Markdown style.

<link rel="stylesheet" href="https://unpkg.com/ghmd.css@1" />
<script type="module">
  import { marked } from "https://esm.run/marked@9";
  const response = await fetch("https://example.com/README.md");
  const text = await response.text();
  const html = marked(text);
  document.body.innerHTML = html;
</script>

For more advanced usage, you can scope the globally applied CSS using the shadow DOM with a shadow root.

<div id="markdown">
  <h1>Hello world!</h1>
  <p>This is a list of things:</p>
  <ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
  </ul>
</div>
<script type="module">
  const div = document.getElementById("markdown");
  const shadow = div.attachShadow({ mode: "open" });
  const link = document.createElement("link");
  link.rel = "stylesheet";
  link.href = "https://unpkg.com/ghmd.css@1";
  shadow.append(link);
  shadow.append(...div.childNodes);
</script>

If you're using React, react-shadow-root is good abstraction over the manual JavaScript shown above. For Vue, you can use the vue-shadow-dom.

0.1.0

8 months ago