最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

純CSS實現(xiàn)markdown自動編號的示例代碼

  發(fā)布時間:2020-09-22 16:44:06   作者:極簡豐盛人生   我要評論
這篇文章主要介紹了純CSS實現(xiàn)markdown自動編號的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

問題的由來

第一次關(guān)注這個標(biāo)題編號的問題應(yīng)該回溯到本科畢業(yè)論文的時候了,當(dāng)時還單獨涉獵過這個主題,Word 有個很好的特性級聯(lián)標(biāo)題,一次設(shè)置好之后,后續(xù)只要設(shè)置標(biāo)題樣式就能按照設(shè)置的標(biāo)題編號方式自動編號,我們要做的只是將對應(yīng)的標(biāo)題設(shè)置成對應(yīng)基本的標(biāo)題樣式就好了,這個方法讓我愛不釋手,多年來一直沿用。完全解決了中途插入一章,一節(jié)等等導(dǎo)致的章節(jié)編號都需要人肉調(diào)整的問題,當(dāng)然還有圖片的編號命名什么的,都是類似的。

直到后面開始用markdown 由于各個編輯器的切換,一直沒有一個好用的替代方案,所以幾年前我寫了一個小工具用命令行來做這事rawbin-/markdown-clear,這個工具解決了在github寫博客的問題,同時在解決博客的問題的基礎(chǔ)上解決了在各個平臺發(fā)文的問題,因為編號是用腳本寫上去的,所以用markdown here在各個平臺發(fā)文也就順理成章的轉(zhuǎn)成html就行了,也解決了這個階段的問題。
前兩天把拖欠幾個月的全面認(rèn)知的總結(jié)寫了,突然不想用這個腳本來編號了,產(chǎn)生一個想法:能不能不人肉編號,自動編上?然后就有了下面的內(nèi)容。

先搞起來解決問題

以下操作案例都是在macOS中產(chǎn)出,其他平臺可能有些許差別,換湯不換藥。

  • 在typora中寫markdown自動編號
  • 打開typora【偏好設(shè)置】
  • 找到【外觀】=>【主題】=>【打開主題文件夾】

將如下代碼加入到打開目錄的base.user.css 中

#writer {
    counter-reset: h1
}

h1 {
    counter-reset: h2
}

h2 {
    counter-reset: h3
}

h3 {
    counter-reset: h4
}

h4 {
    counter-reset: h5
}

h5 {
    counter-reset: h6
}

#writer h1:before {
    counter-increment: h1;
    content: counter(h1) ". "
}

#writer h2:before {
    counter-increment: h2;
    content: counter(h1) "." counter(h2) ". "
}

#writer h3:before {
    counter-increment: h3;
    content: counter(h1) "." counter(h2) "." counter(h3) ". "
}

#writer h4:before {
    counter-increment: h4;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". "
}

#writer h5:before {
    counter-increment: h5;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "
}

#writer h6:before{
    counter-increment: h6;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "
}

講道理

  • 打開typora【偏好設(shè)置】
  • 找到【通用】=>【高級 】=>【開啟調(diào)試模式】=>勾選
  • 然后在非源碼模式下=>【右鍵】=>【檢查元素】,就可以看到為什么是#write了
  • 這個后面還有用

在github pages 寫markdown博客自動編號

我用的是jekyllbootstrap.com的模板,比較簡單

打開任意一篇rawbin-.github.io中的文章,然后【右鍵】=>【檢查】
可以拿到兩個內(nèi)容

  • 容器類為 .content ,嚴(yán)格點為#wrap .content
  • 樣式文件在assets/themes/bootstrap3,可以修改其下的css/style.css

將如下內(nèi)容改到源代碼的assets/themes/bootstrap3/css/style.css中

.content {
    counter-reset: h1
}

h1 {
    counter-reset: h2
}

h2 {
    counter-reset: h3
}

h3 {
    counter-reset: h4
}

h4 {
    counter-reset: h5
}

h5 {
    counter-reset: h6
}

.content h1:before {
    counter-increment: h1;
    content: counter(h1) ". "
}

.content h2:before {
    counter-increment: h2;
    content: counter(h1) "." counter(h2) ". "
}

.content h3:before {
    counter-increment: h3;
    content: counter(h1) "." counter(h2) "." counter(h3) ". "
}

.content h4:before {
    counter-increment: h4;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". "
}

.content h5:before {
    counter-increment: h5;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "
}

.content h6:before{
    counter-increment: h6;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "
}

在其他網(wǎng)頁編輯中自動編碼

比如各個博客平臺,各個自媒體平臺等,像我們常用的寫文檔的語雀都可以的。

這里面涉及到一款瀏覽器插件markdown here,可以在頁面富文本編輯器中將markdown 自動轉(zhuǎn)換為網(wǎng)頁,這也是我前面說到的這幾年在各個平臺發(fā)文的套路,寫好編號好標(biāo)題markdown往編輯器里面一貼,然后一點 ,搞定。

簡單嘗試

  • markdown here 有一個配置頁面,可以配置和調(diào)整css,并能預(yù)覽效果
  • 簡單看了下是用js把類轉(zhuǎn)成了style屬性,并且不支持偽類
  • 修改源碼
  • 到adam-p/markdown-here 看到,已經(jīng)兩年沒動代碼了
  • 不管三七二十三先 fork一把到rawbin-/markdown-here,然后把代碼拉下來
  • 先把css文件建起來src/common/auto-number-title,找容器類可以在markdown here的選項頁面找到.markdown-here-wrapper
