CSS contentプロパティを使用して、要素の前に改行タグを挿入する方法を見たような気がします。明らかにこれは動作しません:
#restart:before { content: '<br/>'; }
しかし、どうやってこれを行うのですか?
CSS contentプロパティを使用して、要素の前に改行タグを挿入する方法を見たような気がします。明らかにこれは動作しません:
#restart:before { content: '<br/>'; }
しかし、どうやってこれを行うのですか?
回答:
疑似要素で生成されたコンテンツで\A
エスケープシーケンスを使用することが可能です。CSS2仕様で詳細を読んでください。
#restart:before { content: '\A'; }
に追加white-space:pre;
する必要がある場合もあり#restart
ます。
注:\A
行末を示します。
PS別の治療法
:before { content: ' '; display: block; }
#restart
にはdisplay: inline;
:before { content: ' '; display: block; }
。
inline-block
要素を処理するソリューションはありません。彼らは単に次の行に行きません。唯一の解決策は、実際<div></div>
にHTMLに空を追加することでした。
場合は#restart
、インライン要素がある(例えば<span>
、<em>
など)あなたが使用してブロック要素にそれを回すことができます。
#restart { display: block; }
これにより、要素の前後の両方で改行が確実に行われます。
CSS に、要素の前ではなく改行のように機能するものを挿入する方法はありません。たとえばfloat: left
、他の変更の副作用として、またはclear: left
フロートされた要素の後で、あるいはクレイジーなものでさえ、改行を引き起こす可能性がありますが#restart:before { content: 'a load of non-breaking spaces'; }
、これは一般的なケースではおそらく良い考えではありません。
float: left
要素は、彼らがフィット収縮と新しい行で始めると、いくつかの使用であるかもしれません。そうでなければ、あなたが望むものは可能ではないかもしれません。
これは私にとってはうまくいきます:
#restart:before {
content: ' ';
clear: right;
display: block;
}
before疑似要素内にユニコード改行文字を置くだけです:
#restart:before { content: '\00000A'; }
次のCSSは私のために働きました:
/* newline before element */
#myelementId:before{
content:"\a";
white-space: pre;
}
content: 'bar: \a' attr(data-description);
生成されたコンテンツをCSS経由で希望どおりに追加できない理由は2つあります。
生成されたコンテンツは、マークアップではなくコンテンツを受け入れます。マークアップは評価されず、表示のみされます。
:before
そして:after
生成されたコンテンツは、そうもスペースや文字を追加したようにそれを定義、要素内に追加されますblock
機能しません。
あります ::outside
、あなたがやりたいかもしれない擬似要素が。ただし、ブラウザはサポートされていないようです。(詳細はこちら:http : //www.w3.org/TR/css3-content/#wrapping)
ここでは、jQueryを少し使用することをお勧めします。
$('<br />').insertBefore('#restart');
はい、完全に実行可能ですが、それは間違いなく完全なハックです(そのようなコードを書くために人々があなたに汚い外観を与える可能性があります)。
HTMLは次のとおりです。
<div>lorem ipdum dolor sit <span id="restart">amit e pluribus unum</span></div>
CSSは次のとおりです。
#restart:before { content: 'hiddentext'; font-size:0; display:block; line-height:0; }
ここにフィドルがあります:http : //jsfiddle.net/AprNY/
以下を試してください:
#restart::before {
content: '';
display: block;
}
:beforeでブレイクを挿入することはまったくできませんでした。私の解決策は、クラスにスパンを追加し、スパンの中にブレークを入れることでした。次に、表示するクラスを変更します。または表示:必要に応じてブロックします。
HTML
<div>
<span class="ItmQty"><br /></span>
<span class="otherclass">
<asp:Label ID="QuantityLabel" runat="server" Text="Qty: ">
</asp:Label>
</span>
<div class="cartqty">
<asp:TextBox ID="QuantityTextBox" runat="server" Text='<%# Bind("Quantity","{0:#}") %>' Width="50"></asp:TextBox>
</div>
</div>
CSS
@media only screen and (min-width: 854px)
{
.ProjItmQty
{
display: block;
clear: both;
}
}
@media only screen and (min-width: 1003px)
{
.ProjItmQty
{
display: none;
}
}
お役に立てれば。
body * { line-height: 127%; }
p:after { content: "\A "; display: block; white-space: pre; }
https://www.w3.org/TR/CSS2/generate.html#x18 コンテンツプロパティ「改行」... pは、親ブロック内のpの終わりにマージンやパディングを追加しません(例:ボディ›セクション›) p)。"\ A"改行は、行間を強制します。同等のスタイルの行の高さ。
にを追加margin-top:20px;
し#restart
ます。または、あなたが適切だと感じるどんなサイズのギャップでも。それがインライン要素である場合は、追加するdisplay:block
必要display:inline-block
があるか、私は思いませんがinline-block
、IEの古いバージョンでは動作。
何らかの方法で改行を手動で追加する代わりにborder-bottom: 1px solid #ff0000
、要素の境界線を取り、border-<side>
指定した側のみをレンダリングする実装を行うことができます。
<br>
はなく、同等のものを求めた<hr>
。