11
votes

HTML / CSS: Marge fixe et largeur de fluide

Comment dois-je en faire avec CSS:

Je voudrais avoir 2 divs ou plus et que leur largeur doit être dans pourcentage , mais la marge entre les divs doit être corrigée , dans cet exemple 30px fluide divs

Le problème pour moi est la marge entre les deux divs parce que je peux mettre les DIV dans un plus grand div et régler le remplissage gauche et droit à 30px et c'est correct, mais que dois-je faire avec la marge entre les deux divs? < / p>

Si j'essaie d'ajouter par exemple le premier div margin-droit: 30px; alors la largeur de la div sera 70% + 30px Qu'est-ce qui sera globalement plus de 100% et la deuxième div tombera.

Alors, quelle est la solution pour cela?


4 commentaires

Dès que vous avez fixé là-bas, vous perdez la fluidité :) votre meilleur pari est l'un ou l'autre


que CSS est une merde! :)) Je ne crois pas en toi!


La solution consiste à attendre que tous les navigateurs implémentent Calc . Cela peut prendre un certain temps ...


@robertc vous monsieur est un héros.


8 Réponses :


0
votes

Vous pouvez utiliser les fonctions de téléchargement et d'onctuation JavaScript. Dans chacun, vous trouverez d'abord la largeur de la grille de conteneur, puis calculez la largeur de vos grilles de votre 70PC et de vos grilles de 30 pc en pixels et de les définir via JS.

Par exemple, utilisez le code suivant dans vos fonctions de surcharge et d'onctention pour la page: < / p> xxx


0 commentaires

0
votes

Cela peut être évident et vous avez probablement déjà déjà roulé, mais (70% + 30% + 30%)> 100%. Sans une sorte de capacité calculative, cela ne fonctionnera pas et CSS2 ne semble pas avoir cette capacité. JavaScript pourrait le faire, car une autre affiche a suggéré, et CSS 3 est en raison de l'ajout , apparemment.

Pas que c'est une solution à votre enquête initiale, mais vous pouvez appliquer une largeur fixe sur le conteneur droit et maintenir la fluidité à gauche. P>

<div style="margin-left: 30px; float: right; width: 270px;">
    <p>Content text ...</p>
</div>
<div style="margin-right: 300px;">
    <p>Sidebar text ...</p>
</div>


0 commentaires

11
votes

3 commentaires

Clever, et vous recevez un vote de moi ... Mais la zone "gauche" n'est pas proportionnellement de 70%. Pour être juste, d'une perspective mathématique, c'est une question de Daft à poser: p


Nice, tu l'as fait! Mais comment devrais-je faire cela avec 5 ou avec un nombre?


30px peut être divisé en 30% / 70%, de sorte que si vous utilisez cette méthode pour appuyer sur la gauche de 21px, et la sortie de 9px ... puis des pédants comme moi seraient heureux des idées.



0
votes

voici ma solution.

html fort> p> xxx pré>

CSS fort> p>

#wrapper {
    margin:0 30px;
}

#left {
    width:70%;
    height:200px;
    background:black;
    float:left;
}
#rightWrapper {
    margin-left:99px;
}
#right {
    width:30%;
    height:200px;
    float:right;
    background:grey;
}


0 commentaires

0
votes

Thirtydot a une bonne réponse (up vote de moi) pour ajuster le positionnement de gauche du divon par rapport à son conteneur, je ne suggérerais que cela peut nécessiter des tests dans certains navigateurs, tels que des versions plus anciennes d'Internet Explorer.

Vous pouvez également considérer que l'ajustement d'une position gauche par une quantité fixe est plus confusque que d'appliquer une largeur différente. P>

Vous demandez également une largeur de fluide et une marge fixe, globalement ce n'est plus un fluide. mise en page ... votre 30px aura la même résolution dans une grande ou une petite résolution. Mais vos largeurs changeront, puis fixez les largeurs aux pixels ou définissez la marge sur un pourcentage (essayez peut-être d'utiliser MAX-Larth pour certains navigateurs pour plus gros. résolutions). Les nouveaux navigateurs ajustent également une mise en page de pixels lors de l'augmentation de la taille du texte / du zoom, des navigateurs plus anciens nécessitent une utilisation des SME pour les modifications de taille de texte. P>

exemple avec les pourcentages et le rembourrage: P>

#container {
    margin: 0 8% 0 8%;
    overflow: hidden;
    background: #f3c
}
#left {
    float: left;
    width: 62%;
    position: relative;
    padding-right: 8%;
}


0 commentaires

0
votes

Ouais, ma solution était semblable aux autres. Un #wrap a 30px rembourrage, #main et #ide ont leurs pourcentages définis et flottés à gauche et à droite respectivement . #main a un

à l'intérieur avec 30px de la marge droite.

http://jsfiddle.net/marcel/fdmfh/eMbedded/Result/

Fonctionne bien dans tous les navigateurs modernes que j'ai installés (Chrome, Firefox, Safari, Opera, IE9 RC), je suis sûr qu'il va tomber quelque part plus vieux mais devrait être fixable.


0 commentaires

1
votes

J'ai trouvé un moyen de faire cela en gardant le rapport entre les largeurs des conteneurs exactement 70%: 30%. Essayez ceci, fonctionne pour moi ...

html: xxx

CSS: < Pré> xxx

bonne de chance!


0 commentaires

3
votes

Le support CALC est décent maintenant , vous pouvez donc l'utiliser pour Unités de mélange et de correspondance . En utilisant cela, vous pouvez proposer quelque chose qui fonctionne assez bien:

http://jsfiddle.net/cytta / 1 / xxx

Vous devrez peut-être avoir au préfixe CALC avec -WebKit ou -MOZ.

La largeur du premier est de 70 % moins la marge gauche (30px) et moins la moitié de la marge moyenne (15px). Le second est de 30% moins la marge droite (30px) et moins la moitié de la marge moyenne (15px).

tandis que les largeurs ne seront pas exactement égales à 70% et 30%, vous aurez une disposition de fluide avec des marges fixes.


0 commentaires