.markdown-here-wrapper {
    counter-reset: h1
}

.markdown-here-wrapper h1 {
    counter-reset: h2
}

.markdown-here-wrapper h2 {
    counter-reset: h3
}

.markdown-here-wrapper h3 {
    counter-reset: h4
}

.markdown-here-wrapper h4 {
    counter-reset: h5
}

.markdown-here-wrapper h5 {
    counter-reset: h6
}

.markdown-here-wrapper h1:before {
    counter-increment: h1;
    content: counter(h1) ". "
}

.markdown-here-wrapper h2:before {
    counter-increment: h2;
    content: counter(h1) "." counter(h2) ". "
}

.markdown-here-wrapper h3:before {
    counter-increment: h3;
    content: counter(h1) "." counter(h2) "." counter(h3) ". "
}

.markdown-here-wrapper h4:before {
    counter-increment: h4;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". "
}

.markdown-here-wrapper h5:before {
    counter-increment: h5;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "
}

.markdown-here-wrapper h6:before{
    counter-increment: h6;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "
}

  • 然后修改一下注入配置,允許加載這個樣式文件,并引入這個樣式問題
  • 剩下的有錯改錯就好了

最終產(chǎn)出和應(yīng)用

  • 克隆rawbin-/markdown-here
  • 打開Chrome 設(shè)置三個點=>【更多工具】=>【擴展程序】
  • 打開【開發(fā)者模式】
  • 選擇【加載已解壓的擴展程序】=>選擇克隆代碼下的src目錄即可安裝并加載插件
  • 將插件固定在插件欄方便使用
  • auto-number-title.scss內(nèi)容如下
.markdown-here-wrapper {
    counter-reset: h1;
    h1 {
        counter-reset: h2;
        &:before {
            counter-increment: h1;
            content: counter(h1) ". ";
        }
    }
    h2 {
        counter-reset: h3;
        &:before {
            counter-increment: h2;
            content: counter(h1) "." counter(h2) ". "
        }
    }
    h3 {
        counter-reset: h4;
        &:before {
            counter-increment: h3;
            content: counter(h1) "." counter(h2) "." counter(h3) ". "
        }
    }
    h4 {
        counter-reset: h5;
        &:before {
            counter-increment: h4;
            content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". "
        }
    }
    h5 {
        counter-reset: h6;
        &:before {
            counter-increment: h5;
            content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "
        }
    }
    h6:before{
        counter-increment: h6;
        content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". "
    }
}

再來簡單講一下道理

CSS 自動編號

不是一個新特性,或者說是一個老特性了,出現(xiàn)在CSS 2.1中,搜索site:w3.org css automatic numbering 可以找到,當(dāng)然截止今天后來的版本(CSS 3, CSS 2.2)都有這個特性,從caniuse上可以看到,IE8及以上兼容,很棒吧

簡單說明

  • counter-reset 重置
  • counter-increment ++
  • counter() 取值
  • 配合before和after來做
  • 還有更多的玩法,參見 CSS The Defiiniitiive Guide 4th ,這里有翻譯gdut-yy/CSS-The-Definitive-Guide-4th-zh

Chrome插件或擴展開發(fā)

這個 我也沒實際搞過,原來看了看書

可參考的資料

  • 官方文檔
  • sxei/chrome-plugin-demo 或者搜索Chrome插件 全攻略
  • 《Chrome擴展及應(yīng)用開發(fā)》,這個就是我原來看的那本老書

還是有些問題沒解決

  • 上面的操作方式必須要h1到h6依次排開,不然會很好看
  • 如果標(biāo)題本身就編號了的,就有點糟糕了
  • 這倆問題在我github的博客里面都能看到,解決辦法可以是運行下``

順便探索下CSS其他可變的內(nèi)容

CSS變量或者說自定義屬性

這個IE不兼容,其他瀏覽器高版本兼容

:root{
    --var-test:xxx
}
.body{
    --var-test:ooo;
    prop-test:var(--var-test)
}

attr()

  • 這個caniuse也有些說不清楚,主體兼容也是從IE8開始的,需要自己總結(jié)
  • 強大的地方是可以讀取屬性值,賦給另外的屬性,也就是可以來個屬性聯(lián)動

看起來純CSS的解決方案就到此告一段落了

  • 如果能有腳本參與,就自由了
  • attr() 配合偽類來做展示,是一個JS和CSS通信的一個比較好的方式

到此這篇關(guān)于純CSS實現(xiàn)markdown自動編號的示例代碼的文章就介紹到這了,更多相關(guān)CSS markdown自動編號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • CSS實現(xiàn)多層嵌套列表自動編號的示例代碼

    本文主要介紹了CSS實現(xiàn)多層嵌套列表自動編號的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起
    2023-02-24

最新評論

河东区| 清水县| 夏河县| 合肥市| 喀喇| 大化| 郑州市| 利辛县| 忻州市| 凤冈县| 鸡东县| 府谷县| 陆川县| 苏尼特左旗| 绥江县| 津市市| 阿拉善左旗| 伊吾县| 江油市| 南宫市| 滕州市| 正定县| 莒南县| 佛学| 合阳县| 汪清县| 商城县| 西城区| 邵阳市| 贺兰县| 正阳县| 衡南县| 宝兴县| 开江县| 德江县| 若尔盖县| 威信县| 定襄县| 手游| 井陉县| 玛曲县|