เอาท์พุท:
สวัสดี คุณเป็นอย่างไร
รหัส:
<p>hello <br> How are you </p>
วิธีการบรรลุผลเดียวกันโดยไม่<br>
?
เอาท์พุท:
สวัสดี คุณเป็นอย่างไร
รหัส:
<p>hello <br> How are you </p>
วิธีการบรรลุผลเดียวกันโดยไม่<br>
?
คำตอบ:
เป็นไปไม่ได้ที่มีโครงสร้าง HTML เดียวกันคุณต้องมีบางสิ่งบางอย่างที่จะแยกแยะระหว่างและHello
How are you
ฉันขอแนะนำให้ใช้span
s ที่คุณจะแสดงเป็นบล็อก (เหมือน<div>
จริง)
<br>
มาร์กอัปที่ถูกต้อง การครอบคลุมบทกวีจะ“ ผิด”
คุณสามารถใช้white-space: pre;
เพื่อทำให้องค์ประกอบทำหน้าที่เหมือน<pre>
กันซึ่งรักษาบรรทัดใหม่ไว้ ตัวอย่าง:
หมายเหตุสำหรับ IE ที่ใช้งานได้กับ IE8 + เท่านั้น
pre
คือpre-line
ซึ่งช่วยให้ห่อ
white-space
กฎ CSS
<br/>
ตามปกติ แต่ซ่อนไว้display: none
เมื่อคุณไม่ต้องการฉันคาดหวังว่าคนส่วนใหญ่ที่พบคำถามนี้ต้องการใช้การออกแบบ css / responsive เพื่อตัดสินใจว่าจะมีการขึ้นบรรทัดใหม่หรือไม่ในบางสถานที่ (และไม่มีอะไรเป็นส่วนตัวกับ<br/>
)
แม้ว่าจะไม่ชัดเจนในทันทีคุณสามารถนำdisplay:none
ไปใช้กับ<br/>
แท็กเพื่อซ่อนมันได้ซึ่งทำให้สามารถใช้การสืบค้นสื่อแบบควบคู่ควบคู่กับ semantic sem tags
<div>
The quick brown fox<br />
jumps over the lazy dog
</div>
@media screen and (min-width: 20em)
{
br
{
display: none; // hide the BR tag for wider screens (i.e. disable the line break)
}
}
สิ่งนี้มีประโยชน์ในการออกแบบที่ตอบสนองซึ่งคุณต้องบังคับให้ข้อความเป็นสองบรรทัดในช่วงพักที่แน่นอน
display: none
แก้ปัญหานั้นเหมาะสมและมีประโยชน์มากที่สุด
display: inline-block; width: 1em;
none
<br class='foo'>
ถ้าคุณต้องการการควบคุมมากขึ้น แต่อย่าไปบ้าเกินไป!
<br/>
ยอดเยี่ยมในสิ่งที่ทำ ไม่จำเป็นต้องบูรณาการล้อ ขอบคุณ!
มีหลายตัวเลือกสำหรับกำหนดการจัดการพื้นที่สีขาวและตัวแบ่งบรรทัด ถ้ามีใครสามารถใส่เนื้อหาลงใน<p>
แท็กได้มันก็ง่ายที่จะได้สิ่งที่ต้องการ
สำหรับรักษาเส้นแบ่ง แต่ไม่ใช้ช่องว่างสีขาวใช้pre-line
(ไม่pre
) เหมือนใน:
<style>
p {
white-space: pre-line; /* collapse WS, preserve LB */
}
</style>
<p>hello
How are you</p>
หากต้องการพฤติกรรมอื่นให้เลือกหนึ่งในเหล่านี้ (WS = WhiteSpace, LB = LineBreak):
white-space: normal; /* collapse WS, wrap as necessary, collapse LB */
white-space: nowrap; /* collapse WS, no wrapping, collapse LB */
white-space: pre; /* preserve WS, no wrapping, preserve LB */
white-space: pre-wrap; /* preserve WS, wrap as necessary, preserve LB */
white-space: inherit; /* all as parent element */
"\ เป็น"คำสั่งใน CSS สร้างผลตอบแทนการขนส่ง นี่คือ CSS ไม่ใช่ HTML ดังนั้นมันจะเข้าใกล้สิ่งที่คุณต้องการมากขึ้น: ไม่มีมาร์กอัปพิเศษไม่มีมาร์กอัปพิเศษ
ใน blockquote ตัวอย่างด้านล่างแสดงทั้งชื่อและลิงค์แหล่งข้อมูลและแยกทั้งสองอย่างด้วย carriage return ( "\a"
):
blockquote[title][cite]:after {
content:attr(title)"\a"attr(cite)
}
display:flex
และดังนั้นจึงเป็นแฮ็คในบริบทนี้) มันไม่แฟนซีจริงๆเพียงเทคนิคที่ทันสมัย ถ้าคุณต้องการมาร์กอัปที่เหมือนกัน แต่การตอบสนองที่แตกต่างกันนั้นเป็นวิธีที่จะไป
"
- อย่าใช้เครื่องหมายคำพูดง่าย ๆ'
เพราะคุณต้องการอนุญาตให้\a
แยกวิเคราะห์เป็นอักขระพิเศษ
ที่ CSS ใช้รหัส
p {
white-space: pre-line;
}
ด้วยรหัสนี้ css ทุก ๆ การป้อนภายในแท็ก P จะเป็นตัวแบ่งบรรทัดที่ html
ต่อจากสิ่งที่เคยกล่าวมานี้เป็นโซลูชัน CSS ที่ใช้งานได้จริง
<style>
span {
display: inline;
}
span:before {
content: "\a ";
white-space: pre;
}
</style>
<p>
First line of text. <span>Next line.</span>
</p>
input type='text', wrapping the input, and then laying the text over it with a wrapper
div . That also requires
เหตุการณ์หลายบรรทัด: none; ` :before
ในเพื่อที่จะยังคงสามารถคลิกที่ปุ่มด้านล่าง
<pre> <---------------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</pre> <--------------------------------------
หรือ
<div style="white-space:pre"> <-----------------------------------
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
</div> <-----------------------------------
แหล่งที่มา: https://stackoverflow.com/a/36191199/2377343
ในการทำให้องค์ประกอบมีตัวแบ่งบรรทัดหลังจากนั้นให้กำหนด:
display:block;
องค์ประกอบที่ไม่ลอยหลังจากองค์ประกอบระดับบล็อกจะปรากฏในบรรทัดถัดไป องค์ประกอบหลายอย่างเช่น <p> และ <div> เป็นองค์ประกอบระดับบล็อกอยู่แล้วดังนั้นคุณจึงสามารถใช้องค์ประกอบเหล่านั้นได้
แต่ในขณะนี้เป็นการดีที่จะรู้จริง ๆ แล้วมันขึ้นอยู่กับบริบทของเนื้อหาของคุณ ในตัวอย่างของคุณคุณไม่ต้องการใช้ CSS เพื่อบังคับให้มีการขึ้นบรรทัดใหม่ <br /> เหมาะสมเพราะความหมายของแท็ก p นั้นเหมาะสมที่สุดสำหรับข้อความที่คุณกำลังแสดง มาร์กอัปเพิ่มเติมเพียงเพื่อวาง CSS มันไม่จำเป็น ในทางเทคนิคมันไม่ตรงย่อหน้า แต่ไม่มี <ทักทาย> แท็กเพื่อใช้สิ่งที่คุณมี การอธิบายเนื้อหาของคุณให้ดีด้วย HTMl นั้นมีความสำคัญมากขึ้นหลังจากที่คุณมีแล้วลองหาวิธีทำให้มันดูสวย
ต่อไปนี้เป็นวิธีแก้ปัญหาที่ไม่ดีสำหรับคำถามที่ไม่ดี แต่มีคำตอบที่ตรงตามตัวอักษร:
p {
width : 12ex;
}
p:before {
content: ".";
float: right;
padding-left: 6ex;
visibility: hidden;
}
ex
จะเป็นอย่างไร p
และe
ไม่ได้อยู่ใกล้กับแป้นพิมพ์นั่นคือเหตุผลที่ฉันถาม
คำตอบอื่น ๆ ให้วิธีที่ดีในการเพิ่มตัวแบ่งบรรทัดขึ้นอยู่กับสถานการณ์ แต่ควรสังเกตว่า:after
ตัวเลือกเป็นหนึ่งในวิธีที่ดีกว่าในการทำเช่นนี้เพื่อควบคุม CSS รายการลิงก์ (และสิ่งที่คล้ายกัน) ด้วยเหตุผลที่ระบุไว้ด้านล่าง
นี่คือตัวอย่างสมมติว่าสารบัญ:
<style type="text/css">
.toc a:after{ content: "\a"; white-space: pre; }
</style>
<span class="toc">
<a href="#a1">Item A1</a> <a href="#a2">Item A2</a>
<a href="#b1">Item B1</a> <a href="#b2">Item B2</a>
</span>
และนี่คือเทคนิคของ Simon_Weaver ซึ่งง่ายกว่าและเข้ากันได้มากกว่า มันไม่ได้แยกสไตล์และเนื้อหาออกมามากต้องใช้โค้ดมากขึ้นและอาจมีบางกรณีที่คุณต้องการเพิ่มตัวแบ่งหลังจากข้อเท็จจริง ยังคงเป็นทางออกที่ดีโดยเฉพาะสำหรับ IE รุ่นเก่า
<style type="text/css">
.toc br{ display: none; } /* comment out for horizontal links */
</style>
<span class="toc">
<a href="#a1">Item A1</a><br/> <a href="#a2">Item A2</a><br/>
<a href="#b1">Item B1</a><br/> <a href="#b2">Item B2</a><br/>
</span>
บันทึกข้อดีของการแก้ปัญหาข้างต้น:
pre
)display:block
ความคิดเห็นของ NickG )float
หรือclear
รูปแบบที่มีผลต่อเนื้อหาโดยรอบ<br/>
หรือpre
ตัวแบ่งแบบตายตัว)a.toc:after
และ<a class="toc">
อาจมีบางคนมีปัญหาแบบเดียวกันกับฉัน:
ผมอยู่ในองค์ประกอบที่มีเพื่อให้ฉันได้ใช้display: flex
flex-direction: column
การตั้งค่าbr
แท็กเป็นdisplay: none
เป็นประโยชน์ แต่จากนั้นคุณสามารถจบด้วย WordsRunTogether ฉันพบว่ามีประโยชน์มากกว่าแทนที่จะแทนที่ด้วยอักขระเว้นวรรคเช่น:
HTML:
<h1>
Breaking<br />News:<br />BR<br />Considered<br />Harmful!
</h1>
CSS:
@media (min-device-width: 1281px){
h1 br {content: ' ';}
h1 br:after {content: ' ';}
}
br
การdisplay: inline-block; width: 1em;
ซึ่งควรป้องกันไม่ให้คำจากการทำงานร่วมกันเมื่อไปในแนวนอน
วิธีการเกี่ยวกับ<pre>
แท็ก?
แหล่งที่มา: http://www.w3schools.com/tags/tag_pre.asp
<pre>
เพื่อที่จะแบ่งบรรทัด ถ้าคุณต้องการมีช่องว่างปกติ
คุณสามารถเพิ่มช่องว่างภายในจำนวนมากและบังคับให้ข้อความแยกเป็นบรรทัดใหม่ตัวอย่างเช่น
p{
padding-right: 50%;
}
ทำงานได้ดีสำหรับฉันในสถานการณ์ที่มีการออกแบบที่ตอบสนองซึ่งภายในช่วงความกว้างที่กำหนดเท่านั้นจึงจำเป็นต้องแยกข้อความ
ฉันชอบวิธีแก้ปัญหาง่ายๆนี่คืออีกหนึ่ง
<p>hello <span>How are you</span></p>
และ css
p {
display: flex;
flex-direction: column;
}
ใช้คำสั่ง overflow-wrap: break-word; ชอบ :
.yourelement{
overflow-wrap: break-word;
}
<span class="class_name"></span>
คุณจำเป็นต้องประกาศเนื้อหาภายใน หลังจากนั้นเส้นจะถูกทำลาย
\A
หมายถึงอักขระตัวดึงข้อมูลบรรทัด
.class_name::after {
content: "\A";
white-space: pre;
}
ทั้งคำตอบของ Vincent Robert และ Joey Adams นั้นถูกต้อง อย่างไรก็ตามหากคุณไม่ต้องการเปลี่ยนมาร์กอัปคุณสามารถแทรก a<br />
จาวาสคริปต์ได้โดยใช้
ไม่มีวิธีที่จะทำใน CSS โดยไม่เปลี่ยนมาร์กอัพ
:after
หรือ:before
ทำเช่นนั้น
ในกรณีของฉันฉันต้องการปุ่มอินพุตเพื่อให้มีตัวแบ่งบรรทัดก่อนหน้า
ฉันใช้สไตล์ต่อไปนี้กับปุ่มและใช้งานได้:
clear:both;
ในกรณีนี้จะช่วยให้ใครบางคน ...
คุณสามารถทำได้:
<p>This is an <a class="on-new-line">inline link</a>?</p>
ด้วย CSS นี้:
a.on-new-line:before {
content: ' ';
font-size:0;
display:block;
line-height:0;
}
.on-new-line:before {content: ""; display: block;}
การใช้
แทนช่องว่างจะป้องกันการหยุดพัก
<span>I DONT WANT TO BREAK THIS LINE UP, but this text can be on any line.</span>
สิ่งนี้ใช้ได้ใน Chrome:
p::after {
content: "-";
color: transparent;
display: block;
}
ฉันเดาว่าคุณไม่ต้องการใช้เบรกพอยต์เพราะมันจะทำให้เกิดเส้นแบ่ง ถูกต้องไหม ถ้าอย่างนั้นเกี่ยวกับการเพิ่มเบรกพอยต์<br />
ในข้อความของคุณแล้วให้มันเป็นชั้นเช่น<br class="hidebreak"/>
นั้นใช้แบบสอบถามสื่อด้านขวาขนาดที่คุณต้องการที่จะทำลายเพื่อซ่อน<br />
มันจึงแตกที่ความกว้างที่เฉพาะเจาะจง
HTML:
<p>
The below line breaks at 766px.
</p>
<p>
This is the line of text<br class="hidebreak"> I want to break.
</p>
CSS:
@media (min-width: 767px) {
br.hidebreak {display:none;}
}
"Tip: The <br> tag is useful for writing addresses or poems."
รหัสสามารถ
<div class="text-class"><span>hello</span><span>How are you</span></div>
CSS จะเป็น
.text-class {
display: flex;
justify-content: flex-start;
flex-direction: column;
align-items: center;
}
อย่า หากคุณต้องการตัวแบ่งบรรทัดที่ยากใช้หนึ่ง
display: block;
แต่ถ้าบรรทัดใหม่หมดจดเพื่อใช้นำเสนอ
<br />
องค์ประกอบมีอยู่ด้วยเหตุผลที่ดีมาก หากคุณต้องการให้ตัวแบ่งบรรทัดเนื่องจากย่อหน้าแยกกันเพียงทำเครื่องหมายย่อหน้าเหล่านั้นเป็นย่อหน้าแยกกัน