Div largeur de 100% moins d'une quantité fixe de pixels
Comment puis-je obtenir la structure suivante sans l'aide de tableaux ou de JavaScript? Bordures blanches représentent les bords de divs et ne sont pas pertinentes pour la question.
La taille de la zone dans le milieu va varier, mais il aura exacte des valeurs de pixel et de l'ensemble de la structure de l'échelle en fonction de ces valeurs. Pour simplifier, j'avais besoin d'un moyen de définir "100% - n px de largeur vers le milieu et le bas-moyen divs.
J'apprécierais une propre solution de navigateur, mais dans le cas où il n'est pas possible, les hacks CSS va faire.
Ici un bonus. Une autre structure que j'ai eu du mal avec et à la fin de l'aide de tableaux ou de JavaScript. C'est un peu différent, mais introduit de nouveaux problèmes. J'ai été en utilisant principalement dans jQuery à base de système de fenêtrage, mais j'aimerais garder la mise en page de l'script et seulement de contrôler la taille d'un élément (celui du milieu).
- Pour le deuxième élément, vous dites que vous voulez la hauteur du milieu de l'élément fixe, mais les autres éléments, à proximité, pour être dynamique
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les éléments imbriqués et de rembourrage pour obtenir un de gauche et de droite sur la barre d'outils. La largeur par défaut d'un
div
élément estauto
, ce qui signifie qu'il utilise la largeur disponible. Vous pouvez ensuite ajouter le remplissage de l'élément et il garde toujours à l'intérieur de la largeur disponible.Voici un exemple que vous pouvez utiliser pour mettre des images de gauche et de droite, des coins arrondis, et un centre de l'image qui se répète entre eux.
Le code HTML:
Le CSS:
>
opérateur n'était pas encore assez bon pour être fiable.calc
dans IE 8, ou des versions actuelles de Anroid Navigateur ou à l'Opéra. caniuse.com/#search=calcThe default width of a div element is auto, which means that it uses the available width.
, qui dans mon cas semble être faux. Mes divs sont aussi large que dont ils ont besoin pour être de tenir ce que j'ai mis à l'intérieur.display: table;
a été défini. Désolé à ce sujet.Nouvelle façon je viens de tombé sur: css
calc()
:Source: css largeur de 100%, moins 100px
Tout Guffa réponse œuvres dans de nombreuses situations, dans certains cas, vous pouvez ne pas vouloir la gauche et/ou droit des morceaux de rembourrage pour être le parent d'un centre de div. Dans ces cas, vous pouvez utiliser un bloc de mise en forme de contexte sur le centre et faire flotter le rembourrage divs à gauche et à droite. Voici le code
Le code HTML:
Le CSS:
J'ai l'impression que cet élément de la hiérarchie est plus naturel quand par rapport à imbriquée divs imbriqués, et représente mieux ce qui est sur la page. De ce fait, les frontières, le remplissage et la marge peut être appliqué normalement à tous les éléments (c'est à dire: cette "naturalité" va au-delà de style et a des ramifications).
Notez que cela ne fonctionne que sur les divs et les autres éléments qui partage son remplissage 100% de la largeur par défaut de la propriété. Les entrées, les tables, et, éventuellement, d'autres auront besoin de vous envelopper dans un div conteneur et ajouter un peu de css pour restaurer cette qualité. Si vous avez la malchance d'être dans cette situation, contactez-moi et je vais creuser le css.
jsfiddle ici: jsfiddle.net/RgdeQ
Profitez-en!
Vous pouvez faire usage de Flexbox mise en page. Vous devez définir
flex: 1
sur l'élément qui doit avoir de dynamique de la largeur ou de la hauteur pourflex-direction: de ligne et de colonne
respectivement.Dynamique largeur:
HTML
CSS
De sortie:
CSS:
HTML:
Dynamique hauteur:
HTML
CSS
De sortie:
CSS:
HTML:
La façon habituelle de faire, c'est comme indiqué par Guffa, les éléments imbriqués. C'est un peu triste d'avoir à rajouter de la majoration pour obtenir les crochets dont vous avez besoin pour cela, mais dans la pratique, un wrapper div là ou il n'y aura pas de mal à personne.
Si vous devez le faire sans éléments supplémentaires (par exemple. lorsque vous n'avez pas le contrôle de la page de balisage), vous pouvez utiliser box-sizing, ce qui est assez décent, mais pas complète ou simple prise en charge du navigateur. Probablement plus amusant que d'avoir à compter sur des scripts, si.
Je suis peut-être stupide, mais ce n'est pas la table de la solution la plus évidente ici?
Une autre façon que j'ai trouvé dans google chrome est encore plus simple, mais l'homme est-il un hack!
Cela seul devrait remplir le reste de la ligne horizontale, à la table-cellules. Cependant, vous obtenez une étrange avec lui des questions allant de plus de 100% de son parent, le réglage de la largeur de un pour cent de la valeur des correctifs si.
Nous pouvons atteindre cet objectif à l'aide de flex-boîte très facilement.
Si nous avons trois éléments comme les en-têtes, MiddleContainer et Pied de page. Et nous voulons donner une certaine hauteur fixe à en-Tête et Pied de page. alors on peut l'écrire comme ceci:
Pour Réagir/RN(par défaut sont "display" flex et "flexDirection" comme colonne), en web css, nous allons spécifier le corps de récipient ou d'un conteneur contenant ces comme d'affichage: 'flex', flex-direction: 'colonne', comme ci-dessous:
que faire si votre emballage div a été de 100% et que vous avez utilisé rembourrage pour un montant en pixels, puis si le rembourrage # doit être dynamique, vous pouvez facilement utiliser jQuery pour modifier votre rembourrage montant lors de vos événements d'incendie.
J'ai eu un problème similaire où je voulais une bannière en haut de l'écran qui a une image sur la gauche et une répétition d'une image sur la droite vers le bord de l'écran. J'ai fini par le résoudre comme suit:
CSS:
La clé était la bonne balise. Je suis fondamentalement en précisant que je veux recommencer à partir de l'131px de la gauche à 0px du droit.
Dans certains contextes, vous pouvez tirer parti des paramètres de marge pour efficacement spécifier "100% de la largeur de moins de N pixels". Voir la accepté de répondre à cette question.