• 博客园主题


    备份自定义主题
    使用第三方主题 + 自定制
    第三方主题官网: Silence

    效果

    文章页面

    文章页面

    代码高亮

    代码高亮

    夜间模式

    夜间模式

    博客首页

    博客首页

    目录样式

    目录样式

    配置

    基本配置

    基本配置

    css配置

    @import url(https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css);
    
    
    @media only screen and (max- 1365px) {
        .github-corner {
            display: none
        }
    }
    
    @media only screen and (max- 1259px) {
        #home {
             100% !important
        }
    }
    
    @media only screen and (max- 990px) {
        #bannerbar {
            display: none
        }
    
        #header, .esa-mobile-menu {
            display: block !important
        }
    
        #header {
             auto;
            position: fixed !important;
            background: var(--blog-bg-color)
        }
    
        #header #blogTitle {
            margin-left: 15px
        }
    
        #header #navigator {
            display: none;
            left: 0;
            top: 61px
        }
    
        #header #navigator #navList > li {
            float: none;
            position: relative;
            background: var(--blog-bg-color);
            height: 34px;
            line-height: 34px;
             120px;
            border-bottom: 1px solid var(--border-color);
            border-right: 1px solid var(--border-color)
        }
    
        #header #navigator #navList > li > a {
            float: none;
             inherit;
            padding: 0 10px
        }
    
        #header #navigator #navList > li > a .arrow {
            position: absolute;
            top: .8rem;
            right: .8rem;
            transform: rotate(270deg) scaleX(-1)
        }
    
        #header #navigator #navList > li .esa-sub-navs {
            position: fixed;
             130px;
            top: 0;
            left: 121px;
            top: 61px
        }
    
        #header #navigator #navList > li .esa-sub-navs .caret {
            display: none
        }
    
        #header #navigator #navList > li .esa-sub-navs ul {
            box-shadow: none;
            padding: 0;
            border-radius: 0
        }
    
        #header #navigator #navList > li .esa-sub-navs ul li {
            height: 34px;
            line-height: 34px;
            border: 1px solid var(--border-color);
            border-top: none
        }
    
        #header #navigator #navList > li .esa-sub-navs ul li a {
            text-align: left;
            padding: 0 10px
        }
    
        #header #navigator #navList > li i {
            display: none
        }
    
        #sideBar {
            display: none !important
        }
    
        #home {
            min- auto !important
        }
    
        #main {
             100% !important;
            padding: 70px 0 0 !important
        }
    
        #main .forFlow {
            margin-left: 0 !important;
            padding-left: 15px;
            padding-right: 15px
        }
    
        #main .forFlow .postBody {
            padding: 0 !important
        }
    
        #main .forFlow .postDesc {
            display: none
        }
    
        #main .forFlow #comment_form {
            padding: 0 !important
        }
    
        #main .forFlow .commentform {
            margin-left: 0 !important
        }
    
        #main .forFlow .day .postDesc, #main .forFlow .entrylist .entrylistItemPostDesc {
            display: none
        }
    
        #myposts .postDesc2 {
            text-align: right !important
        }
    
        #myposts .postDesc2 span {
            display: none
        }
    
        .esa-toolbar .skin-popup {
            bottom: calc(50% - 67px) !important;
            border-radius: 15px !important
        }
    }
    
    :root[mode=light] {
        --blog-bg-color: #fff;
        --text-color: #596172;
        --border-color: #eef2f8;
        --catalog-bg-color: #fff;
        --panel-bg-color: #f8f8f8;
        --code-bg-color: #f1f1f1
    }
    
    :root[mode=dark] {
    
        --blog-bg-color: #202020;
        --text-color: #d8d8d8;
        --border-color: #2f2f2f;
        --catalog-bg-color: #252525;
        --panel-bg-color: #252525;
        --code-bg-color: #323836;
    }
    
    :root[theme=a] {
        --theme-color: #2d8cf0
    }
    
    :root[theme=b] {
        --theme-color: #fa7298
    }
    
    :root[theme=c] {
        --theme-color: #42b983
    }
    
    :root[theme=d] {
        --theme-color: #607d8b
    }
    
    :root[theme=e] {
        --theme-color: #5e72e4
    }
    
    :root[theme=f] {
        --theme-color: #ff9700
    }
    
    :root[theme=g] {
        --theme-color: #ff5722
    }
    
    :root[theme=h] {
        --theme-color: #009688
    }
    
    :root[theme=i] {
        --theme-color: #673bb7
    }
    
    :root[theme=j] {
        --theme-color: #906f61
    }
    
    * {
        margin: 0;
        padding: 0
    }
    
    body, html {
        height: 100%
    }
    
    body {
        background: var(--blog-bg-color);
        color: var(--text-color);
        font-family: Lato, PingFang SC, Microsoft YaHei, sans-serif;
        font-size: 14px;
        font-weight: 300
    }
    
    table {
        border-collapse: collapse;
        border-spacing: 0
    }
    
    td {
        padding: 5px
    }
    
    fieldset, img {
        border: 0
    }
    
    ul {
        word-break: break-all
    }
    
    li {
        list-style: none
    }
    
    h1, h2, h3, h4, h5, h6 {
        font-size: 100%;
        font-weight: 400
    }
    
    a {
        color: var(--text-color);
        text-decoration: none;
        transition: all .3s ease
    }
    
    a:hover {
        color: var(--theme-color)
    }
    
    ::-moz-selection {
        background: var(--theme-color);
        color: #fff
    }
    
    ::selection {
        background: var(--theme-color);
        color: #fff
    }
    
    #ad_c1, #ad_c2, #ad_t2, #author_profile, #comment_nav, #comment_pager_top, #green_channel, #lnkBlogLogo, #under_post_kb, #under_post_news, .blogStats, .c_ad_block, .dayTitle, .under-comment-nav {
        display: none
    }
    
    .clear {
        clear: both
    }
    
    #home {
         100%;
        height: 100%;
        transition: all 378ms
    }
    
    #header {
         960px;
        position: relative;
        top: 0;
        right: 0;
        left: 0;
        margin: 0 auto;
        border-top: 0;
        border-bottom: 1px solid var(--border-color);
        padding-bottom: 0;
        display: block;
        height: 60px;
        z-index: 999
    }
    
    #blogTitle h1 {
        font-size: 25px;
        font-weight: 600;
        font-family: Georgia;
        float: left;
        margin-top: 15px
    }
    
    #blogTitle h2 {
        display: none
    }
    
    #navigator {
        height: inherit;
        position: absolute;
        right: 0;
        top: 0
    }
    
    #navList {
        height: inherit;
        float: left
    }
    
    #navList > li {
        position: relative;
        float: left
    }
    
    #navList > li:hover i {
         100%;
        left: 0
    }
    
    #navList > li > a {
        float: left;
        font-size: 17px;
        border-right: 0;
        font-weight: 300;
        text-align: center;
         auto;
        padding: 19px 16px
    }
    
    #navList > li > a:after {
        content: "";
        position: absolute;
         100%;
        height: 4px;
        bottom: 0;
        left: 0;
        background-color: var(--theme-color);
        visibility: hidden;
        transform: scaleX(0);
        transition: .4s ease-in-out
    }
    
    #navList > li > a:hover:after {
        visibility: visible;
        transform: scaleX(1)
    }
    
    #navList .open {
        transform: rotate(180deg) scaleX(-1);
        transition-duration: .3s
    }
    
    #navList .esa-sub-navs {
        position: absolute;
         130px;
        top: 60px;
        left: calc(50% - 65px);
        display: none
    }
    
    #navList .esa-sub-navs .caret {
        border-top: 0 solid transparent;
        border-left: 8px solid transparent;
        border-right: 8px solid transparent;
        border-bottom: 8px solid var(--blog-bg-color);
         0;
        position: relative;
        left: calc(50% - 8px)
    }
    
    #navList .esa-sub-navs ul {
        background-color: var(--blog-bg-color);
        border-radius: 4px;
        box-shadow: 0 1px 15px rgba(27, 31, 35, .15);
        padding: 10px;
        text-align: center
    }
    
    #navList .esa-sub-navs ul li {
        float: none
    }
    
    #navList .esa-sub-navs ul li a {
        font-size: 15px;
        border-right: 0;
        color: var(--text-color);
        display: block;
         100%;
        padding: 10px 0;
        height: inherit;
        border-bottom: 1px solid transparent
    }
    
    #navList .esa-sub-navs ul li a:hover {
        color: var(--theme-color)
    }
    
    #main {
         960px;
        margin: 0 auto;
        min-height: calc(100% - 75px);
        padding: 15px 0;
        transition: all .3s ease
    }
    
    #mainContent {
        float: right;
        margin-left: -25em;
         100%
    }
    
    #mainContent .forFlow {
        margin: 0 auto 0 0;
        max- 960px
    }
    
    #sideBar {
         230px;
        border-right: 1px solid var(--border-color);
        font-weight: 300;
        display: none;
        min-height: 750px;
        padding: 0 15px 0 0
    }
    
    #sideBar #profile_block {
        margin: 0;
        font-size: 0;
        display: flex;
        flex-wrap: wrap;
        text-align: left;
        line-height: 1.6
    }
    
    #sideBar #profile_block a {
        box-sizing: border-box
    }
    
    #sideBar #profile_block a:first-child {
        font-size: 18px;
        font-weight: 700;
         100%;
        display: block;
        text-align: center;
        margin-bottom: 14px
    }
    
    #sideBar #profile_block a:nth-child(3):after {
        content: "\56ed\9f84"
    }
    
    #sideBar #profile_block a:nth-child(5):after {
        content: "\7c89\4e1d"
    }
    
    #sideBar #profile_block a:nth-child(7):after {
        content: "\5173\6ce8"
    }
    
    #sideBar #profile_block a:nth-child(3), #sideBar #profile_block a:nth-child(5), #sideBar #profile_block a:nth-child(7) {
        font-size: 14px;
         33.3333333%;
        display: block;
        padding: 0 4px;
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
        text-align: center
    }
    
    #sideBar #profile_block a:nth-child(3):after, #sideBar #profile_block a:nth-child(5):after, #sideBar #profile_block a:nth-child(7):after {
        color: #97979f;
        font-size: 14px;
        display: block;
        text-overflow: ellipsis;
        overflow: hidden;
         100%;
        font-weight: 400
    }
    
    #sideBar #profile_block #p_b_follow {
        margin: 15px 0 10px;
        text-align: center
    }
    
    #sideBar #profile_block #p_b_follow a {
        border: 1px solid var(--border-color);
        font-size: 13px;
        padding: 7px 0;
        border-radius: 4px;
         230px;
        font-weight: 300
    }
    
    #sideBar #profile_block #p_b_follow a:hover {
        border-color: var(--theme-color)
    }
    
    .newsItem {
        margin-bottom: 10px
    }
    
    .newsItem .catListTitle {
        display: none
    }
    
    #blog-calendar {
        border-top: 1px solid var(--border-color)
    }
    
    #blog-calendar .CalDayHeader {
        font-weight: 300
    }
    
    #blog-calendar .CalTodayDay {
        color: var(--theme-color);
        font-weight: 600
    }
    
    #sideBarMain ul {
        line-height: 1.6
    }
    
    .catListTitle {
        text-align: left;
        margin: 20px 0;
        font-size: 20px;
        font-weight: 300;
        border-left: 4px solid var(--theme-color);
        border-radius: 4px;
        padding-left: 7px
    }
    
    #sidebar_search #widget_my_zzk .input_my_zzk {
        color: #314659;
        border: 1px solid var(--border-color);
        background-color: transparent;
         150px;
        height: 32px;
        padding: 0 7px;
        font-size: 16px;
        border-radius: 4px
    }
    
    #sidebar_search #widget_my_zzk .input_my_zzk:focus {
        outline: none
    }
    
    #sidebar_search #widget_my_zzk .btn_my_zzk {
        height: 34px;
        font-size: 14px;
        font-weight: 300;
        background-color: transparent;
        color: var(--text-color);
        cursor: pointer;
         59px;
        outline: 0;
        border: 1px solid var(--border-color);
        border-radius: 4px;
        transition: border .3s
    }
    
    #sidebar_search #widget_my_zzk .btn_my_zzk:hover {
        color: var(--theme-color);
        border: 1px solid var(--theme-color)
    }
    
    #sidebar_search #widget_my_google {
        display: none
    }
    
    #sidebar_toptags li {
        font-size: 14px;
        height: 16px;
        line-height: 16px;
        padding: 5px 8px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max- 210px;
        border: 1px solid var(--border-color);
        margin: 0 6px 6px 0;
        display: inline-grid;
        transition: all .3s ease;
        border-radius: 4px
    }
    
    #sidebar_toptags li a {
        transition: inherit
    }
    
    #sidebar_toptags li a .tag-count {
        display: none
    }
    
    #sidebar_toptags li:active, #sidebar_toptags li:link, #sidebar_toptags li:visited {
        border-color: var(--border-color)
    }
    
    #sidebar_toptags li:hover {
        border-color: var(--theme-color)
    }
    
    #sidebar_categories li, #sidebar_scorerank li, #sidebar_shortcut li {
        font-size: 15px;
        height: 40px;
        padding-left: 3px;
        line-height: 30px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        list-style: none
    }
    
    #sidebar_recentposts li, #sidebar_topcommentedposts li, #sidebar_topdiggedposts li, #sidebar_topviewedposts li {
        font-size: 15px;
        padding: 7px 0;
        transition: all .3s;
        text-align: justify;
        border-bottom: 1px solid var(--border-color)
    }
    
    #sidebar_recentposts li:first-child, #sidebar_topcommentedposts li:first-child, #sidebar_topdiggedposts li:first-child, #sidebar_topviewedposts li:first-child {
        border-top: 1px solid var(--border-color)
    }
    
    #sidebar_recentcomments li {
        text-align: justify
    }
    
    #sidebar_recentcomments .recent_comment_title:nth-child(n+2) {
        padding-top: 10px
    }
    
    #sidebar_recentcomments .recent_comment_title:first-child {
        border-top: 1px solid var(--border-color);
        padding-top: 10px
    }
    
    #sidebar_recentcomments .recent_comment_body {
        border-radius: 4px;
        padding: 5px 10px;
        margin: 5px 0;
        background-color: var(--panel-bg-color)
    }
    
    #sidebar_recentcomments .recent_comment_author {
        margin-right: 0;
        text-align: right;
        padding-bottom: 10px;
        border-bottom: 1px solid var(--border-color)
    }
    
    #taglist_title, .entrylistTitle, .myposts_title, .PostListTitle, .thumbTitle {
        font-size: 20px;
        font-weight: 300;
        margin-bottom: 10px;
        text-align: left
    }
    
    .entrylistDescription {
        margin: 15px auto;
        border-left: 4px solid var(--border-color);
        text-align: justify;
        padding-left: 7px
    }
    
    #myposts {
        margin-left: 0
    }
    
    #myposts .PostList {
        border-bottom: 1px solid var(--border-color);
        padding: 0;
        margin: 0
    }
    
    #myposts .PostList:first-of-type {
        border-top: 1px solid var(--border-color)
    }
    
    #myposts .postTitl2 {
        font-size: 17px;
        margin: 10px 0;
        text-align: justify
    }
    
    #myposts .postDesc2 {
        text-align: right;
        margin-bottom: 10px;
        font-size: 14px
    }
    
    #myposts .postDesc2 > a {
        display: none
    }
    
    #myposts .postDesc2:before {
        font-family: FontAwesome;
        content: "\f017";
        opacity: .7
    }
    
    .post-view-count:before {
        content: "\f06e"
    }
    
    .post-comment-count:before, .post-view-count:before {
        font-family: FontAwesome;
        padding-left: 10px;
        padding-right: 5px;
        opacity: .7
    }
    
    .post-comment-count:before {
        content: "\f27b"
    }
    
    .post-digg-count:before {
        font-family: FontAwesome;
        content: "\f087";
        padding-left: 10px;
        padding-right: 5px;
        opacity: .7
    }
    
    .day, .day > .postSeparator, .entrylistItem {
        border-bottom: 1px solid var(--border-color);
        text-align: justify;
        margin-bottom: 10px;
        padding-bottom: 10px
    }
    
    .day .postTitle, .entrylist .entrylistPosttitle {
        font-size: 19px
    }
    
    .day .postTitle > a, .entrylist .entrylistPosttitle > a {
        position: relative
    }
    
    .day .postTitle > a:after, .entrylist .entrylistPosttitle > a:after {
        content: "";
        display: block;
         0;
        height: 1px;
        position: absolute;
        left: 0;
        bottom: -2px;
        background: var(--theme-color);
        transition: all .3s ease-in-out
    }
    
    .day .postTitle > a:hover:after, .entrylist .entrylistPosttitle > a:hover:after {
         100%
    }
    
    .day .postCon, .entrylist .entrylistPostSummary {
        font-size: 16px;
        padding: 10px 0
    }
    
    .day .postCon img, .entrylist .entrylistPostSummary img {
         200px;
        height: 150px;
        border-radius: 4px;
        margin-left: 10px
    }
    
    .day .postCon a, .entrylist .entrylistPostSummary a {
        border-bottom: 1px dotted var(--text-color);
        padding: 2px 5px;
        font-size: 14px;
        margin-top: 10px;
        display: table
    }
    
    .day .postCon a:after, .entrylist .entrylistPostSummary a:after {
        content: " \00bb"
    }
    
    .day .postCon a:hover, .entrylist .entrylistPostSummary a:hover {
        border-bottom: 1px dotted var(--theme-color)
    }
    
    .day .postDesc, .entrylist .entrylistItemPostDesc {
        text-align: right
    }
    
    .day .postDesc > a, .entrylist .entrylistItemPostDesc > a {
        display: none
    }
    
    .toc-container-header {
        font-size: 20px;
        font-weight: 700
    }
    
    #topics .postTitle {
        font-size: 21px;
        font-weight: 300
    }
    
    #topics .postBody {
        font-size: 16px;
        line-height: 1.75
    }
    
    #topics .postBody a {
        color: var(--theme-color);
        position: relative
    }
    
    #topics .postBody h1 a {
        color: #ffffff;
    
    }
    
    #topics .postBody a:after {
        content: "";
        display: block;
         0;
        height: 1px;
        position: absolute;
        left: 0;
        bottom: -2px;
        background: var(--theme-color);
        transition: all .3s ease-in-out
    }
    
    #topics .postBody a:hover:after {
         100%
    }
    
    #topics .postBody h1 {
        font-size: 21px
    }
    
    #topics .postBody h2 {
        font-size: 20px
    }
    
    #topics .postBody h3 {
        font-size: 19px
    }
    
    #topics .postBody h4 {
        font-size: 18px
    }
    
    #topics .postBody h5 {
        font-size: 17px
    }
    
    #topics .postBody h6 {
        font-size: 16px
    }
    
    #topics .postBody p {
        margin: 13px auto
    }
    
    #topics .postBody hr {
        border-top: none;
        border-bottom: 1px solid var(--border-color)
    }
    
    #topics .postBody blockquote {
        border: none;
        margin: 15px 0;
        color: inherit;
        border-radius: 4px;
        padding: 1px 15px;
        border-left: 4px solid var(--theme-color);
        background-color: var(--panel-bg-color)
    }
    
    #topics .postBody em {
        padding-right: 3px
    }
    
    #topics .postBody strong {
        margin: 0 3px;
        font-weight: 500
    }
    
    #topics .postBody img {
        display: block;
        margin: 15px 0 30px;
        border-radius: 3px;
        box-shadow: 0 1px 15px rgba(27, 31, 35, .15), 0 0 1px rgba(106, 115, 125, .35)
    }
    
    #topics .postBody .cnblogs-markdown pre {
        white-space: pre;
        position: relative
    }
    
    #topics .postBody ol li, #topics .postBody ul li {
        margin: 3px 0
    }
    
    #topics .postBody table {
        font-size: 15px;
         100%;
        margin: 15px 0;
        display: block;
        overflow-x: auto;
        border: none
    }
    
    #topics .postBody table::-webkit-scrollbar {
        height: 4px !important
    }
    
    #topics .postBody table th {
        background: var(--panel-bg-color);
        white-space: nowrap;
        font-weight: 400
    }
    
    #topics .postBody table td, #topics .postBody table th {
        border: 1px solid var(--border-color);
        padding: 6px 15px;
        min- 100px
    }
    
    /* code 样式 */
    
    #topics .postBody pre code table th {
        background: var(--panel-bg-color);
        white-space: nowrap;
        font-weight: 400
    }
    
    #topics .postBody pre code table td, #topics .postBody pre code table th {
        border: none;
        padding: 0;
        min- 0
    }
    
    #topics .postBody pre .termy th {
        background: var(--panel-bg-color);
        white-space: nowrap;
        font-weight: 400
    }
    
    #topics .postBody pre .termy td, #topics .postBody pre .termy th {
        border: none;
        padding: 0;
        min- 0
    }
    
    
    /* code 样式 end */
    
    #topics .postBody h1 code, #topics .postBody h2 code, #topics .postBody h3 code, #topics .postBody h4 code, #topics .postBody h5 code, #topics .postBody h6 code, #topics .postBody li > code, #topics .postBody p > code, #topics .postBody table code {
        line-height: 1.2;
        font-family: consolas !important;
        vertical-align: middle;
        margin: 0 3px;
        background-color: var(--code-bg-color) !important;
        font-size: 14px !important;
        padding: .2em .3em !important;
        border-radius: 3px !important;
        border: none !important
    }
    
    #topics .postBody #BlogPostCategory, #topics .postBody #EntryTag {
        font-size: 14px
    }
    
    #topics .postBody #BlogPostCategory a, #topics .postBody #EntryTag a {
        font-size: 13px;
        border-radius: 4px;
        padding: 4px 6px;
        background-color: var(--panel-bg-color);
        margin-right: 5px;
        transform: none;
        color: var(--text-color)
    }
    
    #topics .postBody #BlogPostCategory a:hover, #topics .postBody #EntryTag a:hover {
        color: #fff;
        background-color: var(--theme-color)
    }
    
    #topics .postBody #BlogPostCategory a:after, #topics .postBody #EntryTag a:after {
        content: none
    }
    
    #topics .postBody #BlogPostCategory:before {
        content: "\f07c";
        font-family: FontAwesome;
        opacity: .7
    }
    
    #topics .postBody #EntryTag:before {
        content: "\f02c";
        font-family: FontAwesome;
        opacity: .7
    }
    
    #topics .postBody #post_next_prev {
        font-size: 14px
    }
    
    #topics .postDesc {
        border-top: 1px solid var(--border-color);
        padding-top: 5px;
        margin-top: 5px;
        text-align: right
    }
    
    .cnblogs_code {
        background-color: #333232;
        padding-left: 1em;
        padding-right: 1em;
        border: none;
        border-radius: 3px;
        font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace !important
    }
    
    .cnblogs_code div {
        background-color: transparent;
        color: #656c73
    }
    
    .cnblogs_code img {
        margin: 0 !important
    }
    
    .cnblogs_code pre {
        color: #abb2bf;
        font-family: inherit !important;
        font-size: 15px !important
    }
    
    .cnblogs_code pre span {
        font-family: inherit !important;
        color: inherit !important
    }
    
    .cnblogs_code textarea {
        font-family: inherit !important;
        padding: 5px;
        border: 1px solid #3e4c42;
        color: #c5d4ef;
        background-color: #282c34
    }
    
    .cnblogs_code textarea:focus {
        outline: 0
    }
    
    .cnblogs_code .code_img_closed, .cnblogs_code .code_img_opened {
        display: none !important
    }
    
    .cnblogs_code .cnblogs_code_toolbar {
         20px
    }
    
    .cnblogs_code .cnblogs_code_toolbar span {
        padding-right: 0
    }
    
    .cnblogs_code .cnblogs_code_toolbar a:link img {
        background-color: transparent !important
    }
    
    .cnblogs_code .cnblogs_code_collapse {
        color: #656c73;
        border: 1px solid #989fa6;
        border-radius: 2px;
        background-color: transparent;
        display: inline-block;
        cursor: pointer;
        padding: 5px 5px 2px
    }
    
    #footer {
        border-top: 1px solid var(--border-color);
        font-size: 13px;
        text-align: center;
        padding: 15px 0
    }
    
    .louzhu {
        color: var(--theme-color);
        font-weight: 500
    }
    
    .feedbackListSubtitle .sendMsg2This {
        background: transparent;
        padding-left: 0;
        font-size: 15px
    }
    
    .feedbackListSubtitle .sendMsg2This:before {
        content: "✉️"
    }
    
    .feedbackManage {
        float: right
    }
    
    .feedbackItem .feedbackCon {
        margin-bottom: 10px;
        padding: 10px 0;
        border-bottom: 1px solid var(--border-color)
    }
    
    .feedbackItem .feedbackCon .comment_vote {
        margin-top: 12px
    }
    
    .blog_comment_body {
         auto;
        border-radius: 4px;
        padding: 12px;
        margin-left: 50px;
        background-color: var(--panel-bg-color);
        min-height: 19px
    }
    
    .blog_comment_body img {
        border-radius: 3px
    }
    
    #taglist_main {
        margin-top: 0
    }
    
    #taglist_main table {
         100%
    }
    
    #taglist_main table tr td {
        padding: 5px 20px 5px 0
    }
    
    #taglist_main table tr td:last-child {
        padding-right: 0
    }
    
    #taglist_main table tr td .small {
        display: none
    }
    
    #taglist_main table tr td a {
        display: block;
        padding: 5px;
        font-weight: 300;
        line-height: 20px;
        text-align: center;
        border: 1px solid var(--border-color);
        border-radius: 4px;
        color: var(--text-color)
    }
    
    #taglist_main table tr td a:hover {
        border: 1px solid var(--theme-color)
    }
    
    #div_digg {
        margin: 0;
         auto
    }
    
    #div_digg .buryit, #div_digg .diggit {
        background: none;
        height: auto;
         auto;
        min- 60px;
        margin: 0;
        font-size: 17px;
        border-radius: 4px;
        padding: 3px 10px;
        background-color: var(--panel-bg-color);
        transition: all .3s
    }
    
    #div_digg .buryit span, #div_digg .diggit span {
        font-size: inherit;
        color: inherit
    }
    
    #div_digg .buryit:hover, #div_digg .diggit:hover {
        color: #fff;
        background-color: var(--theme-color)
    }
    
    #div_digg .diggit:before {
        content: "\f087";
        font-family: FontAwesome;
        opacity: .7
    }
    
    #div_digg .buryit {
        margin-left: 15px
    }
    
    #div_digg .buryit:before {
        content: "\f088";
        font-family: FontAwesome;
        opacity: .7
    }
    
    .topicListFooter {
        text-align: right;
        margin-top: 10px;
        margin-right: 0
    }
    
    #nav_next_page, .pager {
        color: var(--text-color);
        text-align: right;
        margin-right: 0 !important
    }
    
    #nav_next_page a, .pager a {
        color: var(--text-color);
        padding: 4px 7px;
        border: 1px solid var(--border-color);
        border-radius: 4px
    }
    
    #nav_next_page a:hover, .pager a:hover {
        color: var(--theme-color);
        border: 1px solid var(--theme-color)
    }
    
    .pager span.current {
        padding: 3px 7px;
        border: 1px solid var(--theme-color);
        background-color: var(--theme-color);
        border-radius: 4px;
        margin: 0 0 0 5px
    }
    
    .feedback_area_title {
        font-size: 20px;
        border-bottom: 1px solid var(--border-color);
        margin: 20px 0;
        padding-bottom: 5px
    }
    
    #commentform_title {
        background-image: none;
        padding-left: 0;
        font-size: 20px
    }
    
    #commentform_title > a {
        display: none
    }
    
    .commentform #tip_comment {
        color: var(--theme-color) !important;
        margin: 15px 0;
        display: block
    }
    
    .commentform .comment_textarea {
         100%;
        border: 1px solid var(--border-color);
        background-color: transparent;
        padding: 0
    }
    
    .commentform .comment_textarea:focus {
        outline: 0
    }
    
    .commentform .commentbox_title {
        border-bottom: 1px solid var(--border-color)
    }
    
    .commentform .commentbox_title .commentbox_title_left .commentbox_tab {
        margin: 0;
        padding: 5px 15px;
        color: var(--text-color);
        border-bottom: none
    }
    
    .commentform .commentbox_title .commentbox_title_left .active {
        color: var(--theme-color)
    }
    
    .commentform .commentbox_title .commentbox_title_right {
        margin: 0 10px 0 0
    }
    
    .commentform .commentbox_title .commentbox_title_right .comment_svg:hover, .commentform .commentbox_title .commentbox_title_right .comment_svg_stroke:hover {
        fill: var(--theme-color);
        stroke: var(--theme-color)
    }
    
    .commentform #tbCommentBody, .commentform #tbCommentBodyPreview {
        padding: 10px 15px;
        background: transparent;
        color: var(--text-color);
        font-weight: 300
    }
    
    .commentform #tbCommentBodyPreviewBody {
        margin-left: 0;
        min-height: 235px;
        background-color: transparent
    }
    
    .commentform #btn_comment_submit {
         auto;
        height: auto;
        border- 0;
        cursor: pointer;
        color: #fff;
        background-color: var(--theme-color);
        border-color: var(--theme-color);
        font-weight: 300;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        padding: 5px 17px;
        font-size: 13px;
        border-radius: 4px;
        outline: none;
        transition: all .3s
    }
    
    .commentform #btn_comment_submit:hover {
        opacity: .7
    }
    
    .commentform .comment_my_posted > img {
        display: none
    }
    
    .commentform .bq_post_comment {
        margin-top: 5px;
        font-size: 13px;
        display: block;
        color: var(--text-color);
        background-color: var(--border-color);
        border: none;
        border-radius: 4px;
        padding: 1px 15px
    }
    
    ::-webkit-scrollbar {
         3px
    }
    
    ::-webkit-scrollbar-thumb {
        background-color: var(--text-color)
    }
    
    .github-corner:hover .octo-arm {
        -webkit-animation: octocat-wave .56s ease-in-out;
        animation: octocat-wave .56s ease-in-out
    }
    
    .github-corner svg {
        fill: var(--theme-color);
        z-index: 999;
        cursor: pointer;
        position: fixed;
        top: 0;
        border: 0;
        left: 0;
        transform: scaleX(-1)
    }
    
    @-webkit-keyframes octocat-wave {
        0%, to {
            transform: rotate(0)
        }
        20%, 60% {
            transform: rotate(-25deg)
        }
        40%, 80% {
            transform: rotate(10deg)
        }
    }
    
    @keyframes octocat-wave {
        0%, to {
            transform: rotate(0)
        }
        20%, 60% {
            transform: rotate(-25deg)
        }
        40%, 80% {
            transform: rotate(10deg)
        }
    }
    
    .esa-mobile-menu {
        display: none;
        position: fixed;
        top: 17px;
        right: 20px;
        height: 25px;
         25px;
        text-align: center;
        line-height: 25px;
        z-index: 941113;
        font-size: 1.5em;
        cursor: pointer;
        color: var(--text-color);
        border-radius: 4px
    }
    
    .esa-profile-avatar {
        border-radius: 4px;
         100%
    }
    
    .esa-contents {
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        background-color: var(--blog-bg-color);
        border-left: 1px solid var(--border-color);
        overflow-y: auto;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        padding: 1rem 0;
         252px;
        transform: translate3d(252px, 0, 0);
        z-index: 1000
    }
    
    .esa-contents ul {
        padding: 0 15px;
        overflow-y: auto
    }
    
    .esa-contents ul li {
        padding: 5px 0;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        cursor: pointer;
        color: var(--text-color)
    }
    
    .esa-contents ul li .level1 {
        margin-left: 0
    }
    
    .esa-contents ul li .level2 {
        margin-left: 10px
    }
    
    .esa-contents ul li .level3 {
        margin-left: 26px
    }
    
    .esa-anchor {
        opacity: 0;
        transition: opacity .3s ease;
        margin-left: 8px
    }
    
    .active {
        transform: translateZ(0)
    }
    
    .active, .noactive {
        transition-duration: 378ms
    }
    
    .noactive {
        transform: translate3d(252px, 0, 0)
    }
    
    .esa-post-signature {
        padding: 12px 24px 12px 20px;
        margin-top: 15px;
        font-size: 15px;
        background-color: var(--panel-bg-color);
        position: relative;
        border-radius: 4px;
        border-left: 4px solid var(--theme-color)
    }
    
    .esa-post-signature p {
        margin: 0 !important
    }
    
    .esa-post-signature a {
        color: var(--text-color) !important
    }
    
    .esa-sponsor {
        position: relative;
         100%;
        height: 85px;
        margin: 100px 0
    }
    
    .esa-sponsor .title {
        text-align: center;
        margin-bottom: 15px;
        font-size: 17px;
        font-weight: 400;
        opacity: .8
    }
    
    .esa-sponsor .box {
        position: absolute;
        left: calc(50% - 101px);
        border: 1px solid var(--border-color);
        border-radius: 4px
    }
    
    .esa-sponsor .box li {
         60px;
        float: left;
        margin: 0 !important;
        text-align: center;
        border-left: 1px solid var(--border-color);
        background: transparent;
        transition: background .3s ease;
        cursor: pointer;
        line-height: 0;
        opacity: 1;
        list-style: none;
        margin: 0;
        padding: 6px 3px
    }
    
    .esa-sponsor .box li svg {
        opacity: .5
    }
    
    .esa-sponsor .box li:hover {
        background: var(--panel-bg-color)
    }
    
    .esa-sponsor .box li:first-child {
        border- 0
    }
    
    .esa-sponsor .qrshow {
        position: absolute;
         200px;
        height: 200px;
        background: var(--blog-bg-color);
        cursor: pointer;
        left: calc(50% - 100px);
        top: -170px;
        z-index: 999;
        display: none;
        box-shadow: 0 1px 15px rgba(27, 31, 35, .15), 0 0 1px rgba(106, 115, 125, .35)
    }
    
    .esa-sponsor .qrshow .noconfig {
        position: absolute;
        top: 85px;
        left: 60px;
        border: 1px solid var(--border-color);
        border-radius: 4px;
        padding: 0 10px
    }
    
    .esa-sponsor .qrshow img {
        height: 100%;
         100%;
        box-shadow: none !important;
        margin: 0 !important
    }
    
    .esa-comment-avatar {
        float: left
    }
    
    .esa-comment-avatar img {
        height: 43px;
         43px;
        border-radius: 4px;
        transition: all .5s ease-out;
        -webkit-transition: all .6s ease-out
    }
    
    .esa-comment-avatar img:hover {
        border-radius: 50%
    }
    
    .esa-toolbar {
        position: fixed;
        bottom: 30px;
        right: 30px;
         45px;
        height: 45px;
        z-index: 1001
    }
    
    .esa-toolbar .bars {
        position: relative;
         inherit;
        height: inherit;
        cursor: pointer;
        border-radius: 50%;
        background: var(--theme-color);
        z-index: 1;
        text-align: center;
        font-size: 24px;
        line-height: 46px;
        color: #fff;
        transition: all .3s ease;
        box-shadow: 0 2px 4px 1px rgba(0, 0, 0, .2)
    }
    
    .esa-toolbar .contents, .esa-toolbar .mode, .esa-toolbar .skin, .esa-toolbar .up {
        position: absolute;
        cursor: pointer;
        bottom: 0;
        right: 0;
        height: 35px;
         35px;
        text-align: center;
        line-height: 35px;
        z-index: 0;
        opacity: 0;
        border-radius: 4px;
        box-shadow: 0 2px 4px 1px rgba(0, 0, 0, .2);
        background-color: var(--panel-bg-color);
        transition: all .3s ease
    }
    
    .esa-toolbar .contents:hover, .esa-toolbar .mode:hover, .esa-toolbar .skin:hover, .esa-toolbar .up:hover {
        color: #fff;
        background-color: var(--theme-color)
    }
    
    .esa-toolbar .bars-show {
        transform: rotate(270deg)
    }
    
    .esa-toolbar .up-show {
        transform: translate3d(0, -200%, 0);
        opacity: 1
    }
    
    .esa-toolbar .mode-show {
        transform: translate3d(-140%, -140%, 0);
        opacity: 1
    }
    
    .esa-toolbar .skin-show {
        transform: translate3d(-200%, 0, 0);
        opacity: 1
    }
    
    .esa-toolbar .contents-show {
        transform: translate3d(-350%, 0, 0);
        opacity: 1
    }
    
    .esa-toolbar .skin-popup {
        display: none;
        position: fixed;
        left: calc(50% - 100px);
        bottom: 0;
        padding: 25px;
        opacity: 1;
         150px;
        height: auto;
        border-radius: 15px 15px 0 0;
        background-clip: border-box;
        box-shadow: 0 2px 4px 1px rgba(0, 0, 0, .2);
        background-color: var(--panel-bg-color)
    }
    
    .esa-toolbar .skin-popup .item {
        text-align: center
    }
    
    .esa-toolbar .skin-popup .title {
        font-size: 17px;
        margin-bottom: .5em
    }
    
    .esa-toolbar .skin-popup .themes button {
        font-size: 1em;
        position: relative;
         calc(1.75em - 5px);
        height: calc(1.75em - 5px);
        border-radius: .15em;
        cursor: pointer;
        margin: 2.5px;
        flex-shrink: 0;
        justify-self: center;
        transition: all .15s;
        overflow: hidden;
        background: transparent;
        z-index: 1;
        box-sizing: border-box;
        outline: none;
        border: none
    }
    
    @-webkit-keyframes loading {
        0% {
            opacity: 0
        }
        to {
            opacity: 1
        }
    }
    
    @keyframes loading {
        0% {
            opacity: 0
        }
        to {
            opacity: 1
        }
    }
    
    .dark-loading {
        background: #222
    }
    
    .light-loading {
        background: #fff;
    }
    
    .light-loading .box span {
        display: inline-block;
        vertical-align: middle;
         .6em;
        height: .6em;
        margin: .19em;
        background: lightgreen;
        -webkit-animation: load 1.04s ease infinite;
    }
    
    .light-loading .box span:last-child {
        margin-right: 0px;
    }
    
    @-webkit-keyframes load {
        0% {
            opacity: 1;
            -webkit-transform: scale(1.2);
        }
        100% {
            opacity: .2;
            -webkit-transform: scale(.2);
        }
    }
    
    .light-loading .box span:nth-child(1) {
        -webkit-animation-delay: 0.13s;
    }
    
    .light-loading .box span:nth-child(2) {
        -webkit-animation-delay: 0.26s;
    }
    
    .light-loading .box span:nth-child(3) {
        -webkit-animation-delay: 0.39s;
    }
    
    .light-loading .box span:nth-child(4) {
        -webkit-animation-delay: 0.52s;
    }
    
    .light-loading .box span:nth-child(5) {
        -webkit-animation-delay: 0.65s;
    }
    
    
    .dark-loading, .light-loading {
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        display: flex;
        justify-content: center;
        align-items: center;
        z-index: 99999
    }
    
    .dark-loading .box h2 {
        color: #777;
        margin: 0;
        font: .8em verdana;
        text-transform: uppercase;
        letter-spacing: .1em;
        text-align: center
    }
    
    .dark-loading .box span {
        display: inline-block;
        vertical-align: middle;
         .6em;
        height: .6em;
        margin: .19em;
        background: #007db6;
        border-radius: .6em;
        -webkit-animation: loading 1s infinite alternate;
        animation: loading 1s infinite alternate
    }
    
    .dark-loading .box span:nth-of-type(2) {
        background: #008fb2;
        -webkit-animation-delay: .2s;
        animation-delay: .2s
    }
    
    .dark-loading .box span:nth-of-type(3) {
        background: #009b9e;
        -webkit-animation-delay: .4s;
        animation-delay: .4s
    }
    
    .dark-loading .box span:nth-of-type(4) {
        background: #00a77d;
        -webkit-animation-delay: .6s;
        animation-delay: .6s
    }
    
    .dark-loading .box span:nth-of-type(5) {
        background: #00b247;
        -webkit-animation-delay: .8s;
        animation-delay: .8s
    }
    
    .dark-loading .box span:nth-of-type(6) {
        background: #5ab027;
        -webkit-animation-delay: 1s;
        animation-delay: 1s
    }
    
    .dark-loading .box span:nth-of-type(7) {
        background: #a0b61e;
        -webkit-animation-delay: 1.2s;
        animation-delay: 1.2s
    }
    
    
    /* ................代码行号样式 开始 ............. */
    .ln-bg {
        z-index: 1;
        top: 0;
        height: 100%;
        background: #333;
        border-radius: 4px 0 0 4px
    }
    
    .ln-bg, .ln-num {
        position: absolute;
        left: 0;
         2.4em
    }
    
    .ln-num {
        z-index: 2;
        text-align: center;
        display: inline-block;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none
    }
    
    .ln-num:before {
        color: #777;
        font-style: normal;
        font-weight: 400;
        text-align: center;
        content: attr(data-num)
    }
    
    /* ...................代码行号样式 结束 ............. */
    
    /* ................. hl js 高亮自定义 开始 ............ */
    /* 官方主题 https://highlightjs.org/static/demo/ */
    :root {
        --hl-background: #f5f5f5; /* 代码标签背景 */
        --hl-border-color: #f5f5f5; /* 代码标签框背景 */
        --hl-text-color: #36464e; /* 普通代码的颜色 */
        --hl-comment: #5c6370; /* 代码注释 */
    
        --hl-quote: #a846b9; /* 代码引用 markdown 的 > */
        --hl-section: #e06c75; /* markdown的标题 */
        --hl-bullet: #3f6ec6; /* yaml 的 - 或 markdown 的 1. */
        --hl-link: #3f6ec6; /* markdown 中 [l](xxx) 的xxx */
    
        --hl-doctag: #c678dd; /* 代码注释 tag 如 java 的 @author*/
        --hl-formula: #c678dd;
    
        --hl-deletion: #e06c75; /* 减 diff 的 - */
        --hl-addition: #1c7d4d; /* 加 diff 的 + */
    
        --hl-name: #e06c75; /* HTML或XML的标签 */
        --hl-tag: #3f6ec6; /* HTML或XML的标签 */
        --hl-attr: #d52a2a; /* HTML或XML的属性 */
        --hl-attribute: #1c7d4d; /* html属性名 */
    
        --hl-meta-string: #1c7d4d;
    
        --hl-subst: #e06c75; /* 如 bash $variable 或 ${cls} */
        --hl-literal: #56b6c2; /* 如 None null true false [] */
        --hl-regexp: #1c7d4d; /* 正则高亮 */
        --hl-string: #1c7d4d; /* 字符串 */
        --hl-built_in: #3f6ec6; /* built in */
        --hl-class: #e6c07b; /* 类 结构 接口 */
        --hl-title: #e6c07b; /* 类名 函数名 */
        --hl-number: #d52a2a; /* 数字 */
        --hl-type: #d52a2a; /* 内置类型 如: int string */
        --hl-variable: #d52a2a; /* 变量名 */
        --hl-meta: #3f6ec6; /* shell: $  python: 装饰器 import*/
        --hl-keyword: #3f6ec6; /* 关键字 import def 等*/
    
        --hl-selector-attr: #d52a2a; /* css 属性选择器 */
        --hl-selector-class: #d52a2a; /* css 类选择器 */
        --hl-selector-id: #3f6ec6; /* css id选择器 */
        --hl-selector-pseudo: #d52a2a; /* css 伪类 */
        --hl-selector-tag: #3f6ec6; /* css 标签名选择器 */
        --hl-template-variable: #d52a2a; /* django template 的占位符 {{ request.user }} */
    
        --hl-symbol: #3f6ec6; /* 反引号的内容 */
    }
    
    /* 夜间模式的代码 */
    :root[mode=dark] {
        --hl-background: #252a33; /* 代码标签背景 */
        --hl-border-color: #252a33; /* 代码标签框背景 */
        --hl-text-color: #bababa; /* 普通代码的颜色 */
        --hl-comment: #5c6370; /* 代码注释 */
    
        --hl-quote: #a846b9; /* 代码引用 markdown 的 > */
        --hl-section: #e06c75; /* markdown的标题 */
        --hl-bullet: #61aeee; /* yaml 的 - 或 markdown 的 1. */
        --hl-link: #61aeee; /* markdown 中 [l](xxx) 的xxx */
    
        --hl-doctag: #c678dd; /* 代码注释 tag 如 java 的 @author*/
        --hl-formula: #c678dd;
    
        --hl-deletion: #e06c75; /* 减 diff 的 - */
        --hl-addition: #98c379; /* 加 diff 的 + */
    
        --hl-name: #7171bf; /* HTML或XML的标签 */
        --hl-tag: #7171bf; /* HTML或XML的标签 */
        --hl-attr: #d19a66; /* HTML或XML的属性 */
        --hl-attribute: #98c379; /* html属性名 */
    
        --hl-meta-string: #98c379;
    
        --hl-subst: #e06c75; /* 如 bash $variable 或 ${cls} */
        --hl-literal: #56b6c2; /* 如 None null true false [] */
        --hl-regexp: #98c379; /* 正则高亮 */
        --hl-string: #98c379; /* 字符串 */
        --hl-built_in: #e6c07b; /* built in */
        --hl-class: #e6c07b; /* 类 结构 接口 */
        --hl-title: #e6c07b; /* 类名 函数名 */
        --hl-number: #d19a66; /* 数字 */
        --hl-type: #d19a66; /* 内置类型 如: int string */
        --hl-variable: #d19a66; /* 变量名 */
        --hl-meta: #61aeee; /* shell: $  python: 装饰器 import*/
        --hl-keyword: #7171bf; /* 关键字 import def 等*/
    
        --hl-selector-attr: #d19a66; /* css 属性选择器 */
        --hl-selector-class: #d19a66; /* css 类选择器 */
        --hl-selector-id: #61aeee; /* css id选择器 */
        --hl-selector-pseudo: #d19a66; /* css 伪类 */
        --hl-selector-tag: #7171bf; /* css 标签名选择器 */
        --hl-template-variable: #d19a66; /* django template 的占位符 {{ request.user }} */
    
        --hl-symbol: #61aeee; /* 反引号的内容 */
    }
    
    .cnblogs-markdown .hljs, .cnblogs-markdown .hljsln {
        display: block;
        overflow-x: auto;
        padding: .7em 1em .7em 3em !important;
        background: var(--hl-background) !important; /* 代码背景颜色 */
        border: 1px solid var(--hl-border-color) !important; /* 代码边框颜色 */
        color: var(--hl-text-color); /* 代码文字颜色 */
        font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace !important;
        font-size: 15px !important
    }
    
    .cnblogs-markdown .hljs::-webkit-scrollbar, .cnblogs-markdown .hljsln::-webkit-scrollbar {
        height: 4px
    }
    
    .cnblogs-markdown .hljs.ln-hide {
        padding: .7em 1em !important
    }
    
    /* 代码注释 */
    .hljs-comment {
        color: var(--hl-comment);
        font-style: italic
    }
    
    /* 代码引用 markdown 的 > */
    .hljs-quote {
        color: var(--hl-quote);
        font-style: italic
    }
    
    /* 如 markdown的标题 */
    .hljs-section {
        color: var(--hl-section);
    
    }
    
    /* 如 yaml 的 -
         或 markdown的
           1. xxx
           2. bbb
          中的1. 2.
    */
    .hljs-bullet {
        color: var(--hl-bullet);
    }
    
    /* markdown 的[with links](http://example.com) 中的http://example.com */
    .hljs-link {
        text-decoration: underline;
        color: var(--hl-link);
    }
    
    /* 代码注释 tag
        如 java的
        / **
        * @author John Smith <john.smith@example.com>
        * /
        的 @author
    */
    .hljs-doctag {
        color: var(--hl-doctag);
    }
    
    /* 未知 暂时使用 .hljs-doctag 的 */
    .hljs-formula {
        color: var(--hl-formula);
    }
    
    /* 如 diff 的
        -  defaultMode:
        中的 -
        即 删除
    */
    .hljs-deletion {
        color: var(--hl-deletion);
    }
    
    /*如 diff 中的 +
        即 增加
    */
    .hljs-addition {
        color: var(--hl-addition);
    }
    
    /* 如 HTML或XML的标签 */
    .hljs-name {
        color: var(--hl-name);
    }
    
    /* 如 html的属性名 */
    .hljs-attr {
        color: var(--hl-attr);
    }
    
    /* html等标签 */
    .hljs-tag {
        color: var(--hl-tag)
    }
    
    /* 如 html中的属性名 */
    .hljs-attribute {
        color: var(--hl-attribute);
    }
    
    /* 如 bash中的使用其他变量: $variable 或 ${cls} */
    .hljs-subst {
        color: var(--hl-subst);
    }
    
    /* 如 python中的None  或其他语言的false true null */
    .hljs-literal {
        color: var(--hl-literal);
    }
    
    
    /* 未知 */
    .hljs-meta-string {
        color: var(--hl-meta-string);
    }
    
    /* 正则高亮, js nginx */
    .hljs-regexp {
        color: var(--hl-regexp);
    }
    
    /* 一般代码 字符串 */
    .hljs-string {
        color: var(--hl-string);
    }
    
    /* 一般代码 built_in */
    .hljs-built_in {
        color: var(--hl-built_in);
    
    }
    
    /* 一般代码 类 结构 接口 */
    .hljs-class {
        color: var(--hl-class);
    }
    
    /* 一般代码 类名/函数名等 */
    .hljs-title {
        color: var(--hl-title);
    }
    
    /* 一般代码 数字 */
    .hljs-number {
        color: var(--hl-number);
    }
    
    /* 一般代码 内置类型 如: int string */
    .hljs-type {
        color: var(--hl-type);
    }
    
    /* 一般代码 变量名 */
    .hljs-variable {
        color: var(--hl-variable)
    }
    
    /* 常用代码, 如 shell 的$  或python 装饰器 import */
    .hljs-meta {
        color: var(--hl-meta);
    }
    
    /* 常用代码 关键字 包括 import def 等 */
    .hljs-keyword {
        color: var(--hl-keyword);
    }
    
    /* css 属性选择器 */
    .hljs-selector-attr {
        color: var(--hl-selector-attr);
    
    }
    
    /* css 类选择器 */
    .hljs-selector-class {
        color: var(--hl-selector-attr);
    }
    
    /* css id选择器 */
    .hljs-selector-id {
        color: var(--hl-selector-id);
    }
    
    /* css 选择器 伪类 */
    .hljs-selector-pseudo {
        color: var(--hl-selector-pseudo);
    }
    
    /* css 标签名选择器 */
    .hljs-selector-tag {
        color: var(--hl-selector-tag);
    }
    
    /* 如 django template 的占位符 {{ request.user }} */
    .hljs-template-variable {
        color: var(--hl-template-variable);
    }
    
    /* 未知 好像是反引号的内容 */
    .hljs-symbol {
        color: var(--hl-symbol);
    }
    
    .hljs-emphasis {
        font-style: italic
    }
    
    .hljs-strong {
        font-weight: 700
    }
    
    /* -------------------- hl js  高亮自定义 结束 ............ */
    
    /* ................ 自定义Termynal样式 开始 ................. */
    /* Termynal代码复制 btn */
    [data-termynal] span[data-ty="input"] {
        position: relative;
    }
    
    [data-termynal] button.code-copay-btn.clipboard {
        visibility: unset;
        color: var(--theme-color) !important;
        background: var(--color-bg) !important;
        position: absolute;
        left: -25px;
        top: 9px;
    }
    
    /* 行代码间距 */
    [data-line-number] {
        padding-right: 15px;
    }
    
    /* termynal代码 line-height */
    [data-termynal] td.hljs-ln-line.hljs-ln-code {
        line-height: unset;
    
    }
    
    /* 进度条字符间隔 */
    [data-termynal] span[data-ty="progress"] {
        letter-spacing: -1px;
    }
    
    /* ................ 自定义Termynal样式 结束 ................. */
    
    /* 隐藏订阅信息中的昵称 */
    #sideBar #profile_block a:first-child {
        display: none;
    }
    
    /* 文章标题样式 */
    #cb_post_title_url {
        word-break: break-word;
        color: var(--text-color);
        word-wrap: break-word;
        padding: 0;
        line-height: 1.5;
        font-weight: bold;
        text-rendering: optimizelegibility;
        font-size: 3rem;
        margin: 0.7em 0;
        font-family: "Noto Sans CJK SC", "Helvetica Neue", Helvetica, Tahoma, Arial, "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", "WenQuanYi Micro Hei", Heiti, "黑体", sans-serif;
        text-align: center;
    }
    
    /* 复制代码样式 */
    .code {
        position: relative;
        display: inline-block;
    }
    
    /* 一般代码的复制 btn */
    .code-copay-btn {
        color: var(--theme-color);
        position: absolute;
        right: 10px;
        top: 10px;
        border: none;
        background: var(--hl-background);
    
    }
    
    /* 复制自带的 btn 隐藏 */
    .cnb-code-toolbar span.cnb-code-toolbar-item {
        display: none !important;
        color: var(--theme-color);
        background: var(--hl-background);
    }
    
    /* 活动目录样式 */
    .esa-contents .active-catalog {
        border-left: var(--theme-color) 4px solid;
        border-radius: 4px;
        padding-left: 7px;
    }
    
    
    /* 代码: `code` */
    .cnblogs-markdown :not(pre,div,td) > code, .blogpost-body :not(pre,div,td) > code {
        background-color: var(--code-bg-color) !important;
    }
    
    /* header title 样式 */
    a#Header1_HeaderTitle pre {
        color: var(--text-color);
        background: none;
        font-size: 1px;
        margin-top: -25px;
        font-weight: 1000;
    }
    

    博客侧边栏公告

    <script>
        window.$silence = {
        avatar: 'https://blog-static.cnblogs.com/files/lczmx/code-green.ico',
        favicon: 'https://blog-static.cnblogs.com/files/lczmx/code.ico',
        github: 'https://github.com/lczmx/',
        defaultTheme: 'c',
        defaultMode: 'light',
        hljsln: false,
         catalog: {
            enable: true,
            index: true,
            active: false,
            levels: ['h1', 'h2', 'h3']
        },
        signature: {
            enable: true,
            author: "忞翛",
            license: ['署名-非商业性使用-相同方式共享 4.0 国际', 'https://creativecommons.org/licenses/by-nc-sa/4.0/'],
            remark: '欢迎各位大佬评论交流。可以的话,不妨点一下推荐。</div>',
        },
         navbars: [
            {
                title: '博客园',
                url: 'https://www.cnblogs.com/'
            }, 
            {
                title: '首页',
                url: 'https://www.cnblogs.com/lczmx/'
            }, 
            {
                title: '随笔',
                url: 'https://www.cnblogs.com/lczmx/p/'
            },
            {
                title: '更多',
                chilren: [ 
                     {
                    title: "个人收藏",
                    target: "_blank",
                    url: "https://wz.cnblogs.com/"
                },
                {
                    title: '我的标签',
                    target: '_blank',
                    url: 'https://www.cnblogs.com/lczmx/tag/',
                }, 
                 {
                    title: '我的笔记',
                    target: '_blank',
                    url: 'https://gitee.com/lczmx/Note/',
                }, 
                {
                    title: 'Github',
                    target: '_blank',
                    url: 'https://github.com/lczmx',
                },
                ]
            }
        ],
        };
    
    </script>
    
    <link rel="stylesheet" href="https://blog-static.cnblogs.com/files/lczmx/termynal.css">
    <script src="https://blog-static.cnblogs.com/files/lczmx/clipboard.min.js"></script>
    <script src="https://blog-static.cnblogs.com/files/lczmx/silence.min.js"></script>
    <script src="https://blog-static.cnblogs.com/files/lczmx/termynal.js"></script>
    <script src="https://blog-static.cnblogs.com/files/lczmx/figlet.js"></script>
    

    页首HTML代码

    <div class="light-loading">
       <div class="box">
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
       </div>    
    </div>
    

    页脚HTML代码

    <script>
        // 颜色列表
        window.$themeColor = {
            a: "#2D8CF0",
            b: "#FA7298",
            c: "#42B983",
            d: "#607D8B",
            e: "#5E72E4",
            f: "#FF9700",
            g: "#FF5722",
            h: "#009688",
            i: "#673BB7",
            j: "#906f61",
        };
        // 用于存放setTimeOut对象, 用于取消 setTimeOut
        window.$tasks = []
        // 用于存放termynal对象
        window.$termynals = []
    
    
        $(document).ready(function () {
            repeatExec(initColor);
            repeatExec(initExtend);
            repeatExec(initHtmlTitle);
            repeatExec(bindCleanAnimate);
        });
    
    
        window.onload = function () {
            try {
                repeatExec(setupTermynal);
                repeatExec(bindChangeColorBtn);
                repeatExec(bindClipboard);
                repeatExec(initColor);
                repeatExec(initCatalog);
                repeatExec(initAEleScroll);
                repeatExec(initPathToA);
                repeatExec(initAsciiText);
    
            } catch (e) {
                console.log(e)
            } finally {
                // 无论如何都要去除loading
                hideLoading();
            }
        }
    
        function repeatExec(func, timeout = 200, ...args) {
            /* 对于 为为及时引入的情况 重复执行 */
            try {
                func(...args);
            } catch (e) {
                console.log("[repeatExec] error", e)
                setTimeout(function () {
                    console.log("[repeatExec] redo", func.name);
                    repeatExec(func, timeout, ...args);
                }, timeout)
    
            }
        }
    
        function hideLoading() {
            /* 去除loading 页面 */
            $(".light-loading, .dark-loading").fadeOut()
        }
    
        function initAsciiText() {
            /* 初始话 Ascii 字符 */
            let chars = "Lczmx Blog";
            // 替换 文章Header
            let headerTitleSelector = "#Header1_HeaderTitle";
            genAsciiText($(headerTitleSelector).html(), headerTitleSelector, "SantaClara");
            genAsciiText(chars, null);
    
        }
    
        function genAsciiText(inputText, targetSelector, fontName, fontPath, hLayout, vLayout,) {
            /* 生成Ascii字符
            * Santa Clara
            *  需要 figlet.js
            * */
            if (!fontPath) {
                fontPath = "https://blog-static.cnblogs.com/files/lczmx"
            }
            // 字体路径
            figlet.defaults({fontPath: fontPath});
    
            // 字体名
            if (!fontName) {
                // 大的字符
                fontName = "Crazy";
            }
    
            // 必需参数
            if (!inputText) {
                console.log('[genAsciiText] genAsciiText missing required arguments');
                return;
            }
    
            // 水平布局
            // 选项: "default" "full" "fitted" "controlled smushing" "universal smushing"
            if (!hLayout) {
                hLayout = "fitted";
            }
    
            // 垂直布局
            // 选项: "default" "full" "fitted" "controlled smushing" "universal smushing"
            if (!vLayout) {
                vLayout = "full";
            }
    
    
            figlet(inputText, {
                font: fontName,
                horizontalLayout: hLayout,
                verticalLayout: vLayout
            }, function (err, text) {
                if (err) {
                    console.log('[genAsciiText] genAsciiText something went wrong...');
                    console.dir(err);
                    return;
                }
                if (!targetSelector) {
                    console.log(text)
    
                } else {
                    $(targetSelector).html("<pre>" + text + "</pre>");
                }
            });
    
    
        }
    
        function initHtmlTitle() {
            /* 修改浏览器的标题, 去除 博客园 后缀 */
            let titleEle = $("title")
            let title = titleEle.html().split("-");
            let temp = title.slice(0, title.length - 1);
            let s = temp.join("-");
            s = s.trim();
            titleEle.html(s);
            console.log("[initHtmlTitle] change html title:", s);
        }
    
        function cleanAnimate() {
            /* 取消timeOut 及 停止动画的正式实现 */
            $.each(window.$tasks, (index, value) => {
                console.log("[cleanAnimate] break animate and clear timeout task");
                clearTimeout(value);
            })
            $('html,body').stop();
            // 清空
            window.$tasks.length = 0
        }
    
        function bindCleanAnimate() {
            /* 绑定打断动画事件 */
    
            // 滚轮打断
            window.onmousewheel = cleanAnimate;
    
            // 绑定点击目录 a标签 等
            // !!! 见 initAEleScroll()
    
            // 手机滑动打断
            window.ontouchmove = cleanAnimate;
    
        }
    
        function addCatalogCss(titleEle) {
            /* 修改第一次加载时 的 目录的样式 */
            if (!titleEle) {
                let catalogLevels = window.$silence.catalog.levels;
                let catalogEle = []
                catalogLevels.forEach((value) => {
                    $("#cnblogs_post_body " + value).each(function () {
                        catalogEle.push(this)
                    })
                })
                // 默认第一个标题
                titleEle = catalogEle[0];
            }
            // 跳过没有标题的页面
            if (!titleEle) {
                return
            }
            let tagName = $(titleEle).prop("tagName").toLowerCase();
            let eleID = $(titleEle).attr("id");
            console.log("[addCatalogCss] change catalog to", eleID);
    
            $(".esa-contents li").each(function () {
                let aEle = $(this).children("a:first")
                let href = aEle.attr("href")
    
                if (this.classList.contains(tagName) && href === eleID) {
                    $(this).addClass("active-catalog");
                    // 修改目录对应位置在中间位置
                    $(".esa-contents")[0].scrollTop = this.offsetTop - Math.round($(window).height() / 2);
                } else {
                    $(this).removeClass("active-catalog")
                }
            })
        }
    
        function initPathToA() {
            /* 刷新时 根据path 跳转到对应锚点*/
            let href = location.hash.split("?")[0];
            if (href) {
                let titleID = decodeURI(href);
                let titleEle = $(titleID);
                if (titleEle[0]) {
                    // 有对应id
                    // 跳转到对应位置
                    scrollTo(titleEle);
                    addCatalogCss(titleEle);
    
                } else {
                    $('html,body').animate({
                        // 防止目录不能识别
                        scrollTop: 5
                    }, 200);
                    // 添加第一个目录的样式
                    addCatalogCss()
                }
            } else {
                $('html,body').animate({
                    // 防止目录不能识别
                    scrollTop: 5
                }, 200);
                // 添加第一个目录的样式
                addCatalogCss()
            }
        }
    
        function initExtend() {
            /* 插入 jquery扩展 */
    
            // 禁止子元素滚动触发父元素滚动
            $.fn.scrollUnique = function () {
                return $(this).each(function () {
                    var eventType = 'mousewheel';
                    if (document.mozHidden !== undefined) {
                        eventType = 'DOMMouseScroll';
                    }
                    $(this).on(eventType, function (event) {
                        // 一些数据
                        var scrollTop = this.scrollTop,
                            scrollHeight = this.scrollHeight,
                            height = this.clientHeight;
    
                        var delta = (event.originalEvent.wheelDelta) ? event.originalEvent.wheelDelta : -(event.originalEvent.detail || 0);
    
                        if ((delta > 0 && scrollTop <= delta) || (delta < 0 && scrollHeight - height - scrollTop <= -1 * delta)) {
                            // IE浏览器下滚动会跨越边界直接影响父级滚动,因此,临界时候手动边界滚动定位
                            this.scrollTop = delta > 0 ? 0 : scrollHeight;
                            // 向上滚 || 向下滚
                            event.preventDefault();
                        }
                    });
                });
            };
    
        }
    
        function initCatalog() {
            /* 初始化 并 监听文本 改变目录 */
            let catalogLevels = window.$silence.catalog.levels;
            let catalogEle = []
            catalogLevels.forEach((value) => {
                $("#cnblogs_post_body " + value).each(function () {
                    catalogEle.push(this)
                })
            })
    
            // 没有目录禁用
            if (!catalogEle) {
                return
            }
            // 禁止子元素滚动触发父元素滚动
            $(".esa-contents").scrollUnique();
    
            $(window).scroll(function () {
                let minTop = 10000;
                let nowCatalogEle = catalogEle[0];
                // 滚动条不是很稳
                // changelog: 已经使用initAEleScroll函数完善
    
                $.each(catalogEle, function (i, ele) {
                    // 获取top最小的值
                    let top = Math.round(ele.getBoundingClientRect().top);
                    if (top > 0) {
                        return true
                    }
                    top = Math.abs(top)
                    if (minTop > top) {
                        minTop = top;
                        nowCatalogEle = ele
                    }
                })
    
                // 没有标题禁用
                if (!nowCatalogEle) {
                    return
                }
                let tagName = $(nowCatalogEle).prop("tagName").toLowerCase();
                let eleID = $(nowCatalogEle).attr("id");
                // 修改目录
                eleID = "#" + eleID
                $(".esa-contents li").each(function () {
                    let aEle = $(this).children("a:first")
                    let href = aEle.attr("href")
    
                    if (this.classList.contains(tagName) && href === eleID) {
                        $(this).addClass("active-catalog");
                        // 修改滚动条
                        // e.scrollTop = p.offsetTop
                        // Math.round($(window).height() / 2)
                        $(".esa-contents")[0].scrollTop = this.offsetTop - Math.round($(window).height() / 2);
                    } else {
                        $(this).removeClass("active-catalog")
                    }
                })
            })
        }
    
        function bindChangeColorBtn() {
            /* 绑定修改主题btn主题 */
            // 颜色 动态改变
            $(".themes button").click(function (e) {
                let theme = $(this).attr("data-theme");
                let color = window.$themeColor[theme];
                changeColor(color)
            });
        }
    
        function changeColor(color) {
            /* 修改该主题颜色 */
            let defaultColor = "#42B983"
    
            if (!color) {
                color = defaultColor
            }
            // 一级标题颜色
            $("#cnblogs_post_body h1").each(function () {
                if ($(this).attr("class") === "story_title") {
                } else {
                    $(this).css({
                        "margin-left": "-10px", "display": "inline-block",
                        "width": "auto", "height": "40px", "background-color": color,
                        "border-bottom-right-radius": "100px", "color": "rgba(255, 255, 255, 1)",
                        "padding-right": "30px", "padding-left": "30px", "line-height": "40px", "font-size": "16px"
                    })
                }
            });
            // 二级标题下划线
            $("#cnblogs_post_body h2").each(function () {
                $(this).css(
                    {"border-bottom": "3px solid " + color})
    
            });
    
            // 三级标题下划线
            $("#cnblogs_post_body h3").each(function () {
                $(this).css(
                    {"border-bottom": "1px solid " + color})
    
            });
            // 主页个文章标题下划线
            $(".postSeparator,.day").each(function () {
                $(this).css(
                    {"border-bottom": "1px solid " + color})
    
            });
            // 复制btn
            $(".code-copay-btn").css("color", color)
    
        }
    
        function initColor() {
            // 获取颜色
            // 当前主题
            let theme = sessionStorage.getItem("silence-theme-lczmx")
            // 当前 亮or暗
            let mode = sessionStorage.getItem("silence-mode-lczmx")
            let color = window.$themeColor[theme];
    
            changeColor(color);
        }
    
        function bindClipboard() {
            /*
            * 绑定 复制按钮
            * */
            // 使用termynal的类名称
            let clipboard = new ClipboardJS(".clipboard")
            clipboard.on('success', function (e) {
                // 已经复制 修改内容
                let copyIconEle = $('<i class="fa fa-clone" aria-hidden="true"></i>')
                let successIconEle = $('<i class="fa fa-check" aria-hidden="true"></i>')
                $(e.trigger).html(successIconEle)
                setTimeout(function () {
                    // 重新 修复成copy
                    $(e.trigger).html(copyIconEle)
                }, 2000)
    
                e.clearSelection();
            });
    
        }
    
        function generateMixed(n) {
            /*
            生成随机数
            */
            const chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
                'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
            let res = "";
            for (let i = 0; i < n; i++) {
                let id = Math.floor(Math.random() * 36);
                res += chars[id];
            }
            return res;
        }
    
        function changeAttr() {
            /*
          * 修改原code的span属性
          * */
            // 要绑定的id
            let bindCodeEleId = []
            window.$minHeightCss = {}
    
            // 进度条配置
            let progressBars = {"pip": [$('<span data-ty="progress" data-ty-progressChar="█"></span>')],}
            // config为使用termynal的语言
            let config = ["language-python-repl", "language-shell"]
            let flag = false;   // 是否已经匹配了
            $("pre code").each((index, ele) => {
                flag = false
                config.forEach((language, i) => {
                    if (ele.classList.contains(language)) {
                        flag = true // 已经匹配
    
                        //$(ele).find("td").css("padding", 0);
    
                        // ele => code tag
                        // 可以替换
                        // 添加data-termynal属性
                        let codeId = "code" + generateMixed(10)
                        let divEle = $('<div data-termynaldata-ty-typeDelay="40" data-ty-lineDelay="700">')
                        // 添加min-height
                        // 没有空时110px
                        let minHeight = ele.clientHeight + 120
                        window.$minHeightCss[codeId] = minHeight
                        divEle.css("min-height", minHeight)
                        divEle.attr("id", codeId).attr("class", "termy")
                        bindCodeEleId.push("#" + codeId)
                        // 为文本添加span
                        $(ele).find(".hljs-ln-code").each((i, lineCodeEle) => {
                            // if tag 在lineEle
                            // 为代码
                            // prompt前缀
    
                            // 一行的所有span的tag
                            let allSpanEle = $(lineCodeEle).children("span")
    
                            // let spanEle = $("<span>").text(content).attr("data-ty", "")
    
                            if (allSpanEle[0]) {
                                // 代码span
                                let prompt = $(allSpanEle).first().text()
                                let content = $(allSpanEle).last().text()
                                $(allSpanEle).last().attr("data-ty", "input").attr("data-ty-prompt", prompt);
    
                                // 为命令行提供复制按钮
                                divEle.hover(function () {
                                    // 鼠标进入
                                    $(this).find('span[data-ty="input"]').mouseenter(bindTermynalCopyBtn)
    
                                }, function () {
                                    // 鼠标离开
                                    // 当前code的全部btn hide
                                    $(this).find(".clipboard").hide()
                                })
    
                                // 需要删除prompt, 否则重复
                                $(allSpanEle).first().remove();
    
                                let progressCMD = content.split(" ").filter(item => item !== '')[0];
                                let progressEle = progressBars[progressCMD];
                                if (progressEle) {
                                    // 添加进度条
                                    $(allSpanEle).after(progressEle)
                                    // 一行进度条 大约30px
                                    window.$minHeightCss[codeId] += 30
                                }
                            } else {
                                // 没有命令
                                $(lineCodeEle).attr("data-ty", "")
    
                            }
    
                        })
    
                        $(divEle).append($(ele).clone())
                        $(ele).after(divEle)
                        $(ele).remove()
    
                    }
    
                })
                if (!flag) {
                    // data-termynal添加属性
                    // 三个点
                    $(ele).attr("data-code", "")
                    // 添加padding
                    $(ele).find("table").css("padding-top", "20px");
                    bindCopyBtn($(ele))
                }
    
    
            })
    
            return bindCodeEleId
        }
    
        function bindTermynalCopyBtn() {
            /* 为Termynal代码添加复制按钮 */
            let e = $(this);
            let cmdID = e.attr('id');
            let copyBtn = e.find(".clipboard");
            if (!cmdID) {
                // 为 span 标签添加id
                cmdID = "cmd-" + generateMixed(10);
                e.attr("id", cmdID);
            }
            if (!copyBtn[0]) {
                let copyIconEle = $('<i class="fa fa-clone" aria-hidden="true"></i>');
                copyBtn = $('<button type="button" class="code-copay-btn hljs-comment clipboard"></button>')
                copyBtn.append(copyIconEle)
                copyBtn.attr('data-clipboard-target', '#' + cmdID).attr('data-clipboard-action', "copy").attr("aria-label", "复制代码")
                e.append(copyBtn)
            }
            // 当前code的全部btn hide
            e.parents('div[data-termynal]').find(".clipboard").hide()
    
            // show 当前 btn
            copyBtn.show()
        }
    
        function bindCopyBtn(e) {
            /* 为普通代码添加复制按钮 */
    
            let copyBtn = $('<button type="button" class="code-copay-btn hljs-comment clipboard"></button>')
            let boxID = "code-" + generateMixed(10)
            let copyIconEle = $('<i class="fa fa-clone" aria-hidden="true"></i>')
            copyBtn.append(copyIconEle)
            e.attr("id", boxID);
            e.addClass("code")
            copyBtn.attr('data-clipboard-target', '#' + boxID + " table").attr('data-clipboard-action', "copy").attr("aria-label", "复制代码")
            e.append(copyBtn)
            copyBtn.hide()
            // 绑定悬浮显示
            e.mouseenter(function () {
                copyBtn.show()
            })
            // 绑定离开, 不显示
            e.mouseleave(function () {
                copyBtn.hide()
            })
        }
    
        function newTermynal(ele, config) {
            /* 不停 添加termynal */
            console.log("[newTermynal] new termynal")
            const termynal = new Termynal(ele, config);
            window.$termynals.push(termynal)
        }
    
        function setupTermynal() {
            /* 启动termynal
            *  绑定所有changeAttr函数返回的Element
            *  */
    
            let bindCodeEleId = changeAttr();
    
            // 自定义配置termynal
            let termynalConfig = {
                //lineData: useLines,
                noInit: true,
                lineDelay: 500
            }
            bindCodeEleId.forEach((v, i) => {
                // 内部push termynals
                repeatExec(newTermynal, 200, v, termynalConfig)
            });
    
            // 监听开始时间
            function loadVisibleTermynals() {
                window.$termynals = window.$termynals.filter(termynal => {
                    if (termynal.container.getBoundingClientRect().top - innerHeight <= 0) {
                        termynal.init();
                        setMinHeight(termynal.container)
                        return false;
                    }
                    return true;
                });
            }
    
            window.addEventListener("scroll", loadVisibleTermynals);
            loadVisibleTermynals();
        }
    
        function setMinHeight(codeEle) {
            /* 为termynal 设置min-height*/
            let codeID = $(codeEle).attr("id");
            let height = window.$minHeightCss[codeID];
            $(codeEle).css("min-height", height);
            console.log(`[setMinHeight] codeID: [${codeID}] change min-height: ${height}`)
    
        }
    
        function scrollTo(titleEle, scrollSpeed, replySpeed, scrollTimeOut) {
            /* 平滑跳转到 对应位置 (titleEle)  */
            // scrollSpeed 滑动到titleEle的时间, 未激活termynal
            // replySpeed 滑动到重新排版的titleEle的时间, 已激活termynal
            // 1. 先激活termynal
            if (!scrollSpeed) {
                // 激活termynal的时间
                // 即 滑动的时间
                scrollSpeed = 1
            }
            if (!replySpeed) {
                scrollSpeed = 200
    
            }
            if (!scrollTimeOut) {
                scrollTimeOut = 200
            }
            $('html,body').animate({
                // 防止目录不能识别 距离 + 5
                scrollTop: titleEle.offset().top + 5
            }, scrollSpeed);
    
            // 2. 修改了对应的min-height
            //    然后 再次跳转
            let task = setTimeout(function () {
                $('html,body').animate({
                    // 防止目录不能识别
                    scrollTop: titleEle.offset().top + 5
                }, scrollSpeed);
            }, scrollTimeOut)
    
            // 假如 在的执行过程中 可以被打断
            window.$tasks.push(task)
        }
    
        function initAEleScroll() {
            /* 绑定事件, 使锚点 使用这个函数 并 修改URL
            * */
            $("a[href^='#']").click(function () {
                // 禁用 锚点a标签点击
                // 为目录li标签绑定click事件, 让目录可以准确滚动
    
                // 触发点击打断之前的事件
                cleanAnimate();
    
                let href = $(this).attr("href");
                let target = $(href);
                $("a[href^='#']").stop(true); //清除元素的所有动画, 防止卡顿
                console.log("[initAEleScroll] pass href", href);
    
                if (target[0]) {
                    scrollTo(target, 100, 200, 1000)
                    // 修改浏览器URL
                    window.history.pushState(null, null, href)
    
                    return false
                }
                // 在文档中找不到, 就返回true, 默认跳转
                return true
            });
        }
    </script>
    

    文件

    文件位于:博客园主题

    本文来自博客园,作者:403·Forbidden,转载请注明原文链接:https://www.cnblogs.com/lczmx/p/15669379.html

  • 相关阅读:
    Verdi 看波形常用快捷操作
    Tensorflow系列——Saver的用法
    Verilog-分频器
    (原创)列主元Gauss消去法的通用程序
    冒泡排序算法
    ADC 与实际电压值的关系
    直流耦合 交流耦合 耦合
    当前不会命中断点,源代码与原始版本不同
    示波器触发
    在头文件#pragma comment(lib,"glaux.lib");编译器提示waring C4081: 应输入“newline“
  • 原文地址:https://www.cnblogs.com/lczmx/p/15669379.html
Copyright © 2020-2023  润新知