2017-03-06 3 views
1

Ok, cela est difficile à expliquer, j'ai 2 éléments, un div flottant et un div non Wrappable, son HTML ressemble à ceci:CSS - briser un flotteur et un div non Wrappable

<div id='page'> 
    <div id='left'> 
    some information 
    </div> 
    <div id='center'> 
    do not break this 
    </div> 
</div> 
Ce

est le CSS:

#center{ 
    text-align: center; 
    white-space: nowrap; 
} 
#left{ 
    float:left; 
} 
#page{ 
    width: 800px; 
    background-color: #999; 
} 

Résultat:

enter image description here

le conteneur (#page) i s redimensionnable et peut aller plus petit, comme 100px, et voici où j'ai mon problème, la div #center garde à droite, même lorsque se trouve en dehors du conteneur:

enter image description here

J'ai besoin #center div va sous #probablement lorsque le conteneur est petit comme celui-ci:

enter image description here

Voici le code sur jsFiddle: https://jsfiddle.net/p41xh4o3/

Merci pour votre aide!

+0

si vous voulez toujours #center div sous le #left? Je ne comprends pas vraiment ce que vous essayez de faire, comme ça? https://jsfiddle.net/p41xh4o3/1/ –

+0

Pas toujours, lorsque #page est plus petit que les deux fils, sinon ils sont sur la même ligne et #center est centré sur l'espace disponible. – stramin

Répondre

0

Ok, je l'ai fait en utilisant "flex", sur mes 3 éléments, c'est le CSS:

#left{ 
    white-space: nowrap; 
    flex-grow: 0; 
} 
#center{ 
    text-align: center; 
    white-space: nowrap; 
    background-color: #88AA88; 
    flex-grow: 1; 
} 
#page{ 
    width: 100px; 
    background-color: #999; 
    display: flex; 
    flex-wrap: wrap; 
    justify-content: space-between; 
} 

C'est le jsFiddle: https://jsfiddle.net/p41xh4o3/2/

0

je l'ai fait en utilisant FlexBox, vous devez d'abord faire display: flex; et flex-wrap: wrap sur le parent.
comme ceci:

#page{ 
    background-color: #999; 
    display: flex; // this one makes it a flex box 
    flex-wrap: wrap; // this one tells it to wrap when all children cannot fit next to each other 
} 

Ensuite, vous devez donner flex-basis: 50% pour les enfants du parent:

#center{ 
    flex-basis: 50%; 
    background-color: red; 
} 
#left{ 
    float:left; 
    flex-basis: 50%; 
    background-color: green; 
} 

je leur ai donné fonds afin que vous puissiez les voir et voir comment cela fonctionne. Pensez à flex-base comme la largeur de l'élément. donc si vous voulez #left avoir une largeur: 30% vous ferait quelque chose comme ceci:

#center{ 
    flex-basis: 70%; // notice how this one is 70% because 100% - 30% = 70% 
    background-color: red; 
} 
#left{ 
    float:left; 
    flex-basis: 30%; 
    background-color: green; 
} 

ici est un jsFiddle travail: https://jsfiddle.net/odnecaLu/4/
J'espère vraiment que j'ai aidé

+0

pouvez-vous s'il vous plaît accepter ma réponse si cela fonctionne et laissez-moi savoir si c'est le cas? merci –

+0

Merci pour votre réponse, mais je n'ai pas besoin du côté gauche plus large que le contenu, donc en utilisant un% flex-base ne fonctionne pas pour moi, le conteneur (#page) est redimensionnable, et peut être plus petit que 100px, je l'ai fait sur ma réponse en utilisant la propriété flex-grow (je ne sais pas comment ça fonctionne exactement). – stramin