Comment puis-je garder deux divs sur la même ligne?

, j'ai travaillé sur un menu déroulant similaire à suckerfish. J'ai le côté déroulant qui fonctionne maintenant, mais j'ai quelques images que j'essaie de mettre de chaque côté des liens. En ce moment, j'utilise un div la taille de l'image, puis en définissant la propriété background-image à l'image dont j'ai besoin (afin qu'elle puisse changer en utilisant la classe pseudo :hover).

Voici le CSS qui s'applique:

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

J'utilisais des sélecteurs pour économiser un peu sur les classes différentes, mais internet explorer ne semble pas pour les soutenir :(

Voici mon HTML qui s'applique:

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

Je ne suis pas sûr s'il y a un problème dans mon code, ou si je suis sur la mauvaise voie. Cela fonctionne dans firefox, safari et chrome, mais pas IE ou opera, donc je ne suis pas sûr s'ils compensent la stupidité ou quoi. Idéalement, la deuxième image flotte avidement vers la droite dans le bloc contenant. Dans les navigateurs à problèmes, il se trouve la ligne suivante vers le bas (à l'extrême droite au moins)

21
demandé sur Tuan Dang 2012-05-10 22:51:53

3 réponses

Vous pouvez faire deux divs en ligne de cette façon:

display:inline;
float:left;
40
répondu J D 2012-05-10 18:55:52

Pour moi, cela a beaucoup mieux fonctionné, car cela n'a pas éliminé l'espacement entre les éléments flottants:

display:inline-block;

Au cas où cela aiderait quelqu'un d'autre.

3
répondu Maxim Lott 2017-11-30 18:45:14

Simple faites display: inline-block sur les deux div mais assurez-vous et définissez min-width et max-width les deux. Exemple ci-dessous:

div {
  max-width: 200px;
  min-width:200px;
  background:grey;
  display:inline-block;
  vertical-align: top;
}
<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>
1
répondu Ron Royston 2018-06-22 18:23:18