Div öğelerinin satır içinde görüntülenmesini nasıl sağlıyorsunuz?


254

Bu HTML verildiğinde:

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

Bunları şu şekilde satır içinde görüntülemelerini nasıl sağlarsınız:

foo bar baz

böyle değil:

foo
bar
baz

Yanıtlar:


268

Bu başka bir şey:

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


aslında bu doğru satır içi görüntülemek için buldum tek yolu oldu ben hiçbir şamandıra çözüm işe yaramadı bilmiyorum ....
Necronet

23
Buradaki css sınıfı adları örnek olarak kullanılmamalıdır. : Gibi uygun semantik isimlendirmeleri kullanın css-tricks.com/semantic-class-names
Berik

261

Satır içi div, ağın bir ucubesidir ve açıklık haline gelene kadar dövülmelidir (10'un en az 9 katı) ...

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

... orijinal soruyu cevaplar ...


11
Div'lerin satır içinde görüntülenmesini istediğiniz zamanlar vardır; örneğin, öğenin soluna ve sağına kenar boşluğu eklemek istediğinizde. Bunun bir açıklık ile yapılabileceğini sanmıyorum. Steve muhtemelen inline yerine float kullanmalıdır.
Darryl Hein

8
dolgu evet, marj değil
Andreas Wong

8
Ne yazık ki HTML5, bir <span> içine div koymayı desteklemiyor. Bir bölüme CSS stillerini koymak için <span> s kullanıyordum ve tarayıcının bölümü bir blok olarak yorumlamasını ve blok düzenini üzerimde zorlamasını istemiyordum. Ancak bugün, sayfamı JQuery Mobile + HTML5'e taşırken, <span> içinde bir <div> varsa, HTML5 doğrulayıcısının geçersiz HTML5 olduğundan şikayet edeceğini öğrendim, bu nedenle <span> etiketini kullanmak yerine bir satır içi <div>, en azından HTML5 ile mümkün değildir.
Kmeixner

4
Bazen yaratmadığınız bir dünyada yaşıyor olsanız da ve CSS'de değiştirebileceğiniz tek şey. Bu durumda style = "display: inline" iyi çalışır.
Matthew Lock

3
Div kullanarak 'sıkışmış' değilseniz, bu iyi bir cevaptır. Ancak div'leri kullanmanızın, ancak satır içi öğeler olarak görünmeleri için birçok neden olabilir.
Bobble

174

Bunu şöyle yazmayı deneyin:

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


16
Bu sorunun doğru cevabıdır, ancak kabul edilen cevabı dikkate alarak sorunun gerçek senaryoyu ele almadığından şüpheleniyorum.
Steve Perks

34

Bu soruyu ve cevapları birkaç kez okuduktan sonra, yapabileceğim tek şey oldukça fazla düzenleme olduğunu varsayalım ve şüphem yeterli bilgi vermeme dayalı olarak yanlış cevap verildiğidir. Benim ipucum bretiket kullanımından geliyor .

Darryl'den özür dilerim. Class = "inline" ı style = "display: inline" olarak okudum. Anlamsal olarak sorgulanabilir sınıf isimleri kullansanız bile doğru cevaba sahipsiniz ;-)

Özledim kullanımı brMetin mizanpajı yerine yapısal mizanpaj sağlamak için beğenmem için çok yaygındır.

Bunların içine satır içi öğelerden daha fazlasını koymak divsistiyorsanız, o zamandiv bunları satır içi yapmak yerine .

Kayan div'ler:

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

Satır içi div'ler:

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

Birincinin peşindeyseniz, bu sizin çözümünüzdür ve bu bretiketleri kaybedersiniz :

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

Bu div'lerin genişliğinin akıcı olduğunu unutmayın, bu nedenle davranışı kontrol etmek istiyorsanız genişliklerini onlara koymaktan çekinmeyin.

Teşekkürler Steve


24

display:inline-blockIE6 / 7 için bir kenar boşluğu ve ortam sorgusu ile kullanın :

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

12

Doğru satır içi yol <span>yerine yerine kullanmalısınız . çünkü div bir blok seviyesi elemanıdır ve gereksiniminiz satır içi blok seviye elemanları içindir.<div>

İşte ihtiyaçlarınıza göre html kodu:

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

Bunu yapmanın iki yolu var


  • basit kullanmak display:inline-block;
  • veya kullanarak float:left;

böylece display özelliğini display:inline-block;zorla değiştirmeniz gerekir

Birinci örnek

div {
    display: inline-block;
}

İkinci örnek

div {
    float: left;
}

şamandırayı temizlemelisin

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

7

Belirtildiği gibi, display: satır içi muhtemelen istediğiniz şeydir. Bazı tarayıcılar satır içi blokları da destekler.

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


3
@NexusRex IE doğru şekilde davranmasını sağlamak için etrafında çalışma var ancak görüntüleme: satır içi doğru cevaptır. Etrafta geçici çözüm olduğuna inanıyorum: display: inline-block; * ekran: satır içi; * yakınlaştırma: 1; zum ayarı IE'yi öğeye bir blok öğesi gibi davranmaya zorlar.
Chris Stephens

7

Sadece "float: left" ile bir sarıcı div kullanın ve float: left içeren kutuları da içine koyun:

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
Sanırım genişlik ve yüksekliğe sahip satır içi blok elemanlarından bahsediyoruz. Metinle satır içi olarak akmasını istediğiniz arka plan resmine sahip bir div düşünün.
NexusRex

6

benim için tamam :

<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

Ben açıklık kullanır ya da div sol yüzer. Kayan ile ilgili tek sorun, daha sonra şamandırayı temizlemeniz veya içeren div'in taşma stilinin otomatik olarak ayarlanmış olmasıdır


İnanıyorum ki bir tarafa yüzmemiş, metin veya başka bir satır içi satır içi hakkında konuşuyoruz.
NexusRex

Float: left, overflow ile: içeren div'de otomatik, taşma hareketinin nasıl / ne zaman devreye gireceği?
cellepo

3

İnsanların bunun korkunç bir fikir olduğunu söylediklerini biliyorum, ancak altında yorumlarla kiremit resimleri gibi bir şey yapmak istiyorsanız pratikte yararlı olabilir. örneğin Picasaweb bunu bir albümdeki küçük resimleri görüntülemek için kullanır.
Örneğin / demo http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/inline_block_quirks.html (class goog-inline-block; burada ib olarak kısaltırım)

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

Bu CSS göz önüne alındığında, div'inizi ib sınıfına ayarlayın ve şimdi sihirli bir şekilde satır içi blok öğesi.


3

Üç divi içermelisiniz. İşte bir örnek:

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

Not: kenarlık yarıçapı öznitelikleri isteğe bağlıdır ve yalnızca CSS3 uyumlu tarayıcılarda çalışır.

HTML

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

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

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

"Foo" "bar" ve "baz" kelimelerinin her birinin "içeren" div içinde bulunduğunu unutmayın.


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

Bence herhangi bir css kullanmadan bu şekilde kullanabilirsiniz -

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

Şu anda blok seviyesi elemanını kullanarak istenmeyen sonuç elde edersiniz. Böylece yayılma alanı, küçük vb. Satır içi öğe yapabilirsiniz.

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

0

bunu böyle yapabiliriz

.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

Ben sadece onları sayfanın toplam genişliğine kadar eklemek için sabit genişlik yapma eğilimindedir - muhtemelen sadece sabit genişlik sayfası kullanıyorsanız çalışır. Ayrıca "şamandıra".

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.