CSS: จะเพิ่มพื้นที่สีขาวก่อนเนื้อหาขององค์ประกอบได้อย่างไร


118

รหัสต่อไปนี้ใช้ไม่ได้:

p:before { content: " "; }
p:before { content: " "; }

ฉันจะเพิ่มช่องว่างก่อนเนื้อหาขององค์ประกอบได้อย่างไร

หมายเหตุ: ฉันต้องการสีขอบซ้ายและขอบซ้ายสำหรับการใช้ความหมายและใช้ช่องว่างเป็นขอบที่ไม่มีสี :)


5
ทำไมไม่เพิ่มระยะขอบง่ายๆ
แคม

5
อาจเป็นเพราะระยะขอบ / ช่องว่างมีผลต่อทั้งบล็อก การเยื้องข้อความจะเป็นทางเลือกที่ดีกว่า
nice ass

ฉันต้องการสีเส้นขอบซ้ายและขอบซ้ายสำหรับการใช้ความหมาย :) ฉันอาจเพิ่มหลาย ๆ ตัวelement:before { content:"[a kind of space]"; background: mycolor;}ด้วย ทุกวิธีที่ฉันอยากรู้วิธีเพิ่มช่องว่างสนุกดี!
Hugolpz

1
@Hugolpz: คุณสามารถทำสิ่งเดียวกันกับp:first-letter { border-left: 1ex solid mycolor; }.
cHao

ระยะขอบ @carn เป็นแบบคงที่ความกว้างของพื้นที่สัมพันธ์กับขนาดตัวอักษร
ไม่เป็นที่รัก

คำตอบ:


248

คุณสามารถใช้ Unicode ของพื้นที่ไม่ทำลาย:

p:before { content: "\00a0 "; }

ดูการสาธิต JSfiddle

[ปรับปรุงสไตล์โดย @Jason Sperske]


2
ฉันทำการแก้ไขเล็กน้อยเพื่อให้คุณเห็นเอฟเฟกต์: jsfiddle.net/uMFHH/3 (มิฉะนั้นมันจะดูเหมือนระยะขอบซึ่งทำให้เกิดคำถามที่ดีทำไมไม่เพิ่มระยะขอบ)
Jason Sperske

เพราะฉันต้องระบายสีเส้นขอบซ้ายและขอบซ้าย :)
Hugolpz

3
ทำไมต้องเว้นวรรคตอนท้าย"\00a0 "? มันจำเป็นหรือเราทำได้"\00a0"?
jbyrd

1
@jbyrd: ไม่จำเป็น (ดูjsfiddle.net/nhyw6e9q ) ฉันทิ้งมันไว้ที่นั่นเพื่อแสดงว่าพื้นที่ปกติไม่ได้คิดไว้
Hugolpz

40

อย่าผายลมโดยใส่ช่องว่าง อย่างหนึ่ง IE เวอร์ชันเก่าจะไม่รู้ว่าคุณกำลังพูดถึงอะไร นอกจากนั้นแล้วยังมีวิธีที่สะอาดกว่าโดยทั่วไป

สำหรับการเยื้องที่ไม่มีสีให้ใช้text-indentคุณสมบัติ

p { text-indent: 1em; }

การสาธิต JSFiddle

แก้ไข:

หากคุณต้องการให้ช่องว่างเป็นสีคุณอาจพิจารณาเพิ่มเส้นขอบด้านซ้ายแบบหนาให้กับตัวอักษรตัวแรก (ฉันแทบจะไม่พูดว่า "แทน" เพราะการเยื้องอาจเป็นปัญหาได้ถ้าคุณใช้ทั้งสองอย่าง แต่ฉันรู้สึกสกปรกที่ต้องพึ่งพาเส้นขอบในการเยื้องเพียงอย่างเดียว) คุณสามารถระบุได้ว่าอยู่ห่างออกไปเท่าใด และความกว้างของสีโดยใช้ระยะขอบด้านซ้าย / ช่องว่าง / ความกว้างของขอบตัวอักษรตัวแรก

p:first-letter { border-left: 1em solid red; }

การสาธิต


2
หากคุณติดขัดในการรองรับ IE <8 วิธีนี้จะใช้งานได้ในขณะที่องค์ประกอบหลอกก่อน / หลังจะไม่ทำงาน
cimmanon

1
@cimmanon: อ๋อ. ตาม MDN สิ่งนี้ใช้งานได้แม้ใน IE 3 (แม้ว่าฉันไม่รู้ด้วยซ้ำว่าพวกเขามี CSS ในตอนนั้น: P)
cHao

คุณไม่สามารถระบายสีการเยื้องดังกล่าว{ text-indent: 1em; }ได้ แต่เราสามารถลงสีพื้นที่:before {content: "\00a0 "; background: #000; }ได้ ดู Fiddle
Hugolpz

1
@Hugolpz: การเยื้องข้อความ? Nope ไม่สามารถสีที่แตกต่างออกไป AFAIK แต่เป็นพรมแดน? แน่ใจ :)
cHao

โอ้เราไม่สามารถเพิ่มเนื้อหาหลายดูซอ เสียดาย ...
Hugolpz

8

เนื่องจากคุณกำลังมองหาการเพิ่มช่องว่างระหว่างองค์ประกอบคุณอาจต้องการบางสิ่งที่เรียบง่ายเช่นขอบซ้ายหรือขอบซ้าย นี่คือตัวอย่างของทั้งhttp://jsfiddle.net/BGHqn/3/

ซึ่งจะเพิ่ม 10 พิกเซลทางด้านซ้ายขององค์ประกอบย่อหน้า

p {
    margin-left: 10px;
 }

หรือถ้าคุณต้องการเพียงแค่ช่องว่างภายในองค์ประกอบย่อหน้าของคุณ

p {
    padding-left: 10px;
}

6
/* Most Accurate Setting if you only want
   to do this with CSS Pseudo Element */
p:before { 
   content: "\00a0";
   padding-right: 5px; /* If you need more space b/w contents */
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.