你如何使div元素显示为内联?

Ste*_*eve 237 html css line

鉴于此HTML:

<div>foo</div><div>bar</div><div>baz</div>
Run Code Online (Sandbox Code Playgroud)

你如何使它们像这样内联显示:

foo bar baz

不是这样的:

foo
bar
baz

Dar*_*ein 255

那就是其他的东西:

div.inline { float:left; }
.clearBoth { clear:both; }
Run Code Online (Sandbox Code Playgroud)
<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 -->
Run Code Online (Sandbox Code Playgroud)

  • 这里的css类名不应该用作示例.使用适当的语义命名,如:http://css-tricks.com/semantic-class-names/ (22认同)
  • `float` 也是错误的方法。`display: inline` 或 `display: inline-block` 是正确的解决方案,或者使用像 flexbox 这样的完整布局解决方案。`float` 用于将文本环绕在图像周围。 (2认同)

小智 252

内联div是网络的怪人,应该被打败直到它成为一个跨度(至少9次中的10次)...

<span>foo</span>
<span>bar</span>
<span>baz</span>
Run Code Online (Sandbox Code Playgroud)

...回答原来的问题......

  • 有时您希望div显示为内联,例如,当您想要在元素的左侧和右侧添加边距时.我不认为可以用跨度完成.史蒂夫可能应该使用float而不是内联. (11认同)
  • 填充是,不是保证金 (7认同)
  • 不幸的是,HTML5不支持将div放在<span>中.我曾经使用<span>来将CSS样式放在一个部分上,而不是让浏览器将该部分解释为一个块并强制它在我的块布局.但是我今天刚刚发现将页面移植到JQuery Mobile + HTML5时,如果你在<span>中有一个<div>,那么HTML5验证器会抱怨它是无效的HTML5,所以有些情况下使用<span>标签代替内联<div>是不可行的,至少使用HTML5. (7认同)
  • 有时虽然你生活在一个你没有创造的世界中,但你可以在CSS中改变它.在那种情况下,style ="display:inline"效果很好. (4认同)
  • 如果你没有"坚持"使用div这是一个很好的答案.但是可能有很多原因需要使用div但需要它们作为内联元素出现. (2认同)

Ran*_*ku' 172

尝试这样写:

div { border: 1px solid #CCC; }
Run Code Online (Sandbox Code Playgroud)
    <div style="display: inline">a</div>
    <div style="display: inline">b</div>
    <div style="display: inline">c</div>
Run Code Online (Sandbox Code Playgroud)

  • 这是问题的正确答案,但考虑到已接受的答案,我怀疑这个问题没有解决真实情况. (15认同)

Ste*_*rks 33

在阅读了这个问题和答案几次之后,我所能做的就是假设已经进行了相当多的编辑工作,我怀疑是因为没有提供足够的信息而给出了错误的答案.我的线索来自br标签的使用.

向达里尔道歉.我读了class ="inline"作为style ="display:inline".你有正确的答案,即使你确实使用语义上有问题的类名;-)

错过使用br提供结构布局而不是文本布局对我来说太普遍了.

如果你想在内部放置多个内联元素,divs那么你应该浮动那些div而不是将它们内联.

浮动的div:

===== ======= ==   **** ***** ******   +++++ ++++
===== ==== =====   ******** ***** **   ++ +++++++
=== ======== ===   ******* **** ****   
===== ==== =====                       +++++++ ++
====== == ======
Run Code Online (Sandbox Code Playgroud)

内联div:

====== ==== ===== ===== == ==== *** ******* ***** ***** 
**** ++++ +++ ++ ++++ ++ +++++++ +++ ++++
Run Code Online (Sandbox Code Playgroud)

如果您追求的是前者,那么这就是您的解决方案并丢失这些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>
Run Code Online (Sandbox Code Playgroud)

请注意,这些div的宽度是流动的,因此如果要控制行为,请随意在其上放置宽度.

谢谢,史蒂夫


Pau*_*tte 24

使用display:inline-blockIE6/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>
Run Code Online (Sandbox Code Playgroud)


Hid*_*man 11

您应该使用<span>而不是<div>正确的 内联方式.因为div是块级元素,并且您的要求是内联块级元素.

这是根据您的要求的HTML代码:

<div class="main-div">
 <div>foo</div>
 <div>bar</div>
 <div>baz</div>`
</div>
Run Code Online (Sandbox Code Playgroud)

你有两种方法可以做到这一点


  • 使用简单 display:inline-block;
  • 或使用 float:left;

所以你要display:inline-block;强有力地改变展示属性

例一

div {
    display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)

例二

div {
    float: left;
}
Run Code Online (Sandbox Code Playgroud)

你需要清除浮动

.main-div:after {
    content: "";
    clear: both;
    display: table;
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*vin 7

如上所述,显示:内联可能就是你想要的.有些浏览器也支持内联块.

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

  • @NexusRex有解决方案让IE正常运行但显示:内联是正确的答案.我相信解决方法是:display:inline-block;*显示:内联;*zoom:1; 设置缩放强制IE将元素视为块元素. (3认同)

小智 7

只需使用带有"float:left"的包装div,并将框放在里面也包含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;}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


小智 6

对我没问题 :

<style type="text/css">
    div{
        position: relative;
        display: inline-block;
        width:25px;
        height:25px;
    }
</style>
<div>toto</div>
<div>toto</div>
<div>toto</div>
Run Code Online (Sandbox Code Playgroud)


小智 5

<span>

  • 我想我们正在谈论内联可以具有宽度和高度的块元素.想象一个带有背景图像的div,您想要与文本内联. (2认同)