次のような方法でテキストをCSSに置き換えるにはどうすればよいですか。
.pvw-title img[src*="IKON.img"] { visibility:hidden; }
(img[src*="IKON.img"]
)の代わりに、 テキストを置き換えることができるものを使用する必要があります。
[
]
それを機能させるために使用する必要があります。
<div class="pvw-title">Facts</div>
「Facts」を置き換える必要があります。
次のような方法でテキストをCSSに置き換えるにはどうすればよいですか。
.pvw-title img[src*="IKON.img"] { visibility:hidden; }
(img[src*="IKON.img"]
)の代わりに、 テキストを置き換えることができるものを使用する必要があります。
[
]
それを機能させるために使用する必要があります。
<div class="pvw-title">Facts</div>
「Facts」を置き換える必要があります。
回答:
または<span>
、次のように「事実」をラップすることもできます。
<div class="pvw-title"><span>Facts</span></div>
次に使用します:
.pvw-title span {
display: none;
}
.pvw-title:after {
content: 'whatever it is you want to add';
}
必須:これはハックです:CSSはこれを行うには適切な場所ではありませんが、状況によっては-たとえば、CSSによってのみカスタマイズできるサードパーティライブラリがiframeにある場合-この種類のハックは唯一のオプションです。
CSSを使用してテキストを置き換えることができます。CSSを使用して、緑色のボタンを「こんにちは」で、「さようなら」という赤いボタンで置き換えてみましょう。
前:
後:
ライブデモについては、http://jsfiddle.net/ZBj2m/274/を参照してください。
これが緑色のボタンです。
<button>Hello</button>
button {
background-color: green;
color: black;
padding: 5px;
}
次に、元の要素を非表示にしますが、後で別のブロック要素を追加します。
button {
visibility: hidden;
}
button:after {
content:'goodbye';
visibility: visible;
display: block;
position: absolute;
background-color: red;
padding: 5px;
top: 2px;
}
注意:
visibility
ます。display: none
元の要素に関するメモは機能しません。display: none;
::after
誰かが気になった場合に備えて、「この要素の内部ではあるが、最後に」を意味するため、機能しません。
疑似要素を使用してコンテンツを挿入する場合は、次の操作を実行できます。それは元の要素の知識を想定しておらず、追加のマークアップを必要としません。
.element {
text-indent: -9999px;
line-height: 0; /* Collapse the original line */
}
.element::after {
content: "New text";
text-indent: 0;
display: block;
line-height: initial; /* New content takes up original line height */
}
<th>
要素内のテキストノードなど、他の多くの回答では対応できない場所で機能します。
line-height: 0
およびcolor: transparent
主要な要素に擬似にそれらの値をリセットする仕事(なしをいじるんtext-indent
)
line-height: normal
代わりにすべきではないinitial
ですか?
mikemaccanaの答えに基づいて 、これは私のために働いた
button {
position: absolute;
visibility: hidden;
}
button:before {
content: "goodbye";
visibility: visible;
}
絶対配置された要素はフローから除外されるため、他の要素を配置するときにスペースを占有しません。
これはシンプルで短く、効果的です。追加のHTMLは必要ありません。
.pvw-title { color: transparent; }
.pvw-title:after {
content: "New Text To Replace Old";
color: black; /* set color to original text color */
margin-left: -30px;
/* margin-left equals length of text we're replacing */
}
WooCommerceパンくずリストのために、ホーム以外のリンクテキストを置き換えるためにこれをしなければなりませんでした
body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"] {
color: transparent;
&:after {
content: "Store";
color: grey;
margin-left: -30px;
}
}
body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"] {
color: transparent;
}
body.woocommerce .woocommerce-breadcrumb > a[href$="/shop/"]&:after {
content: "Store";
color: @child-color-grey;
margin-left: -30px;
}
できません、まあ、できます。
.pvw-title:after {
content: "Test";
}
これにより、要素の現在のコンテンツの後にコンテンツが挿入されます。実際には置き換えられませんが、空のdivを選択し、CSSを使用してすべてのコンテンツを追加できます。
しかし、多かれ少なかれできるが、そうすべきではない。実際のコンテンツはドキュメントに含める必要があります。contentプロパティは、引用符で囲まれて表示されるテキストを囲む引用符など、主に小さなマークアップを対象としています。
:before
およびを使用してみてください:after
。1つはHTMLがレンダリングされた後にテキストを挿入し、もう1つはHTMLがレンダリングされる前に挿入します。テキストを置き換える場合は、ボタンの内容を空のままにします。
この例では、画面の幅のサイズに応じてボタンのテキストを設定します。
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
button:before {
content: 'small screen';
}
@media screen and (min-width: 480px) {
button:before {
content: 'big screen';
}
}
</style>
<body>
<button type="button">xxx</button>
<button type="button"></button>
</body>
ボタンのテキスト:
と :before
大画面xxx
大画面
と :after
xxxbig screen
大画面
異なるテキストや画像を表示したいだけの場合は、タグを空にして、そのような複数のデータ属性にコンテンツを書き込みます<span data-text1="Hello" data-text2="Bye"></span>
。擬似クラスの1つでそれらを表示します:before {content: attr(data-text1)}
これで、それらを切り替えるためのさまざまな方法が用意されました。メディアクエリと組み合わせて、レスポンシブデザインアプローチでナビゲーションの名前をアイコンに変更しました。
それは質問に完全に答えるわけではないかもしれませんが、それは私のニーズと多分他のものも満足しました。
これはインラインテキストで私のために働きました。Firefox、Safari、Chrome、Operaでテストされています。
<p>Lorem ipsum dolor sit amet, consectetur <span>Some Text</span> adipiscing elit.</p>
span {
visibility: hidden;
word-spacing: -999px;
letter-spacing: -999px;
}
span:after {
content: "goodbye";
visibility: visible;
word-spacing: normal;
letter-spacing: normal;
}
私はこのトリックを使います:
.pvw-title {
text-indent: -999px;
}
.pvw-title:after {
text-indent: 0px;
float: left;
content: 'My New Content';
}
これを使用して、基本クラスを変更するだけでページの国際化を処理しました...
.translate-es .welcome {
text-indent: -999px;
}
.translate-es .welcome:after {
text-indent: 0px;
float: left;
content: '¡Bienvenidos!';
}
疑似要素を使用すると、このメソッドは元の要素の知識を必要とせず、追加のマークアップを必要としません。
#someElement{
color: transparent; /* You may need to change this color */
position: relative;
}
#someElement:after { /* Or use :before if that tickles your fancy */
content: "New text";
color: initial;
position: absolute;
top: 0;
left: 0;
}
これにより、チェックボックスがボタンとして実装され、「チェック」状態に応じて「はい」または「いいえ」が表示されます。したがって、コードを記述せずにCSSを使用してテキストを置き換える1つの方法を示します。
POST値を返す(または返さない)限り、チェックボックスのように動作しますが、表示の観点からは、トグルボタンのように見えます。
色はあなたの好みに合わないかもしれません、それらはポイントを説明するためだけにあります。
HTMLは次のとおりです。
<input type="checkbox" class="yesno" id="testcb" /><label for="testcb"><span></span></label>
...そしてCSSは:
/* --------------------------------- */
/* Make the checkbox non-displayable */
/* --------------------------------- */
input[type="checkbox"].yesno {
display:none;
}
/* --------------------------------- */
/* Set the associated label <span> */
/* the way you want it to look. */
/* --------------------------------- */
input[type="checkbox"].yesno+label span {
display:inline-block;
width:80px;
height:30px;
text-align:center;
vertical-align:middle;
color:#800000;
background-color:white;
border-style:solid;
border-width:1px;
border-color:black;
cursor:pointer;
}
/* --------------------------------- */
/* By default the content after the */
/* the label <span> is "No" */
/* --------------------------------- */
input[type="checkbox"].yesno+label span:after {
content:"No";
}
/* --------------------------------- */
/* When the box is checked the */
/* content after the label <span> */
/* is "Yes" (which replaces any */
/* existing content). */
/* When the box becomes unchecked the*/
/* content reverts to the way it was.*/
/* --------------------------------- */
input[type="checkbox"].yesno:checked+label span:after {
content:"Yes";
}
/* --------------------------------- */
/* When the box is checked the */
/* label <span> looks like this */
/* (which replaces any existing) */
/* When the box becomes unchecked the*/
/* layout reverts to the way it was. */
/* --------------------------------- */
input[type="checkbox"].yesno:checked+label span {
color:green;
background-color:#C8C8C8;
}
私はFirefoxで試しただけですが、それは標準のCSSなので、他の場所でも機能するはずです。
他のすべての答えで見られるものとは異なり、タグのコンテンツを画像で置き換えるために疑似要素を使用する必要はありません
<div class="pvw-title">Facts</div>
div.pvw-title { /* No :after or :before required */
content: url("your URL here");
}
content
では、:before
およびにのみ適用され:after
ます。CSS3はそれをすべてに拡張しますが、生成されたコンテンツモジュールはまだドラフトステータスであるため、使用はブラウザーに依存する可能性が高くなります。
これはトリックなしでは実際には不可能です。これは、テキストをテキストの画像に置き換えることで機能する方法です。
.pvw-title{
text-indent: -9999px;
background-image: url(text_image.png)
}
この種のことは、通常JavaScriptで行われます。jQueryでこれを行う方法は次のとおりです。
$('.pvw-title').text('new text');
リンクのテキストを置き換える必要があるという問題がありましたが、JavaScriptを使用することも、XMLからコンパイルされたハイパーリンクのテキストを直接変更することもできませんでした。また、疑似要素を使用できなかったり、試したときに機能しなかったりしました。
基本的に、必要なテキストをスパンに配置し、アンカータグをその下に配置して、両方をdivでラップしました。基本的に、CSSを使用してアンカータグを上に移動し、フォントを透明にしました。これで、スパンにカーソルを合わせると、リンクのように「機能」します。これをするのは本当にハッキーな方法ですが、これは異なるテキストとのリンクを持つことができる方法です...
私のHTML
<div class="field">
<span>This is your link text</span><br/>
<a href="//www.google.com" target="_blank">This is your actual link</a>
</div>
私のCSS
div.field a {
color: transparent;
position: absolute;
top:1%;
}
div.field span {
display: inline-block;
}
CSSは要件に基づいて変更する必要がありますが、これはあなたが求めていることを行うための一般的な方法です。
画面の幅を小さくすると、「暗い」という単語が「D」だけに短縮される、このような解決策が見つかりました。基本的には、元のコンテンツのフォントサイズを0にし、疑似要素として短縮形を使用します。
この例では、代わりにホバー時に変更が発生します。
span {
font-size: 12px;
}
span:after {
display: none;
font-size: 12px;
content: 'D';
color: red;
}
span:hover {
font-size: 0px;
}
span:hover:after {
display: inline;
}
<span>Dark</span>
8年後、私はStylishを使用しようとするときに同じ課題に直面しましたブラウザー拡張機能を(私のものではなく)Webサイトの何かを変更。そして今回は「inspect element」を使ってソースコードを見て動作させ、それに基づいてCSSコードを作成しました。
これは以前は次のように見えました。
<table>
<tbody>
<tr>
<td role="gridcell">
<span title="In progress" style="background-color: #e2047a;color:White;margin:2px;border-radius:2px;padding-left: 2px; padding-right: 2px;text-align: center;width: 45px; display: block;overflow: hidden;text-overflow: ellipsis;">In progress</span>
</td>
</tr>
</tbody>
</table>
これは、スタイルの変更に使用したHTMLとCSSの一部です。
td span[style="background-color: #e2047a;color:White;margin:2px;border-radius:2px;padding-left: 2px; padding-right: 2px;text-align: center;width: 45px; display: block;overflow: hidden;text-overflow: ellipsis;"] {
width: 100px!important;
}
<table>
<tbody>
<tr>
<td role="gridcell">
<span title="In progress" style="background-color: #e2047a;color:White;margin:2px;border-radius:2px;padding-left: 2px; padding-right: 2px;text-align: center;width: 45px; display: block;overflow: hidden;text-overflow: ellipsis;">In progress</span>
</td>
</tr>
</tbody>
</table>
上記のコードを実行すると、機能することがわかります(Chromeでテスト済み)。
これは、私がこの質問をしたときに私がやりたかったことです。
私はある種のコミュニティブログ/ Myspaceに似たものを使用していて、プロファイルのスタイルを設定するときに唯一持っていたのはCSSエディターでした。そのため、スタイルに基づいて選択しました。
私はここで答えを見つけました:
まあ、多くの人が言ったように、これはハックです。ただし、flexbox
andの利点を生かした、より最新のハックを追加したいrem
、つまり
flexbox
padding
したくない、および/またはmargin
テキストを明示的に使用したくない場合、px
デバイスやブラウザによって画面サイズが異なると、出力が異なる場合があります。これが解決策です。簡単に言えflexbox
ば、自動的に完全にrem
配置され、ピクセルのより標準化された(そして自動化された)代替手段です。
以下のコードを含むCodeSandboxとスクリーンショットの形式で出力します。コードの下を読んでくださいnote
!
h1 {
background-color: green;
color: black;
text-align: center;
visibility: hidden;
}
h1:after {
background-color: silver;
color: yellow;
content: "This is my great text AFTER";
display: flex;
justify-content: center;
margin-top: -2.3rem;
visibility: visible;
}
h1:before {
color: blue;
content: "However, this is a longer text to show this example BEFORE";
display: flex;
justify-content: center;
margin-bottom: -2.3rem;
visibility: visible;
}
注:タグが異なるとrem
、の異なる値が必要になる場合があります。これは正当化されておりh1
、大画面でのみ使用できます。ただし、@media
これを使用すると、これをモバイルデバイスに簡単に拡張できます。