เพิ่มช่องว่าง (“”) หลังจากองค์ประกอบที่ใช้: หลัง


274

ฉันต้องการเพิ่มพื้นที่ว่างหลังจากเนื้อหาบางส่วน แต่content: " ";ดูเหมือนจะไม่ทำงาน

นี่คือรหัสของฉัน:

h2:after {
    content: " ";
}

... ซึ่งใช้งานไม่ได้อย่างไรก็ตามสิ่งนี้จะ:

h2:after {
    content: "-";
}

ผมทำอะไรผิดหรือเปล่า?


2
ฉันไม่เข้าใจผลลัพธ์ที่คาดหวัง คุณพยายามที่จะเพิ่มการใช้padding contentดูเหมือนว่าเป็นไปไม่ได้ที่จะบอกได้ว่ามีการเพิ่มพื้นที่ว่างหรือไม่
fncomp

2
มันเป็นคำถามที่แปลกคุณควรใช้ช่องว่างสำหรับการเพิ่มพื้นที่ไม่มีเนื้อหา: หลังจากที่คุณอาจไม่ทราบเกี่ยวกับความแตกต่างระหว่างการแสดงผล: อินไลน์และการแสดงผล: บล็อก?
Littlemad

ฉันพยายามเพิ่มช่องว่างภายในเนื้อหา
bradley.ayers

2
ฉันพบว่าการเพิ่มช่องว่างโดยใช้วิธีนี้ก็มีประโยชน์เช่นกันเมื่อoverflow: hiddenองค์ประกอบบล็อกจะตัดพิกเซลสองสามตัวสุดท้ายของอักขระตัวสุดท้ายของข้อความตัวเอียง การเติมเต็มจะไม่ช่วยในกรณีนี้
Joe Waller

3
padding ไม่ช่วยถ้าคุณต้องการพื้นที่ของคุณที่จะขีดเส้นใต้โดยใช้text-decoration: underline;อย่างใดอย่างหนึ่ง
dmitry_romanov

คำตอบ:


142

คำอธิบาย

เป็นที่น่าสังเกตว่ารหัสของคุณแทรกช่องว่าง

h2::after {
  content: " ";
}

อย่างไรก็ตามมันจะถูกลบทันที

จากกล่องแบบอินไลน์ไม่ประสงค์ออกนาม ,

เนื้อหาพื้นที่สีขาวที่จะถูกยุบในภายหลังตามคุณสมบัติ 'พื้นที่สีขาว' จะไม่สร้างกล่องอินไลน์ที่ไม่ระบุชื่อ

และจาก'การพื้นที่สีขาว' การประมวลผลรูปแบบ ,

หากช่องว่าง (U + 0020) ที่ท้ายบรรทัดมีการตั้งค่า 'white-space' เป็น 'ปกติ', 'nowrap' หรือ 'pre-line' ก็จะถูกลบออกด้วย

สารละลาย

ดังนั้นหากคุณไม่ต้องการพื้นที่ที่จะถูกลบออกตั้งwhite-spaceไปหรือprepre-wrap

h2 {
  text-decoration: underline;
}
h2.space::after {
  content: " ";
  white-space: pre;
}
<h2>I don't have space:</h2>
<h2 class="space">I have space:</h2>

อย่าใช้ช่องว่างแบบไม่ทำลาย (U + 00a0) พวกเขาควรจะป้องกันการแบ่งบรรทัดระหว่างคำ พวกเขาไม่ควรถูกใช้เป็นพื้นที่ที่ไม่สามารถพับได้ซึ่งจะไม่มีความหมาย


3
ดูเหมือนว่าwhite-spaceไม่รองรับใน iE11 หรือ Edge (ดูcaniuse.com/#search=white-space ) ดังนั้นคำตอบของผู้ใช้ bradley.ayers ดีกว่าหรือไม่ (ผมไม่ทราบว่ามีด้านอื่น ๆ เช่นความหมายหรือพฤติกรรมเส้นแบ่ง)
chimos

561

กลับกลายเป็นว่ามันจะต้องมีการระบุผ่านทางยูนิโคดหนี คำถามนี้เกี่ยวข้องและมีคำตอบ

การแก้ไขปัญหา:

h2:after {
    content: "\00a0";
}

64
ไม่มีค่าอะไรเลยที่จะเป็นการเพิ่มพื้นที่ว่างเปล่า หากคุณต้องการพื้นที่ว่างปกติคุณต้องมี "\ 0020" แทนที่จะเป็น "\ 00A0"
Offlein

4
อาจเป็นสิ่งที่ควรสังเกตเช่นกันว่าการเพิ่มช่องว่างปกติจะไม่ทำอะไรเลย หากคุณไม่มีช่องว่างระหว่างข้อความในนี้และองค์ประกอบก่อนหน้านี้จะไม่เพิ่มหนึ่ง พื้นที่ปกติก็จะยุบตัวลง
mheim

2
@Offlein โปรดเพิ่ม `\ 0020 'เป็นคำตอบแยกต่างหากเนื่องจากแบบอักษรบางอย่างเช่นแบบอักษร Awesome Awesome จะไม่อนุญาตให้\00A0แสดงช่องว่างและหากคุณต้องการช่องว่างระหว่างองค์ประกอบมากกว่าก่อนหรือหลังคุณไม่สามารถใช้ช่องว่างภายในได้
Mousey

คุณจะเพิ่มช่องว่างหลังจากสิ่งที่มีอยู่แล้วในเนื้อหาได้อย่างไร
vsync

2
@ FrançoisDupontคุณมีทรัพยากรที่อธิบายการเปลี่ยนแปลงนี้หรือไม่?
isherwood

9

ฉันต้องการสิ่งนี้แทนที่จะใช้การแพ็ดดิ้งเพราะฉันใช้คอนเทนเนอร์อินไลน์บล็อกเพื่อแสดงชุดของเหตุการณ์แต่ละเหตุการณ์ในไทม์ไลน์เวิร์กโฟลว์ กิจกรรมสุดท้ายในไทม์ไลน์ไม่จำเป็นต้องมีลูกศรหลังจากนั้น

จบลงด้วยสิ่งที่ชอบ:

.transaction-tile:after {
  content: "\f105";
}

.transaction-tile:last-child:after {
  content: "\00a0";
}

ใช้ fontawesome สำหรับอักขระ gt (chevron) ด้วยเหตุผลใดก็ตาม "เนื้อหา: ไม่มี;" กำลังสร้างปัญหาการจัดตำแหน่งในไทล์สุดท้าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.