Bagaimana Anda membuat tampilan elemen div sebaris?


254

Diberikan HTML ini:

<div>foo</div><div>bar</div><div>baz</div>

Bagaimana Anda membuatnya ditampilkan inline seperti ini:

foo bar baz

tidak seperti ini:

foo
bar
baz

Jawaban:


268

Itu sesuatu yang lain:

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 -->


sebenarnya ini adalah satu-satunya cara saya menemukan untuk menampilkan inline dengan benar, saya tidak tahu mengapa solusi no-float tidak berfungsi ....
Necronet

23
Nama-nama kelas css di sini tidak boleh digunakan sebagai contoh. Gunakan penamaan semantik yang tepat seperti: css-tricks.com/semantic-class-names
Berik

261

Inline div adalah aneh web & harus dikalahkan hingga menjadi span (setidaknya 9 kali dari 10) ...

<span>foo</span>
<span>bar</span>
<span>baz</span>

... menjawab pertanyaan aslinya ...


11
Ada saat-saat ketika Anda ingin div untuk menampilkan inline, misalnya, ketika Anda ingin menambahkan margin di sebelah kiri dan kanan suatu elemen. Saya tidak berpikir itu bisa dilakukan dengan span. Steve mungkin harus menggunakan float bukan inline.
Darryl Hein

8
padding ya, bukan margin
Andreas Wong

8
Sayangnya, HTML5 tidak mendukung menempatkan div di dalam <span>. Saya dulu menggunakan <span> s untuk meletakkan gaya CSS pada suatu bagian dan tidak memiliki browser menafsirkan bagian sebagai blok dan memaksa tata letak blok pada saya. Tapi saya baru menemukan hari ini ketika memindahkan halaman saya ke JQuery Mobile + HTML5 bahwa jika Anda memiliki <div> dalam <span>, validator HTML5 akan mengeluh bahwa itu adalah HTML5 yang tidak valid sehingga ada kasus di mana menggunakan tag <span> alih-alih inline <div> tidak layak, setidaknya dengan HTML5.
Kmeixner

4
Terkadang meskipun Anda hidup di dunia yang tidak Anda ciptakan dan satu-satunya hal yang dapat Anda ubah dalam CSS. Dalam hal ini style = "display: inline" berfungsi dengan baik.
Matthew Lock

3
Jika Anda tidak 'terjebak' dengan menggunakan divs ini adalah jawaban yang bagus. Tetapi mungkin ada banyak alasan mengapa Anda perlu menggunakan divs tetapi membutuhkannya untuk muncul sebagai elemen inline.
Bobble

174

Coba tulis seperti ini:

div { border: 1px solid #CCC; }
    <div style="display: inline">a</div>
    <div style="display: inline">b</div>
    <div style="display: inline">c</div>


16
Ini adalah jawaban yang benar untuk pertanyaan itu, tetapi mengingat jawaban yang diterima, saya menduga pertanyaan itu tidak membahas skenario nyata.
Steve Perks

34

Setelah membaca pertanyaan ini dan jawabannya beberapa kali, yang bisa saya lakukan hanyalah berasumsi bahwa ada sedikit pengeditan yang sedang terjadi, dan kecurigaan saya adalah Anda telah diberikan jawaban yang salah berdasarkan tidak memberikan informasi yang cukup. Petunjuk saya berasal dari penggunaan brtag.

Permintaan maaf kepada Darryl. Saya membaca class = "inline" as style = "display: inline". Anda memiliki jawaban yang benar, bahkan jika Anda menggunakan nama kelas yang dipertanyakan secara semantik ;-)

Kehilangan penggunaan bruntuk menyediakan tata letak struktural daripada tata letak tekstual terlalu lazim untuk selera saya.

Jika Anda ingin memasukkan lebih dari elemen sebaris di dalamnya, divsmaka Anda harus melambangkannya divalih-alih membuatnya sejajar.

Div mengambang:

===== ======= ==   **** ***** ******   +++++ ++++
===== ==== =====   ******** ***** **   ++ +++++++
=== ======== ===   ******* **** ****   
===== ==== =====                       +++++++ ++
====== == ======

Inline divs:

====== ==== ===== ===== == ==== *** ******* ***** ***** 
**** ++++ +++ ++ ++++ ++ +++++++ +++ ++++

Jika Anda mencari yang pertama, maka ini adalah solusi Anda dan kehilangan brtag itu:

<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>

perhatikan bahwa lebar div ini adalah fluida, jadi silakan letakkan lebar pada mereka jika Anda ingin mengontrol perilaku.

Terima kasih, Steve


24

Gunakan display:inline-blockdengan margin dan permintaan media untuk 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>

11

