2009-04-03 11 views
6

Cela semble être quelque chose de facile, mais ça me rend fou!Comment puis-je positionner un élément dans les balises de titre (H1, H2, etc.)?

Je dois être en mesure de positionner un bouton, ou un autre élément d'entrée d'ailleurs à la droite d'un élément d'en-tête, qui contient également du texte.

Le balisage de base est:

<h3>Order Details <input type="button" value="Refund" id="btnRefund" /></h3> 

Le résultat souhaité est que le texte « Détails de la commande » est à gauche de l'élément H3 et le bouton est à droite. La solution évidente consiste à ajouter align: right au bouton, mais cela fait apparaître le bouton en dehors de l'élément H3 ou non en ligne avec le texte.

J'ai essayé diverses combinaisons de propriétés de position sur l'élément H3 et d'envelopper le texte dans les balises div et span.

Je suis sûr que je me botte quand j'aurai la solution.

Modifier/Mise à jour: Je coller avec la réponse de nickf (pour l'instant en tout cas) que je traite tout un ancien système avec le H3 déjà appelée dans la feuille de style externe, y compris la couleur d'arrière-plan, etc. Il y a aussi de nombreuses instances de l'étiquette H3 étant utilisées sans aucun élément supplémentaire imbriqué dans celle-ci et pour moi, cela n'a pas de sens d'avoir une étiquette div qui reproduit le style de l'étiquette H3 pour accommoder ceci.

Si je partais de zéro, j'aurais pu considérer la réponse de Mark.

Répondre

8

Vous devez le mettre d'abord

<h3><input type="button" style="float: right">Order Details</h3> 
+0

Je vais l'utiliser. Une des choses qui me dérange sur CSS, parfois, comme dans ce cas, brise la sémantique. –

+0

@Jon P, pas nécessairement, le h3 pourrait être seul ici et flottait à gauche, et le bouton flottait à droite. – alex

+0

... comme la réponse de Mark. – alex

7

Ce n'est pas conforme à w3c est-il?

Ne peut pas vous envelopper le tout dans une div,

<div><h3>Order Details</h3><input type="button" value="Refund" id="btnRefund" /></div> 

Et appliquer vos styles à la div, plutôt que h3 si vous avez besoin d'une forme d'uniforme regarder? Faites flotter le h3 à gauche ou utilisez display:inline pour qu'ils apparaissent côte à côte.

+0

Dans ce cas, l'emballage de la h3 dans un div ne fonctionnera pas pour moi, je l'ai développé dans ma question. –

+1

Il est conforme à W3C. Les en-têtes peuvent avoir n'importe quel élément en ligne, qui comprend . http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.5 – nickf

+0

oh .... eh bien, ce n'est pas sémantique-conforme: p – mpen

0

Eh bien voici ce que j'ai fini avec après avoir été inspiré par Mark et Nick F. C'est un peu un kludge mais fait appel à mes sensiblities plus. Le h3 est toujours l'élément parent, ce qui pour moi a plus de sens, au moins sémantiquement.

<h3 style="position:relative;"> 
    <span style="position:absolute;">Order Details</span> 
    <span style="text-align:right; 
       width:100%; 
       position:absolute"> 
     <input type="submit" name="btnRefund" value="Refund" id="btnRefund" 
     class="TextFields" /></span></h3> 

Les styles doivent évidemment se retrouver dans la feuille de style. L'inconvénient de cette approche est plus important que la réponse de Nicks, mais pas plus que celle de Mark. Il y a aussi le petit kludge de mettre un espace non brisé comme le dernier caractère de la h3.

+0

c'est un balisage drôle. mais je suppose que si ça marche, et ça valide, ça va. assurez-vous de toujours tester dans ie et ff. ou essayez http://browsershots.org/ – mpen

Questions connexes