Pourquoi est-width: 100% ne travaillent pas sur les div {display: table-cell}?
Je suis en train de verticalement et horizontalement centre de certains contenus en superposition d'une image de la diapositive (flexslider). Il y avait des questions similaires à celui-ci, mais je ne pouvais pas trouver une solution satisfaisante qui est appliqué directement à mon problème. En raison des limitations de FlexSlider, je ne peux pas utiliser position: absolute;
sur la balise img dans mon œuvre.
J'ai presque solution de contournement ci-dessous travail. Le seul problème est que je ne peut pas obtenir la largeur & hauteur déclarations de travailler sur inner-wrapper
div avec la display: table-cell
de la propriété.
Est ce comportement standard, ou ai-je raté quelque chose avec mon code? Si c'est le comportement standard, quelle est la meilleure solution à mon problème?
HTML
<ul>
<li>
<img src="#">
<div class="outer-wrapper">
<div class="inner-wrapper">
<h1>My Title</h1>
<h5>Subtitle</h5>
</div>
</div>
</li>
</ul>
CSS
html, body {
margin: 0; padding: 0;
width: 100%; height: 100%;
}
ul {
background: #CCC;
height: 100%;
width: 100%;
list-style-position: outside;
margin: 0; padding: 0;
}
li {
width: 100%;
display: table;
}
img {
width: 100%;
height: 410px;
}
.outer-wrapper {
position: absolute;
width: 100%;
height: 100%;
top: 0;
margin: 0; padding: 0;
}
.inner-wrapper {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 100%;
height: 100%;
}
Remarque: l'centrée sur le contenu sera plus que de 1 élément, donc je ne peux pas utiliser la hauteur de la ligne de truc.
Vous devez vous connecter pour publier un commentaire.
Mettre
display:table;
à l'intérieur de.outer-wrapper
semblait fonctionner...JSFiddle Lien
EDIT: Deux papiers d'emballage à l'Aide de l'Affichage d'une Cellule de Tableau
Je voudrais commenter votre réponse, mais j'ai trop peu de rep 🙁 de toute façon...
Aller hors votre réponse, on dirait que tout ce que vous devez faire est d'ajouter
display:table;
à l'intérieur de.outer-wrapper
(Dejavu?), et vous pouvez se débarrasser detable-wrapper
de tout coeur.JSFiddle
Mais ouais, le
position:absolute
vous permet de placer lediv
sur leimg
, j'ai lu trop vite et pensé que vous ne pouviez pas utiliserposition:absolute
à tous, mais il semble que vous avez compris déjà. Des accessoires!Je ne vais pas poster le code source, après toutes ses 99% timshutes de travail, reportez-vous donc à sa réponse, ou tout simplement utiliser mon jsfiddle lien
Mise À Jour: Un Wrapper À L'Aide De Flexbox
Ça fait un moment, et tous les cool kids sont à l'aide de flexbox:
Plein JSFiddle Solution
Prise en charge du navigateur (source): IE 11+, FireFox 42+, Chrome 46+, Safari 8+, iOS 8.4+ (
-webkit-
préfixe), Android 4.1+ (-webkit-
préfixe)CSS Astuces: un Guide pour Flexbox
Comment faire pour centrer en CSS: entrée comment vous voulez que votre contenu à être centré, et c'sorties comment le faire en html et css. L'avenir est ici!
inline-block
élément.J'ai pensé que celui-ci dehors. Je sais que cela va aider quelqu'un un jour.
Comment Verticalement & Horizontalement Centre d'une Div Sur une position relative de l'Image
La clé était dans une 3ème enveloppe. Je vote toute réponse qui utilise moins d'emballages.
HTML
CSS
Vous pouvez voir le travail jsFiddle ici.
Bienvenue à 2017 ces jours à l'aide de
vW
etvH
faire le tourCSS:
HTML:
J'ai découvert que plus la valeur de 'width' est grande, plus la largeur de la boîte est faite, et vice-versa. J'ai trouvé ce parce que j'ai eu le même problème plus tôt. Donc:
résout le problème.
Votre 100% signifie que 100% de la fenêtre d'affichage, vous pouvez corriger cela en utilisant la vw unité en plus de l' % unité de largeur. Le problème est que 100vw est liée à la fenêtre d'affichage, en plus de % est liée à une balise parent. Faites comme suit:
Comment à ce sujet? (jsFiddle lien)
CSS
Juste ajouter min-height:100% et min-width:100% et il va fonctionner. J'ai eu le même problème. Vous n'avez pas besoin d'un 3ème wrapper