รับ HTML นี้:
<div>foo</div><div>bar</div><div>baz</div>
คุณทำให้มันแสดงแบบอินไลน์ได้อย่างไร:
foo bar baz
ไม่เหมือน:
foo
bar
baz
รับ HTML นี้:
<div>foo</div><div>bar</div><div>baz</div>
คุณทำให้มันแสดงแบบอินไลน์ได้อย่างไร:
foo bar baz
ไม่เหมือน:
foo
bar
baz
คำตอบ:
นั่นเป็นอย่างอื่นแล้ว:
div.inline { float:left; }
.clearBoth { clear:both; }
<div class="inline">1<br />2<br />3</div>
<div class="inline">1<br />2<br />3</div>
<div class="inline">1<br />2<br />3</div>
<br class="clearBoth" /><!-- you may or may not need this -->
div แบบอินไลน์เป็นคนที่คลั่งไคล้ในเว็บ & ควรถูกตีจนกว่าจะกลายเป็นช่วง (อย่างน้อย 9 ครั้งจาก 10 ครั้ง) ...
<span>foo</span>
<span>bar</span>
<span>baz</span>
... ตอบคำถามเดิม ...
ลองเขียนแบบนี้:
div { border: 1px solid #CCC; }
<div style="display: inline">a</div>
<div style="display: inline">b</div>
<div style="display: inline">c</div>
เมื่อได้อ่านคำถามนี้และคำตอบสองสามครั้งทั้งหมดที่ฉันทำได้ก็คือสมมติว่ามีการแก้ไขเล็กน้อยเกิดขึ้นและความสงสัยของฉันคือคุณได้รับคำตอบที่ไม่ถูกต้องโดยไม่ให้ข้อมูลที่เพียงพอ เบาะแสของฉันมาจากการใช้br
แท็ก
ขอโทษที่ดาร์ริล ฉันอ่าน class = "inline" เป็น style = "display: inline" คุณมีคำตอบที่ถูกต้องแม้ว่าคุณจะใช้ชื่อคลาสที่มีความหมายที่น่าสงสัย ;-)
การพลาดการใช้br
เพื่อจัดวางโครงสร้างแทนที่จะเป็นเค้าโครงข้อความนั้นแพร่หลายเกินไปสำหรับความชอบของฉัน
หากคุณต้องการใส่องค์ประกอบแบบอินไลน์ภายในองค์ประกอบเหล่าdivs
นั้นคุณควรลอยองค์ประกอบเหล่านั้นdiv
แทนที่จะทำให้เป็นแบบอินไลน์
divs ลอยตัว:
===== ======= == **** ***** ****** +++++ ++++
===== ==== ===== ******** ***** ** ++ +++++++
=== ======== === ******* **** ****
===== ==== ===== +++++++ ++
====== == ======
div แบบอินไลน์:
====== ==== ===== ===== == ==== *** ******* ***** *****
**** ++++ +++ ++ ++++ ++ +++++++ +++ ++++
หากคุณเป็นผู้ติดตามคนก่อนนี่เป็นวิธีการแก้ปัญหาของคุณและทำให้br
แท็กเหล่านั้นหายไป:
<div style="float: left;" >
<p>block level content or <span>inline content</span>.</p>
<p>block level content or <span>inline content</span>.</p>
</div>
<div style="float: left;" >
<p>block level content or <span>inline content</span>.</p>
<p>block level content or <span>inline content</span>.</p>
</div>
<div style="float: left;" >
<p>block level content or <span>inline content</span>.</p>
<p>block level content or <span>inline content</span>.</p>
</div>
โปรดทราบว่าความกว้างของ div เหล่านี้เป็นของไหลดังนั้นอย่าลังเลที่จะใส่ความกว้างไว้หากคุณต้องการควบคุมพฤติกรรม
ขอบคุณสตีฟ
ใช้display:inline-block
กับมาร์จิ้นและข้อความค้นหาสื่อสำหรับ IE6 / 7
<html>
<head>
<style>
div { display:inline-block; }
/* IE6-7 */
@media,
{
div { display: inline; margin-right:10px; }
}
</style>
</head>
<div>foo</div>
<div>bar</div>
<div>baz</div>
</html>
คุณควรใช้
<span>
แทนการ<div>
หาวิธีการที่ถูกต้องของ แบบอินไลน์ เนื่องจาก div เป็นองค์ประกอบระดับบล็อกและความต้องการของคุณสำหรับองค์ประกอบระดับบล็อกแบบอินไลน์
นี่คือรหัส html ตามความต้องการของคุณ:
<div class="main-div">
<div>foo</div>
<div>bar</div>
<div>baz</div>`
</div>
display:inline-block;
float:left;
ดังนั้นคุณจะต้องเปลี่ยนคุณสมบัติการแสดงผลdisplay:inline-block;
อย่างแข็งขัน
ตัวอย่างที่หนึ่ง
div {
display: inline-block;
}
ตัวอย่างที่สอง
div {
float: left;
}
คุณต้องล้างทุ่น
.main-div:after {
content: "";
clear: both;
display: table;
}
ดังกล่าว display: inline อาจเป็นสิ่งที่คุณต้องการ เบราว์เซอร์บางตัวยังรองรับบล็อกแบบอินไลน์
เพียงใช้ div wrapper กับ "float: left" และใส่กล่องข้างในที่มี float: left:
CSS:
wrapperline{
width: 300px;
float: left;
height: 60px;
background-color:#CCCCCC;}
.boxinside{
width: 50px;
float: left;
height: 50px;
margin: 5px;
background-color:#9C0;
float:left;}
HTML:
<div class="wrapperline">
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
<div class="boxinside">Box 1</div>
</div>
<span>
?
โอเคสำหรับฉัน :
<style type="text/css">
div{
position: relative;
display: inline-block;
width:25px;
height:25px;
}
</style>
<div>toto</div>
<div>toto</div>
<div>toto</div>
ฉันจะใช้ช่วงหรือลอย div ซ้าย ปัญหาเฉพาะของ floating คือคุณต้องเคลียร์ float หลังจากนั้นหรือ div ที่มีจะต้องตั้งค่าสไตล์โอเวอร์โฟลเป็นอัตโนมัติ
ฉันรู้ว่าผู้คนพูดว่านี่เป็นความคิดที่แย่มาก แต่ในทางปฏิบัติมันอาจมีประโยชน์หากคุณต้องการทำอะไรบางอย่างเช่นภาพกระเบื้องที่มีความคิดเห็นอยู่ข้างใต้ เช่น Picasaweb ใช้เพื่อแสดงภาพขนาดย่อในอัลบั้ม
ดูตัวอย่าง / สาธิตhttp://closure-library.googlecode.com/svn/trunk/closure/goog/demos/inline_block_quirks.html (คลาส goog-inline-block; ฉันย่อให้ ib ที่นี่)
/* below is a set of hacks to make inline-block work right on divs in IE. */
html > body .ib { display:inline-block; }
.ib {display:inline-block;position:relative;}
* html .ib { display: inline; }
:first-child + html .ib { display:inline; }
กำหนด CSS นั้นให้ตั้ง div ของคุณเป็น class ib และตอนนี้มันเป็นองค์ประกอบบล็อกแบบอินไลน์อย่างน่าอัศจรรย์
คุณต้องมีสาม divs นี่คือตัวอย่าง:
CSS
div.contain
{
margin:3%;
border: none;
height: auto;
width: auto;
float: left;
}
div.contain div
{
display:inline;
width:200px;
height:300px;
padding: 15px;
margin: auto;
border:1px solid red;
background-color:#fffff7;
-moz-border-radius:25px; /* Firefox */
border-radius:25px;
}
หมายเหตุ: คุณลักษณะเส้นขอบรัศมีเป็นตัวเลือกและใช้ได้เฉพาะในเบราว์เซอร์ที่สอดคล้องกับ CSS3 เท่านั้น
HTML
<div class="contain">
<div>Foo</div>
</div>
<div class="contain">
<div>Bar</div>
</div>
<div class="contain">
<div>Baz</div>
</div>
โปรดทราบว่า div 'foo' 'bar' และ 'baz' แต่ละตัวถูกเก็บไว้ใน div 'contain'
<style type="text/css">
div.inline { display:inline; }
</style>
<div class="inline">a</div>
<div class="inline">b</div>
<div class="inline">c</div>
ฉันคิดว่าคุณสามารถใช้วิธีนี้โดยไม่ต้องใช้ CSS ใด ๆ -
<table>
<tr>
<td>foo</td>
</tr>
<tr>
<td>bar</td>
</tr>
<tr>
<td>baz</td>
</tr>
</table>
ตอนนี้คุณกำลังใช้องค์ประกอบระดับบล็อกที่ทำให้คุณได้ผลลัพธ์ที่ไม่ต้องการ ดังนั้นคุณสามารถใส่องค์ประกอบอินไลน์เช่น span, small ฯลฯ
<span>foo</span><span>bar</span><span>baz</span>
เราทำได้เช่นนี้
.left {
float:left;
margin:3px;
}
<div class="left">foo</div>
<div class="left">bar</div>
<div class="left">baz</div>
<div class="cdiv">
<div class="inline"><p>para 1</p></div>
<div class="inline">
<p>para 1</p>
<span>para 2</span>
<h1>para 3</h1>
</div>
<div class="inline"><p>para 1</p></div>
<div>foo</div><div>bar</div><div>baz</div>
//solution 1
<style>
#div01, #div02, #div03 {
float:left;
width:2%;
}
</style>
<div id="div01">foo</div><div id="div02">bar</div><div id="div03">baz</div>
//solution 2
<style>
#div01, #div02, #div03 {
display:inline;
padding-left:5px;
}
</style>
<div id="div01">foo</div><div id="div02">bar</div><div id="div03">baz</div>
/* I think this would help but if you have any other thoughts just let me knw kk */
ฉันเพิ่งจะทำให้พวกเขามีความกว้างคงที่เพื่อให้พวกเขารวมถึงความกว้างทั้งหมดของหน้า - อาจใช้งานได้เฉพาะถ้าคุณใช้หน้ากว้างคงที่ ยัง "ลอย"