CSSを使用してテキストを挿入する


207

私はCSSに比較的慣れていないので、CSSを使用してテキストのスタイルとフォーマットを変更しました。

これを使用して、次に示すようにテキストを挿入します。

<span class="OwnerJoe">reconcile all entries</span>

私はそれを次のように見せることができると思います:

ジョーのタスク:すべてのエントリを調整する

つまり、単に「Owner Joe」クラスであるJoe's Task:ために、テキストを表示したいのです。

私は次のようなコードでそれを行うことができます:

<span class="OwnerJoe">Joe's Task:</span> reconcile all entries.

しかし、クラスとテキストの両方を指定することは、非常に冗長に思えます。

私が探していることをすることは可能ですか?

編集 1つのアイデアは<li>、「箇条書き」が「Joe's Task」というテキストであるListItemとして設定することです。さまざまな箇条書きのスタイルを設定する方法の例や、箇条書きの画像も表示されます。リストの箇条書きに小さなテキストブロックを使用することは可能ですか?


1
<li>のアイデアは良い習慣ではありません。これが本当に必要な場合は、代わりにテンプレート言語を調べてください。
ゲーリー、

1
CSS3:beforeまたは:after疑似要素を使用するように聞こえますが、実際には冗長性をCSSランドに移動しているだけです(OwnerJoe、OwnerJaneなどのCSSステートメントを追加する必要があるため)
Matt Beckman

2
@マットベックマン:それは私には問題ありません。ユーザーごとにCSSブロックを簡単に定義できます。私の場合、HTMLでそれを何度も繰り返すのは過度に思えます。
abelenky 2010

1
幅広い聴衆のためにこれをより実際的に使用することはlabel.required:before {content: "* ";}、おそらく必須フィールドの前にアスタリスクを追加することだと思い ます。
Patrick

回答:


317

ですが、CSS2対応ブラウザー(すべての主要ブラウザー、IE8 +)が必要です。

.OwnerJoe:before {
  content: "Joe's Task:";
}

しかし、私はむしろこのためにJavaScriptを使用することをお勧めします。jQueryの場合:

$('.OwnerJoe').each(function() {
  $(this).before($('<span>').text("Joe's Task: "));
});

4
コロンの後にスペースを入れます。
system PAUSE 2010

7
最初のテストでは、コンテンツプロパティが適切に機能することが示されています。他の皆がそれを行うことができないと言うとき、答えを見つけることについておめでとう。:)
abelenky 2010

8
古いIEをカバーするために、条件付きでcode.google.com/p/ie7-jsを含めることができます。これにより、CSSをすべてのブラウザーで同じままにすることができます。これは、標準に近いjQueryに代わるものです。
system PAUSE 2010

14
なぜJavaScriptの使用を勧めるのですか?
Rikki

興味深い:例えば、一つまたは二つのコロンで動作するように思える.OwnerJoe:before.OwnerJoe::before
ミスター・ケネディ

40

誰もが気に入っているように思われるjQueryを使用した答えには大きな欠陥があります。Martin Hansenが正しい考えを持っていると思いdata-*ます。それはHTML5 属性を使用することです。また、アポストロフィを正しく使用することもできます。

html:

<div class="task" data-task-owner="Joe">mop kitchen</div>
<div class="task" data-task-owner="Charles" data-apos="1">vacuum hallway</div>

css:

div.task:before { content: attr(data-task-owner)"'s task - " ; }
div.task[data-apos]:before { content: attr(data-task-owner)"' task - " ; }

出力:

Joe's task - mop kitchen
Charles' task - vacuum hallway

19
jQueryのとは対照的に、CSSのコンテンツを使用する興味深い副作用は、コンテンツ属性によって供給されたテキストは、....または望ましくないかもしれない可能性がある、選択可能ではないということである
ジェフ

テキストがページレイアウトの一部であり、コンテンツの一部ではない場合、CSSが適切な場所である可能性があります。たとえば、ページの見出しをすべてのページにわたって、ライムグリーンの背景に紫の「Hello World」という単語にしたい場合は、理にかなっています。ページの見出しを変更するには、1つのCSSファイルを編集するだけです。HTMLのテキストがある場合は、サイトのすべてのページを編集し、Webアプリケーションも変更する可能性があります。
キャベッジ2015

28

また、CSSコンテンツ属性のattr()関数も確認してください。要素の特定の属性をテキストノードとして出力します。次のように使用します。

<div class="Owner Joe" />

div:before {
  content: attr(class);
}

または、新しいHTML5カスタムデータ属性を使用しても:

<div data-employeename="Owner Joe" />

div:before {
  content: attr(data-employeename);
}

2
これは良い方法です。コンテンツを表示するcssクラスを作成するのは嫌いです。最終的には、SQLクエリに基づいて動的にCSSを生成する可能性があります。セレクタをに置き換えdiv[data-employeename]:beforeます。
Johnny5 2014年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.