J'ai besoin de rendre le code suivant extensible avec une hauteur prédéfinie
<style>
.title{
background: url(bg.gif) no-repeat bottom right;
height: 25px;
}
</style>
<span class="title">This is title</span>
Mais puisque span est un élément en ligne, la propriété "height" ne fonctionnera pas.
J'ai essayé d'utiliser div à la place, mais cela augmentera jusqu'à la largeur de l'élément supérieur. Et la largeur devrait être flexible.
Quelqu'un peut-il suggérer une bonne solution pour cela?
Merci d'avance.
Donnez-lui un display:inline-block
en CSS - cela devrait le laisser faire ce que vous voulez.
En termes de compatibilité: IE6/7 will fonctionne avec cela, comme le suggère le mode bizarre:
IE 6/7 accepte la valeur uniquement sur les éléments avec un affichage naturel: inline.
Utilisation
.title{
display: inline-block;
height: 25px;
}
La seule astuce est la prise en charge du navigateur. Vérifiez si votre liste de navigateurs pris en charge gère inline-block ici .
ceci consiste à faire afficher: inline-block work dans tous les navigateurs:
Assez bizarrement, dans IE (6/7), si vous déclenchez hasLayout avec "zoom: 1" puis configurez l'affichage en ligne, il se comporte comme un bloc en ligne.
.inline-block {
display: inline-block;
zoom: 1;
*display: inline;
}
En supposant que vous ne vouliez pas en faire un élément de bloc, essayez alors:
.title {
display: inline-block; /* which allows you to set the height/width; but this isn't cross-browser, particularly as regards IE < 7 */
line-height: 2em; /* or */
padding-top: 1em;
padding-bottom: 1em;
}
Mais la solution la plus simple consiste simplement à traiter le .title
en tant qu'élément de niveau bloc et à utiliser les balises d'en-tête appropriées <h1>
à <h6>
.
span { display: table-cell; height: (your-height + px); vertical-align: middle; }
Pour que les étendues fonctionnent comme une cellule de tableau (ou tout autre élément, d'ailleurs), vous devez spécifier la hauteur. J'ai donné une hauteur, et ils fonctionnent très bien - mais vous devez ajouter de la hauteur pour les amener à faire ce que vous voulez.
Une autre option est bien sûr d'utiliser Javascript (Jquery ici):
$('.box1,.box2').each(function(){
$(this).height($(this).parent().height());
})