项目作者: PaulieScanlon

项目描述 :
A Gatsby remark plugin that creates sticky header tables for markdown 🧲
高级语言: JavaScript
项目地址: git://github.com/PaulieScanlon/gatsby-remark-sticky-table.git
创建时间: 2019-12-04T13:28:07Z
项目社区:https://github.com/PaulieScanlon/gatsby-remark-sticky-table

开源协议:MIT License

下载



gatsby-remark-sticky-table gif image



npm (scoped)

npm

NPM

gatsby-remark-sticky-table

gatsby-remark-sticky-table is a plugin that creates sticky header tables from markdown.

By taking advantage of the remark Abstract Syntax Tree (AST) this plugin grabs all references to the HTML <th> element and applies an inline css style to make it position: sticky

Motivation
Tables are tricky, they’re not really mobile first and more often than not they don’t look great.

This plugin aims to wrap all <table> elements with <div> containers to help manage heights and overflows, it also modifies the default <th> as mentioned above. The rest of the styles are up to you!

If you’re using gatsby-remark-sticky-table in your project i’d love to hear from you @pauliescanlon

👁️ Preview

🚀 Getting started

Install

  1. npm install @pauliescanlon/gatsby-remark-sticky-table

Setup

Add gatsby-transformer-remark to your gatsby-config.js then add @pauliescanlon/gatsby-remark-sticky-table as a plugin of that 😅

  1. module.exports = {
  2. ...
  3. plugins: [
  4. {
  5. resolve: `gatsby-transformer-remark`,
  6. options: {
  7. plugins: [`@pauliescanlon/gatsby-remark-sticky-table`],
  8. },
  9. },
  10. ],
  11. }

Options

Option Type Reqiured Default Description
height number no null height of remark-sticky-table
backgroundColor string no null background color of remark-sticky-table-th
  1. ...
  2. plugins: [
  3. {
  4. resolve: `@pauliescanlon/gatsby-remark-sticky-table`,
  5. options: {
  6. height: 250,
  7. backgroundColor: "#ffffff",
  8. },
  9. },
  10. ]

✨ Styling

This plugin ships with a minimal amount of styles that are applied inline but these are purely to position the <th> which creates the sticky header. The more visual styles are up to you.

You might not need many styles but you will no doubt at least need a height on remark-sticky-table and a background-color on remark-sticky-table-th

A quick way to achieve this is to use the plugin options but probably a better way will be to add this and other styles using your css method of choice.

For convenience each element has been given a class name these are:

Element Class name Description
div remark-sticky-table The outer div that wraps everything and has a height
div remark-sticky-table-wrapper An inner div with overflow: auto
table remark-sticky-table-table un-styled HTML <table>
thead remark-sticky-table-thead un-styled HTML <thead>
tr remark-sticky-table-tr un-styled HTML <tr>
th remark-sticky-table-th HTML <th> with position: sticky inline style
tbody remark-sticky-table-tbody un-styled HTML <tbody>
td remark-sticky-table-td un-styled HTML <td>

💅 Css

Here’s some css to get you started

  1. .remark-sticky-table {
  2. border-radius: 2px;
  3. box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.1);
  4. height: 300px;
  5. margin: 48px 0px;
  6. }
  7. .remark-sticky-table-table {
  8. border-collapse: collapse;
  9. box-sizing: border-box;
  10. width: 100%;
  11. }
  12. .remark-sticky-table-th {
  13. background-color: #f7f7f7;
  14. font-weight: 600;
  15. text-align: left;
  16. }
  17. .remark-sticky-table-tbody:nth-child(odd) {
  18. background-color: #fafafa;
  19. }
  20. .remark-sticky-table-th,
  21. .remark-sticky-table-td {
  22. padding: 16px;
  23. }

📝 Markdown

And that’s it 💥 Just use markdown as you normally would to create tables and let gatsby-remark-sticky-table do the rest.

  1. | Head one | Head two | Head three |
  2. | -------- | ---------| ---------- |
  3. | cell one | cell two | cell three |