J'implémente la pagination, et elle doit être centrée. Le problème est que les liens doivent être affichés sous forme de bloc, ils doivent donc être flottants. Mais alors, text-align: center;
ça ne marche pas. Je pourrais y parvenir en donnant le rembourrage div wrapper de gauche, mais chaque page aura un nombre différent de pages, donc cela ne fonctionnerait pas. Voici mon code:
.pagination {
text-align: center;
}
.pagination a {
display: block;
width: 30px;
height: 30px;
float: left;
margin-left: 3px;
background: url(/images/structure/pagination-button.png);
}
.pagination a.last {
width: 90px;
background: url(/images/structure/pagination-button-last.png);
}
.pagination a.first {
width: 60px;
background: url(/images/structure/pagination-button-first.png);
}
<div class='pagination'>
<a class='first' href='#'>First</a>
<a href='#'>1</a>
<a href='#'>2</a>
<a href='#'>3</a>
<a class='last' href='#'>Last</a>
</div>
<!-- end: .pagination -->
Pour avoir l'idée, ce que je veux:
Réponses:
La suppression de
float
s et son utilisationinline-block
peuvent résoudre vos problèmes:(supprimez les lignes commençant par
-
et ajoutez les lignes commençant par+
.)Afficher l'extrait de code
inline-block
fonctionne sur plusieurs navigateurs, même sur IE6 tant que l'élément est à l'origine un élément en ligne.Citation de quirksmode :
cela peut souvent remplacer efficacement les flotteurs:
De la spécification W3C :
la source
Depuis de nombreuses années, j'utilise un vieux truc que j'ai appris dans un blog, je suis désolé de ne pas me souvenir du nom pour lui donner des crédits.
Quoi qu'il en soit, pour centrer les éléments flottants, cela devrait fonctionner:
Vous avez besoin d'une structure comme celle-ci:
l'astuce consiste à laisser flotter à gauche pour que les conteneurs changent la largeur en fonction du contenu. C'est une question de position: relative et laissé 50% et -50% sur les deux conteneurs.
La bonne chose est que c'est un navigateur croisé et devrait fonctionner à partir d'IE7 +.
la source
margin: 0 auto;
fait mieux dans ce casfloat: left;
n'était pas nécessaire sur.main-container
et.fixer-container
.overflow: hidden;
Le centrage des flotteurs est facile . Utilisez simplement le style de conteneur:
changer la marge pour les éléments flottants:
ou
et laissez le reste tel quel.
C'est la meilleure solution pour moi d'afficher des choses comme les menus ou la pagination.
Forces:
cross-browser pour tous les éléments (blocs, éléments de liste, etc.)
simplicité
Faiblesses:
@ arnaud576875 L'utilisation d' éléments de bloc en ligne fonctionnera très bien (cross-browser) dans ce cas car la pagination ne contient que des ancres (en ligne), aucun élément de liste ou div:
Forces:
Weknesses:
les espaces entre les éléments de bloc en ligne - cela fonctionne de la même manière qu'un espace entre les mots. Cela peut entraîner des problèmes de calcul de la largeur du conteneur et des marges de style. La largeur des espaces n'est pas constante mais elle est spécifique au navigateur (4-5px). Pour me débarrasser de ces lacunes, j'ajouterais au code arnaud576875 (non entièrement testé):
.pagination {espacement des mots: -1em; }
.pagination a {word-spacing: .1em; }
cela ne fonctionnera pas dans IE6 / 7 sur les éléments de bloc et de liste
la source
Réglez votre conteneur de
width
danspx
et d' ajouter:Référence .
la source
Utilisation de Flex
la source
Je pense que la meilleure façon est d'utiliser
margin
au lieu dedisplay
.C'est à dire:
Vérifiez le résultat et le code:
http://cssdeck.com/labs/d9d6ydif
la source
la source
IE7 ne sait pas
inline-block
. Vous devez ajouter:la source
Ajoutez ceci à votre style
* Si la largeur de votre conteneur est de 50px, mettez 25px, si elle est de 10em, mettez 5em.
la source
Vous pouvez également le faire en changeant
.pagination
en remplaçant "text-align: center" par deux à trois lignes de CSS pour la gauche, la transformation et, selon les circonstances, la position.la source
étape 1
créez deux ou plusieurs div que vous voulez et donnez-leur une largeur définie comme 100px pour chacun, puis faites-la flotter à gauche ou à droite
étape 2
puis déformez ces deux div dans un autre div et donnez-lui la largeur de 200px. à cette div, appliquer la marge automatique. boum ça marche plutôt bien. vérifiez l'exemple ci-dessus.
la source
Ajout juste
dans mon menu css de
a fait le tour de centrage aussi
la source