私はここにこのコードを持っています:
echo "<u><font color='red'><br>$username</font></u>";
まず、ご覧のとおり、下線が引かれています(<u>)。次に、すべてのテキストがすべて赤です。とにかく、テキスト($ username)を赤のままにして、下線を黒のままにすることはできますか?
このための新しいcss3プロパティがあります:text-decoration-color
したがって、テキストを1つの色で、テキスト装飾の下線を別の色で表示できるようになりました...余分な「wrap」要素は必要ありません
p {
text-decoration: underline;
-webkit-text-decoration-color: red; /* safari still uses vendor prefix */
text-decoration-color: red;
}
<p>black text with red underline in one element - no wrapper elements here!</p>
注意:
1)ブラウザのサポートは、現時点ではFirefoxとChrome(V57以降で完全にサポートされています)とSafariに限定されています。
2)次のようなtext-decorationの省略形プロパティを使用することもできます。
<text-decoration-line> || <text-decoration-style> || <text-decoration-color>
...したがって、text-decoration
省略形を使用すると、上記の例は単純に次のようになります。
p {
text-decoration: underline red;
}
p {
text-decoration: underline red;
}
<p>black text with red underline in one element - no wrapper elements here!</p>
著者からの更新:
text-decoration-colorがほとんどの最新のブラウザーでサポートされるように
なったため、この回答は古くなっています。
余分なHTMLマークアップを導入せずに、ネイティブのサイズ、ストローク幅、および位置を正確に複製するには、withunitsを使用する必要があります。これにより、追加のマークアップなしで、要素の正確なスケーリングとネイティブの動作が可能になります。
text-decoration:underline
pseudo-element
em
`a {
text-decoration: none;
display: inline-table;
}
a:after {
content: "";
border-bottom: 0.1em solid #f00;
display: table-caption;
caption-side: bottom;
position: relative;
margin-top:-0.15em;
}`
display:table-caption
を使用caption-side
し、疑似要素とdisplayinline-table
で、拡大縮小した場合でも、ブラウザに線とリンクの両方を正確に垂直方向に整列させることができます。
この例では、inline-blockの代わりにinline-tableを使用して、高さや負の値を指定せずに疑似を強制的に表示します。
JSFIDDLE:https:
//jsfiddle.net/pohuski/8yfpjuod/8/ CODEPEN:http://codepen.io/pohuski/pen/vEzxPj | (スケーリングの例)
テストに成功:
Internet Explorer: 8、9、10、11
Firefox:
41、40、39、38、37、36 Chrome: 45、44、43、42 Safari:
8、7、6.2
Mobile Safari:9.0、8.0
Androidブラウザ:4.4、2.3
Dolphin Mobile:8、11.4
span
実際には、次の代わりに要素を使用すると可能ですfont
。
<style>
u { color: black; }
.red { color: red }
</style>
<u><span class='red'><br>$username</span></u>
jsfiddleを参照してください。Chrome、Safari、Firefox、IE、Operaで動作するように見えます(最新バージョンのWin 7でテスト済み)。
問題のコードも機能するはずですが、WebKitブラウザー(Chrome、Safari)では何らかの理由で機能しません。
CSS仕様によると:「テキスト装飾に必要な色は、「text-decoration」が設定されている要素の「color」プロパティ値から派生する必要があります。子孫要素の「色」の値が異なっていても、装飾の色は同じでなければなりません。」</ p>
いいえ。できる最善の方法はborder-bottom
、別の色でを使用することですが、それは実際には下線を引いていません。
私がこれに取り組んだ最も簡単な方法は、CSSを使用することです。
<style>
.redUnderline {
color: #ff0000;
border-bottom: 1px solid #000000;
}
</style>
<span class="redUnderline">$username</span>
また、実際の下線の場合、アイテムがリンクの場合、これは機能します。
<style>
a.blackUnderline {
color: #000000;
text-decoration: underline;
}
.red {
color: #ff0000;
}
</style>
<a href="" class="blackUnderline"><span class="red">$username</span></a>
box-shadowプロパティを使用して、下線をシミュレートすることもできます。
これがフィドルです。アイデアは、2つのレイヤードボックスシャドウを使用して、下線と同じ場所に線を配置することです。
a.underline {
text-decoration: none;
box-shadow: inset 0 -4px 0 0 rgba(255, 255, 255, 1), inset 0 -5px 0 0 rgba(255, 0, 0, 1);
}
danieldで説明されているもう1つの方法は、子コンテナの幅をインラインで表示し、必要なティポグラフィの色を表示することです。親要素の幅はテキストの装飾であり、必要な下線の色です。このような:
div{text-decoration:underline;color:#ff0000;display:inline-block;width:50px}
div span{color:#000;display:inline}
<div>
<span>Hover me, i can have many lines</span>
</div>
疑似要素が最適です。
a, a:hover {
position: relative;
text-decoration: none;
}
a:after {
content: '';
display: block;
position: absolute;
height: 0;
top:90%;
left: 0;
right: 0;
border-bottom: solid 1px red;
}
jsfiddleを参照してください。
余分な要素は必要ありません。テキストから好きなだけ近くまたは遠くに配置できます(境界線の下部は私の好みでは少し遠いです)。リンクが終わった場合に表示される余分な色はありません。異なる色の背景(ボックスシャドウのトリックなど)で、すべてのブラウザーで機能します(text-decoration-colorは現在Firefoxのみをサポートしています)。
考えられる欠点:リンクをposition:staticにすることはできませんが、ほとんどの場合、それはおそらく問題ではありません。相対に設定するだけで、すべてが良好です。
このCSSを使用して、下線を「シミュレート」できます。
text-decoration: none;
border-bottom: 1px solid #000;
でラップ<span>
し、<a>
この小さなJQueryプラグインを使用して下線に色を付けることができます。プラグインにパラメータを渡すことで色を変更できます。
(function ($) {
$.fn.useful = function (params) {
var aCSS = {
'color' : '#d43',
'text-decoration' : 'underline'
};
$.extend(aCSS, params);
this.wrap('<a></a>');
var element = this.closest('a');
element.css(aCSS);
return element;
};
})(jQuery);
次に、これを書いて呼び出します:
$("span.name").useful({color:'red'});
$(function () {
var spanCSS = {
'color' : '#000',
'text-decoration': 'none'
};
$.fn.useful = function (params) {
var aCSS = {
'color' : '#d43',
'text-decoration' : 'underline'
};
$.extend(aCSS, params);
this.wrap('<a></a>');
this.closest('a').css(aCSS);
};
// Use example:
$("span.name").css(spanCSS).useful({color:'red'});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="container">
<div class="user important">
<span class="name">Bob</span>
-
<span class="location">Bali</span>
</div>
<div class="user">
<span class="name">Dude</span>
-
<span class="location">Los Angeles</span>
</div>
<div class="user">
<span class="name">Gérard</span>
-
<span class="location">Paris</span>
</div>
</section>
ここでは、テキストに色付きの下線を作成できます
<u style="text-decoration-color: red;">The color of the lines should now be red!</u>
また
線の色が赤になります。
<h1 style=" text-decoration:underline; text-decoration-color: red;">The color of the lines should now be red!</u>
これを行う最も簡単な方法は、cssで使用することだと思います。
text-decoration-color: red;
これにより、テキストの色を変更せずに、下線の色が変更されます。幸運を!
問題border-bottom
は、テキストと行の間の余分な距離です。問題text-decoration-color
はブラウザのサポートの欠如です。したがって、私の解決策は、線のある背景画像を使用することです。これは、ラインのマークアップ、色、スタイルをサポートします。(私の例では12px)はあなたのテキストtop
に依存しています。line-height
u {
text-decoration: none;
background: transparent url(blackline.png) repeat-x 0px 12px;
}
私が出くわした最善の方法は次のようなものです。
HTML5:
<p>Initial Colors <a id="new-color">Different Colors</a></p>
CSS3:
p {
color: #000000;
text-decoration-line: underline;
text-decoration-color: #a11015;
}
p #new-color{
color: #a11015;
text-decoration-line: underline;
text-decoration-color: #000000;
}