diff --git a/assets/css/_common/scaffolding/highlight/copy-code.scss b/assets/css/_common/scaffolding/highlight/copy-code.scss index bafac01..23c14c5 100644 --- a/assets/css/_common/scaffolding/highlight/copy-code.scss +++ b/assets/css/_common/scaffolding/highlight/copy-code.scss @@ -5,31 +5,130 @@ margin-bottom: 26px; line-height: 1.25; - //TODO Need fixed the copy button show position. - div:first-child { - overflow-x: auto; - } - - pre { + > .chroma { position: relative; - overflow-x: auto; - padding: 6px; - overflow-wrap: break-word; - line-break: anywhere; + + pre { + padding: .45rem 0; + } + + .lntd:first-child { + min-width: 1.6rem; + text-align: right; + background-color: #272822; + + a { + border-bottom: none; + } + } + + .lntd:last-child { + width: 100%; + + pre { + overflow-wrap: break-word; + white-space: pre-wrap; + line-break: anywhere; + word-break: break-all; + overflow-x: auto; + } + } + + > code > span { + overflow-wrap: break-word; + white-space: pre-wrap; + line-break: anywhere; + word-break: break-all; + } } - /* table tbody tr { - //TODO Fixed the too long code line over - // layout background color. - background: #272822; - }*/ - - /* pre > code span { - white-space: break-spaces; - overflow: hidden; - word-break: break-all; - word-wrap: break-word; - } */ + /** monokai highlight style **/ + /* Background */ .bg { color:#f8f8f2;background-color:#272822; } + /* PreWrapper */ .chroma { color:#f8f8f2;background-color:#272822; } + /* Other */ .chroma .x { } + /* Error */ .chroma .err { color:#960050;background-color:#1e0010 } + /* CodeLine */ .chroma .cl { } + /* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit } + /* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; } + /* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; } + /* LineHighlight */ .chroma .hl { background-color:#3c3d38 } + /* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } + /* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } + /* Line */ .chroma .line { display:flex; } + /* Keyword */ .chroma .k { color:#66d9ef } + /* KeywordConstant */ .chroma .kc { color:#66d9ef } + /* KeywordDeclaration */ .chroma .kd { color:#66d9ef } + /* KeywordNamespace */ .chroma .kn { color:#f92672 } + /* KeywordPseudo */ .chroma .kp { color:#66d9ef } + /* KeywordReserved */ .chroma .kr { color:#66d9ef } + /* KeywordType */ .chroma .kt { color:#66d9ef } + /* Name */ .chroma .n { } + /* NameAttribute */ .chroma .na { color:#a6e22e } + /* NameBuiltin */ .chroma .nb { } + /* NameBuiltinPseudo */ .chroma .bp { } + /* NameClass */ .chroma .nc { color:#a6e22e } + /* NameConstant */ .chroma .no { color:#66d9ef } + /* NameDecorator */ .chroma .nd { color:#a6e22e } + /* NameEntity */ .chroma .ni { } + /* NameException */ .chroma .ne { color:#a6e22e } + /* NameFunction */ .chroma .nf { color:#a6e22e } + /* NameFunctionMagic */ .chroma .fm { } + /* NameLabel */ .chroma .nl { } + /* NameNamespace */ .chroma .nn { } + /* NameOther */ .chroma .nx { color:#a6e22e } + /* NameProperty */ .chroma .py { } + /* NameTag */ .chroma .nt { color:#f92672 } + /* NameVariable */ .chroma .nv { } + /* NameVariableClass */ .chroma .vc { } + /* NameVariableGlobal */ .chroma .vg { } + /* NameVariableInstance */ .chroma .vi { } + /* NameVariableMagic */ .chroma .vm { } + /* Literal */ .chroma .l { color:#ae81ff } + /* LiteralDate */ .chroma .ld { color:#e6db74 } + /* LiteralString */ .chroma .s { color:#e6db74 } + /* LiteralStringAffix */ .chroma .sa { color:#e6db74 } + /* LiteralStringBacktick */ .chroma .sb { color:#e6db74 } + /* LiteralStringChar */ .chroma .sc { color:#e6db74 } + /* LiteralStringDelimiter */ .chroma .dl { color:#e6db74 } + /* LiteralStringDoc */ .chroma .sd { color:#e6db74 } + /* LiteralStringDouble */ .chroma .s2 { color:#e6db74 } + /* LiteralStringEscape */ .chroma .se { color:#ae81ff } + /* LiteralStringHeredoc */ .chroma .sh { color:#e6db74 } + /* LiteralStringInterpol */ .chroma .si { color:#e6db74 } + /* LiteralStringOther */ .chroma .sx { color:#e6db74 } + /* LiteralStringRegex */ .chroma .sr { color:#e6db74 } + /* LiteralStringSingle */ .chroma .s1 { color:#e6db74 } + /* LiteralStringSymbol */ .chroma .ss { color:#e6db74 } + /* LiteralNumber */ .chroma .m { color:#ae81ff } + /* LiteralNumberBin */ .chroma .mb { color:#ae81ff } + /* LiteralNumberFloat */ .chroma .mf { color:#ae81ff } + /* LiteralNumberHex */ .chroma .mh { color:#ae81ff } + /* LiteralNumberInteger */ .chroma .mi { color:#ae81ff } + /* LiteralNumberIntegerLong */ .chroma .il { color:#ae81ff } + /* LiteralNumberOct */ .chroma .mo { color:#ae81ff } + /* Operator */ .chroma .o { color:#f92672 } + /* OperatorWord */ .chroma .ow { color:#f92672 } + /* Punctuation */ .chroma .p { } + /* Comment */ .chroma .c { color:#75715e } + /* CommentHashbang */ .chroma .ch { color:#75715e } + /* CommentMultiline */ .chroma .cm { color:#75715e } + /* CommentSingle */ .chroma .c1 { color:#75715e } + /* CommentSpecial */ .chroma .cs { color:#75715e } + /* CommentPreproc */ .chroma .cp { color:#75715e } + /* CommentPreprocFile */ .chroma .cpf { color:#75715e } + /* Generic */ .chroma .g { } + /* GenericDeleted */ .chroma .gd { color:#f92672 } + /* GenericEmph */ .chroma .ge { font-style:italic } + /* GenericError */ .chroma .gr { } + /* GenericHeading */ .chroma .gh { } + /* GenericInserted */ .chroma .gi { color:#a6e22e } + /* GenericOutput */ .chroma .go { } + /* GenericPrompt */ .chroma .gp { } + /* GenericStrong */ .chroma .gs { font-weight:bold } + /* GenericSubheading */ .chroma .gu { color:#75715e } + /* GenericTraceback */ .chroma .gt { } + /* GenericUnderline */ .chroma .gl { } + /* TextWhitespace */ .chroma .w { } } @if $codeblock_copy_btn_enable { @@ -76,17 +175,15 @@ box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4); padding-top: 30px; - .table-container { - border-radius: 0 0 5px 5px; - } - - &::before { - background: #fc625d; - box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b; - margin-top: -20px; - margin-left: 10px; - position: absolute; - @include round-icon(12px); - } + > div { + &::before { + background: #fc625d; + box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b; + margin-top: -20px; + margin-left: 10px; + position: absolute; + @include round-icon(12px); + } + } } } \ No newline at end of file diff --git a/assets/js/3rd/others/clipboard.js b/assets/js/3rd/others/clipboard.js index 8862e2b..02985cc 100644 --- a/assets/js/3rd/others/clipboard.js +++ b/assets/js/3rd/others/clipboard.js @@ -1,37 +1,35 @@ /* clipboard plugin */ -NexT.plugins.others.clipboard = function() { +NexT.plugins.others.clipboard = function () { const clipboard_js = NexT.utils.getCDNResource(NexT.CONFIG.page.clipboard.js); - NexT.utils.getScript(clipboard_js, function(){ + NexT.utils.getScript(clipboard_js, function () { let figure = document.querySelectorAll('.highlight pre'); if (figure.length === 0 || !NexT.CONFIG.copybtn) return; + + /** Add copy button DOM. **/ figure.forEach(element => { - let cn = element.querySelector('code').className; + let cn = element.querySelector('code').className; if (cn === '') return; - element.children[0].insertAdjacentHTML('beforebegin', '