Arrêter flottant divs d'emballage
Je veux avoir une ligne de divs (cellules) qui n'emballe pas si le navigateur est trop étroit pour s'adapter à eux.
J'ai cherché de la Pile, et ne pouvait pas trouver de travail, de répondre à ce que je pense devrait être une simple css question.
Les cellules ont une largeur spécifiée. Mais je ne veux pas de spécifier la largeur de la ligne, la largeur doit automatiquement à la largeur de son enfant cellules.
Si la fenêtre est trop étroite pour accueillir les lignes, puis la div doit débordement avec des barres de défilement.
Veuillez indiquer votre réponse en tant que travail extrait de code, que j'ai essayé beaucoup de solutions que j'ai vu ailleurs (comme préciser width: 100% et ils ne semblent pas fonctionner).
Je suis à la recherche d'un code HTML/CSS seule solution, pas de JavaScript.
CSS:
.row {
float: left;
border: 1px solid yellow;
width: 100%;
overflow: auto;
}
.cell {
float: left;
border: 1px solid red;
width: 200px;
height: 100px;
}
HTML:
<div class="row">
<div class="cell">a</div>
<div class="cell">b</div>
<div class="cell">c</div>
</div>
Pour le moment, je suis effectivement dur de codage de la largeur de la ligne à un grand nombre.
- a l'une des réponses ci-dessous pour vous? Je ne suis pas du tout avoir du succès avec l'un d'eux.
- J'ai juste essayé toutes les réponses, et aucun n'a fonctionné pour moi. Le problème était que je devais centre de deux flotter à gauche de la vrd, et de prévenir l'un sur le droit d'être poussé ci-dessous à gauche après la fenêtre est redimensionnée.
- Je pense que mon exemple est exactement ce que vous cherchez, je suis tombé sur ce même problème aujourd'hui. Les menus déroulants de débordement, mais le premier niveau ne les emballez pas.
Vous devez vous connecter pour publier un commentaire.
La propriété CSS
display: inline-block
a été conçu pour répondre à ce besoin. Vous pouvez en lire un peu sur le sujet ici: http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/Ci-dessous est un exemple de son utilisation. Les éléments clés sont la
row
élément awhite-space: nowrap
et lacell
éléments ontdisplay: inline-block
. Cet exemple devrait fonctionner sur la plupart des grands navigateurs; un tableau de compatibilité est disponible ici: http://caniuse.com/#feat=inline-block<nobr>
.<!DOCTYPE html>
ou<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
vers le haut de l'HTML à avoir c'est à dire pas par défaut en mode quirks.float: right
, n'est ce pas?Vous souhaitez définir
min-width
sur la ligne, donc quand le navigateur est re-taille, il ne va pas au-dessous et enveloppement.Après la lecture de Jean de la réponse, j'ai découvert la suite semblait fonctionner pour nous (ne nécessite pas de spécifier la largeur):
overflow: visible; white-space: nowrap;
a Fait le tour pour moi. Merci!La seule façon que j'ai réussi à le faire à l'aide
overflow: visible;
etwidth: 20000px;
sur l'élément parent. Il n'y a aucun moyen de le faire avec du CSS niveau 1 que je suis au courant et j'ai refusé de penser que je devrais aller tous gung-ho avec CSS niveau 3. L'exemple ci-dessous a 18 menus qui s'étendent au-delà de ma résolution de 1920x1200 écran LCD, si votre écran est plus juste dupliquer le premier niveau des éléments de menu ou tout simplement redimensionner le navigateur. Sinon, et à une légère baisse des niveaux de compatibilité du navigateur vous pouvez utiliser CSS3 media queries.Ici est une copie/coller de l'exemple de la démonstration...
width:100%
avecwidth:1000px
il fonctionne pour moiwhite-space: nowrap;
et les enfants àdisplay: inline-block;
comme déjà dit dans d'autres réponses (ou revenir àdisplay: table;
etdisplay: table-cell;
).main > * > * {background-color: #000;}
O_oPour moi (à l'aide de bootstrap), seule chose qui a fonctionné a été mise en
display:absolute;z-index:1
sur le dernier cellule.display:absolute
n'est pas valide CSSJ'ai eu un peu le même problème où une zone délimitée se composait d'une image en float:left bloc et non-float bloc de texte. La région a un liquide de largeur. Le texte, de par sa conception, d'envelopper le long du côté droit de l'image. Le problème était, le texte a commencé avec un <h2> tag, le premier mot qui est le petit mot "De." Comme je l'ai redimensionné la fenêtre d'une largeur plus petite, la non-flotté texte, pour une certaine gamme de largeurs, de ne laisser que le mot "De" au sommet de l'enveloppe de la zone, le reste du texte n'a été pressé en dessous du flotteur bloc. Ma solution a été de faire le premier mot de la balise de plus, en remplaçant l'espace qui l'ont suivie, avec ce code, <span style="opacity:0;">x</span> . L'effet était de faire le premier mot, au lieu de "de", "FromxNextWord", où "x", d'être invisible, ressemblait à un espace. Maintenant, mon premier mot était assez grand pour ne pas être abandonné par le reste du bloc de texte.