Anda harus menggunakan <span>sebagai ganti <div>untuk cara inline yang benar . karena div adalah elemen level blok, dan persyaratan Anda adalah untuk elemen level blok inline.

Berikut adalah kode html sesuai kebutuhan Anda:

<div class="main-div">
 <div>foo</div>
 <div>bar</div>
 <div>baz</div>`
</div>

Anda punya dua cara untuk melakukan ini


  • menggunakan sederhana display:inline-block;
  • atau menggunakan float:left;

jadi Anda harus mengubah properti tampilan display:inline-block;dengan paksa

Contoh satu

div {
    display: inline-block;
}

Contoh dua

div {
    float: left;
}

Anda perlu menghapus float

.main-div:after {
    content: "";
    clear: both;
    display: table;
}

7

Seperti disebutkan, display: inline mungkin yang Anda inginkan. Beberapa browser juga mendukung inline-blok.

http://www.quirksmode.org/css/display.html#inlineblock


3
@NexusRex ada solusi untuk mendapatkan IE untuk berperilaku dengan benar namun tampilan: inline adalah jawaban yang benar. Saya percaya pekerjaan di sekitar adalah: display: inline-block; * display: inline; * zoom: 1; pengaturan zoom memaksa IE untuk memperlakukan elemen seperti elemen blok.
Chris Stephens

7

Cukup gunakan pembungkus div dengan "float: left" dan masukkan kotak di dalamnya juga mengandung 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>

6

<span> ?


2
Saya pikir kita berbicara tentang elemen blok inlining yang dapat memiliki lebar dan tinggi. Bayangkan div dengan gambar latar yang ingin Anda alir sejajar dengan teks.
NexusRex

6

ok buat saya:

<style type="text/css">
    div{
        position: relative;
        display: inline-block;
        width:25px;
        height:25px;
    }
</style>
<div>toto</div>
<div>toto</div>
<div>toto</div>

4

Saya akan menggunakan bentang atau mengapung div kiri. Satu-satunya masalah dengan mengambang adalah bahwa Anda harus menghapus float sesudahnya atau div yang mengandung harus memiliki gaya overflow diatur ke otomatis


Saya percaya kita berbicara tentang div sebaris dengan teks atau lainnya, tidak melayang ke satu sisi.
NexusRex

Saat menggunakan float: left, with overflow: auto pada div yang berisi, bagaimana / kapan scrollbar yang bisa ikut bermain melimpah?
cellepo

3

Saya tahu orang-orang mengatakan ini adalah ide yang buruk, tetapi dalam praktiknya bisa berguna jika Anda ingin melakukan sesuatu seperti gambar ubin dengan komentar di bawahnya. mis. Picasaweb menggunakannya untuk menampilkan thumbnail dalam sebuah album.
Lihat misalnya / demo http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/inline_block_quirks.html (blok goog-inline-blok; saya menyingkatnya menjadi ib di sini)

/* 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; }

Mengingat CSS itu, set div Anda ke kelas ib, dan sekarang secara ajaib elemen blok inline.


3

Anda harus mengandung tiga div. Berikut ini sebuah contoh:

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;
}

Catatan: atribut border-radius adalah opsional dan hanya berfungsi di browser yang kompatibel dengan CSS3.

HTML

<div class="contain">
  <div>Foo</div>
</div>

<div class="contain">
  <div>Bar</div>
</div>

<div class="contain">
  <div>Baz</div>
</div>

Perhatikan bahwa div 'foo' 'bar' dan 'baz' masing-masing dipegang dalam div 'berisi'.


2
<style type="text/css">
div.inline { display:inline; }
</style>
<div class="inline">a</div>
<div class="inline">b</div>
<div class="inline">c</div>

2

Saya pikir Anda dapat menggunakan cara ini tanpa menggunakan css -

<table>
    <tr>
        <td>foo</td>
    </tr>
    <tr>
        <td>bar</td>
    </tr>
    <tr>
        <td>baz</td>
    </tr>
</table>

Saat ini Anda menggunakan elemen level blok sehingga Anda mendapatkan hasil yang tidak diinginkan. Jadi Anda dapat elemen inline seperti rentang, kecil dll.

<span>foo</span><span>bar</span><span>baz</span>

0

kita bisa melakukan ini seperti

.left {
    float:left;
    margin:3px;
}
<div class="left">foo</div>
<div class="left">bar</div>
<div class="left">baz</div>

0
<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>

http://jsfiddle.net/f8L0y5wx/


0
<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 */

-1

Saya hanya cenderung membuat mereka lebar tetap sehingga mereka menambahkan hingga total lebar halaman - mungkin hanya berfungsi jika Anda menggunakan halaman lebar tetap. Juga "mengambang".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.