Clipboard.jsを使用して.container
の内容をユーザのクリップボードにコピーしています。私はこの.container
の::selection
/::-moz-selection
と書式を設定しました。子要素はすべて、クリップボードへのコピー中に.select()
です。:: before疑似要素を無視する:: select疑似セレクタ
::before
(おそらくは::after
)の擬似要素を除いては素晴らしいです。 ::before
多かれ少なかれ私のCSS宣言を無視します。 ::before
のcounter
CSSプロパティをcontent
として使用しています。
問題を公開しているスニペットです。私は問題を公開する必要はないので、JSは含まれていません。コードブロックをクリックしてドラッグすると、::before
疑似要素を除いて、::selection
にコンテンツがハイライトされていないことがわかります。
::selection
の::before
疑似要素が表示されないようにどのように表示することができますか?
編集:これはSafari/Chrome(おそらく-webkit-
号)のようです。ちょっとした孤立テストをした後にFirefoxで起こることはありません。
.html.container {
\t position: relative;
\t display: block;
\t padding: .9375rem .9375rem .9375rem 2.5rem;
\t margin-bottom: 20px;
\t background: rgba(38, 38, 38, .08);
\t counter-reset: lines;
}
.html.container::before {
\t content: '';
\t position: absolute;
\t top: 0;
left: 0;
\t width: 5px;
\t height: 100%;
\t background: grey;
}
.html.syntax {
\t display: block;
\t border-left: .0625rem solid black;
}
.html.syntax *::selection {
\t background: transparent;
\t color: inherit;
}
.html.syntax *::-moz-selection {
\t background: transparent;
\t color: inherit;
}
.html.line::before {
\t content: counter(lines);
\t position: absolute;
\t left: 5px;
\t width: 25px;
color: grey;
\t text-align: right;
\t transition: all .25s ease;
}
.html.line {
\t display: block;
\t padding-left: 15;
\t counter-increment: lines;
}
.html.line::before::selection {
\t background: transparent;
\t color: inherit;
}
.html.syntax::before::-moz-selection {
\t background: transparent;
\t color: inherit;
}
<div class="js html container" data-clipboard-target="#\<h1\>">
\t <code class="html syntax" id="<h1>">
\t \t <span class="html line">
\t \t \t <span class="html comment"><!-- Heading level 1 --></span>
\t \t </span>
\t \t <span class="html line">
\t \t \t <<span class="html tag">h1</span>>Heading level 1<<span class="html tag">/h1</span>>
\t \t </span>
\t </code>
</div>
ありがとう:など
REFを訪問しました。機能的にはこれは私が望むのとまったく同じですが、 ':: before'の内容はクリップボードにコピーされません。それは素晴らしいです。しかし、UX/Design/Aestheticの目的のために、 ':: before'擬似要素のハイライトを削除したかったのです。セレクタで擬似要素を1つしか使用できないことを思い出してくれてありがとう。私は彼らがお互いを無視しないと思っていただろう。 – danMad
ありがとうございます。これは実行可能なソリューションのように見えます。あなたの例では、 'data-pseudo-content =" 4 "'が 'span.html.tag'に適用されている理由は何ですか?私は解決策のその部分に従いません。 – danMad
自分のミスタイプ:D – jonnow