如何在同一行保留两个div?

Rie*_*iet 23 css opera internet-explorer css-float

我一直在做类似suckerfish的下拉菜单.我现在有下拉式工作,但是我有一些想要放在链接两侧的图像.现在我正在使用图像大小的div,然后将background-image属性设置为我需要的图像(这样它可以使用pseudo:hover类进行更改).

这是适用的CSS:

ul#menu3 li {
    color: #000000;
    float: left;
    /*I've done a little playing around here, doesn't seem to do anything*/
    position: relative;
    /*margin-bottom:-1px;*/

    line-height: 31px;
    width: 10em;
    padding: none;
    font-weight: bold;
    display: block;
    vertical-align: middle;
    background-image: url(../../images/dropdown/button-tile.gif);
}
.imgDivRt {
    width: 20px;
    height: 31px;
    display: inline;
    float: right;
    vertical-align: middle;
    background-image: url(../../images/dropdown/button-right.gif);
}
.imgDivLt {
    width: 20px;
    height: 31px;
    display: inline;
    float: left;
    vertical-align: middle;
    background-image: url(../../images/dropdown/button-left.gif);
}    
Run Code Online (Sandbox Code Playgroud)

我使用选择器来节省一些不同的类,但Internet Explorer似乎不支持它们:(

这是我的HTML适用:

<li><div class="imgDivLt"></div>Option 1<div class="imgDivRt"></div>
<ul>
    <li><a href="#"><div class="imgDivLt"></div>Sub 1<div class="imgDivRt"></div></a>
        <ul>
            <li><a href="#"><div class="imgDivLt"></div>Sandwich<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sandwich<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sandwich<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sandwich<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sandwich<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sandwich<div class="imgDivRt"></div></a></li>
        </ul>
    </li>
    <li><a href="#"><div class="imgDivLt"></div>Sub 2<div class="imgDivRt"></div></a> 
    <ul>
            <li><a href="#"><div class="imgDivLt"></div>Sub 1<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sub 2<div class="imgDivRt"></div></a> </li>
            <li><a href="#"><div class="imgDivLt"></div>Sub 3<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sub 4<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sub 5<div class="imgDivRt"></div></a></li>
            <li><a href="#"><div class="imgDivLt"></div>Sub 6<div class="imgDivRt"></div></a></li>
        </ul>
    </li>
    <li><a href="#"><div class="imgDivLt"></div>Sub 3<div class="imgDivRt"></div></a></li>
    <li><a href="#"><div class="imgDivLt"></div>Sub 4<div class="imgDivRt"></div></a></li>
    <li><a href="#"><div class="imgDivLt"></div>Sub 5<div class="imgDivRt"></div></a></li>
    <li><a href="#"><div class="imgDivLt"></div>Sub 6<div class="imgDivRt"></div></a></li>
</ul>
</li>
<li><div class="imgDivLt"></div>Option 2<div class="imgDivRt"></div>
Run Code Online (Sandbox Code Playgroud)

我不确定我的代码中是否存在故障,或者我是否在错误的轨道上.它适用于firefox,safari和chrome,但不适用于IE或歌剧,所以我不确定它们是否弥补了愚蠢或者是什么.理想情况下,第二个图像贪婪地浮动到包含块中的右侧.在问题浏览器中,它位于下一行(至少在最右边)

J D*_*J D 46

你可以用这种方式内联两个div:

display:inline;
float:left;
Run Code Online (Sandbox Code Playgroud)

  • 在我的代码中,我应该把它放在哪里?它已经在我的两个div上使用了,当我把它放在包含块上时,它没有按预期工作. (5认同)
  • 然后可以向左浮动,没有规则为什么他们不能.他们只会向左倾斜.此外,重要的是要注意您不需要显示内联*和*浮点数. (2认同)
  • @Riet,在IE11中,我不得不将它添加到我想要在同一行上的每个DIV.将它添加到下一个外部DIV(即,我想在同一条线上的DIV周围)不起作用.(我意识到这是一个古老的问题,但如果在2012年得到答复,那么Riet的答案会让我有些麻烦.) (2认同)

Max*_*ott 6

对我来说,这样做效果更好,因为它没有消除浮动物品之间的间距:

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

如果有帮助其他人.


Ron*_*ton 5

display: inline-block在两者上都做简单的事情,div但一定要确定并设置min-widthmax-width两者兼而有之。下面的例子:

div {
  max-width: 200px;
  min-width:200px;
  background:grey;
  display:inline-block;
  vertical-align: top;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <p>test</p>
  <p>test</p>
  <p>test</p>
  <p>test</p>
  <p>test</p>
  <p>test</p>
</div>

<div>
  <p>test 2</p>
  <p>test 2</p>
  <p>test 2</p>
</div>
Run Code Online (Sandbox Code Playgroud)