2009-07-27 17 views
5

J'ai une liste non ordonnée imbriquée qui a le contenu principal sur la gauche, et je voudrais ajouter des options qui sont flottantes à droite, de sorte qu'elles soient alignées sur la droite quel que soit le niveau de échancrure.Aligner à droite du texte dans un élément de liste

<ul> 
<li> Item 1 <span class='options'> link </span> </li> 
<li> Item 2 <span class='options'> link </span> 
    <ul> 
    <li>Item 3 <span class='options'> link </span> </li> 
    </ul> 
</li> 
</ul> 

J'ai le CSS suivant:

ul { 
    list-style: none; 
    padding: 0; 
    margin: 0; 
} 

li { 
    padding-left: 15px; 
    width: 400px; 
} 

.options { 
    float: right; 
    width: 50px; 
} 

Lorsque cela est utilisé mais la durée des options est aligné à droite, mais 1 ligne au-dessous de la ligne prévue.

Comment puis-je aligner les options sur l'élément de liste?

TIA, Adam

+0

Vous avez un problème avec vos largeurs de ligne. # 1, # 2 et # 3 n'ont pas une largeur constante parmi les navigateurs, à cause de la façon dont vos marges et paddings fonctionnent. – Alsciende

Répondre

11

au lieu de flotter, vous pouvez essayer le positionnement absolu.

ul { 
    list-style: none; 
    padding: 0; 
    margin: 0; 
} 

li { 
    padding-left: 15px; 
    width: 400px; 
    position: relative; 
} 

.options { 
    width: 50px; 
    position: absolute; 
    right: 0px; 
} 
+0

Parfait cela m'a aidé un régal. Je suis en train d'être pointilleux maintenant et tout à fait mise à jour à votre solution serait d'enlever le 'px' du 0 final pour 'bon', pour la meilleure pratique. – Pete

1

En utilisant cette CSS:

ul { 
    list-style: none; 
    padding: 0; 
    margin: 0; 
} 

li { 
    padding-left: 15px; 
    width:400px; 
} 
.options { 
    float: right; 
    width: 50px; 
} 
li li { width:385px} 

Cela nécessite malheureusement votre définir une largeur moins le rembourrage. en fonction de votre flexibilité, cela fonctionnera. Testé dans Chrome 3.0.

+0

Hum vous avez résolu un problème marginal, pas le problème principal :). Essayez votre css sous IE6. – Alsciende

1

Si la modification du code HTML est OK, vous pouvez entourez « Point 1 » dans une première travée et:

  • flottant à gauche (encore flottant .Options à droite)
  • utilisation display: inline-block sur à la fois la portée et text-align: right sur .Options, au lieu de flotteurs (pas compatible avec Fx2 cependant, et en travaillant uniquement dans IE6/7, car la durée est un des éléments en ligne par défaut. ne fonctionnerait pas avec div)