ฉันรู้สึกว่าฉันเห็นวิธีการใช้คุณสมบัติเนื้อหา CSS เพื่อแทรกแท็กตัวแบ่งบรรทัดก่อนองค์ประกอบ เห็นได้ชัดว่านี่ใช้งานไม่ได้:
#restart:before { content: '<br/>'; }
แต่คุณจะทำอย่างไร
ฉันรู้สึกว่าฉันเห็นวิธีการใช้คุณสมบัติเนื้อหา CSS เพื่อแทรกแท็กตัวแบ่งบรรทัดก่อนองค์ประกอบ เห็นได้ชัดว่านี่ใช้งานไม่ได้:
#restart:before { content: '<br/>'; }
แต่คุณจะทำอย่างไร
คำตอบ:
เป็นไปได้ที่จะใช้\A
escape sequenceในเนื้อหาที่สร้างโดยองค์ประกอบ psuedo อ่านเพิ่มเติมในสเปค CSS2
#restart:before { content: '\A'; }
นอกจากนี้คุณยังอาจต้องเพิ่มการwhite-space:pre;
#restart
หมายเหตุ: \A
หมายถึงจุดสิ้นสุดของบรรทัด
ป.ล. รักษาอีกจะเป็น
: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;
}
เพียงใส่อักขระขึ้นบรรทัดใหม่แบบ Unicode ภายในอิลิเมนต์หลอกก่อน:
#restart:before { content: '\00000A'; }
CSS ต่อไปนี้ทำงานสำหรับฉัน:
/* newline before element */
#myelementId:before{
content:"\a";
white-space: pre;
}
content: 'bar: \a' attr(data-description);
มีเหตุผลสองประการที่คุณไม่สามารถเพิ่มเนื้อหาที่สร้างผ่าน CSS ในแบบที่คุณต้องการ:
เนื้อหาที่สร้างขึ้นยอมรับเนื้อหาและไม่ใช่มาร์กอัป มาร์กอัปจะไม่ถูกประเมิน แต่แสดงเฉพาะ
: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;
}
สมมติว่าคุณต้องการให้ความสูงของบรรทัดเท่ากับ 20 px
.restart:before {
content: 'First Line';
padding-bottom:20px;
}
.restart:after {
content: 'Second-line';
position:absolute;
top:40px;
}
ก่อนหน้านี้ฉันไม่มีโชคเลย ทางออกของฉันคือการเพิ่มช่วงกับชั้นเรียนและใส่ตัวแบ่งในช่วง จากนั้นเปลี่ยนคลาสให้แสดง: ไม่มี; หรือแสดง: บล็อกตามต้องการ
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;
}
}
หวังว่านี่จะช่วยได้
คุณสามารถเติมเอกสารของคุณด้วย<br>
แท็กและเปิด \ ปิดด้วย CSS เช่นเดียวกับคนอื่น ๆ :
<style>
.hideBreaks {
display:none;
}
</style>
<html>
just a text line<br class='hideBreaks'> for demonstration
</html>
คุณยังสามารถใช้เอนทิตี HTML ที่เข้ารหัสล่วงหน้าสำหรับการขึ้นบรรทัดใหม่
ในเนื้อหาของคุณและมันจะมีผลเหมือนกัน
body * { line-height: 127%; }
p:after { content: "\A "; display: block; white-space: pre; }
https://www.w3.org/TR/CSS2/generate.html#x18 Proerty เนื้อหา "newlines" ... 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>