box-sizing soutien dans IE7
Je viens de découvrir la box-sizing: border-box
propriété CSS qui permet de résoudre un tas de croix-navigateur problèmes de mise en page pour moi.
Le seul problème que j'ai maintenant c'est que IE7 ne semble pas le supporter. Est-il un hack pour obtenir IE7 pour la soutenir?
- C'est en effet une très bonne question. Bien que IE7 en lui-même n'est guère plus utilisé, il y a encore un bon nombre d'entreprises et de ministères qui ont leur S en mode de compatibilité. Ce qui est aussi bon que le même que ceux-ci se comportant comme IE7, et même IE11 propose que le mode de réglage.
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que vous êtes en utilisant pour l'obtenir autour de la IE6 modèle de boîte. Malheureusement, il n'y a vraiment pas de manière générale de façon à tromper les versions antérieures d'IE dans le soutien arbitraire des propriétés CSS.
Je recommande de ne pas utiliser la
box-sizing
de la propriété, parce que chaque navigateur autre que IE6 va mettre en œuvre le modèle de boîte correctement. Le Article de Wikipedia fait un bon travail en expliquant comment IE6 diffère.Pour résoudre ce problème, je vous recommande d'utiliser une feuille de style différente pour IE6, et y compris à l'aide de Les commentaires conditionnels d'IE. Dans votre IE6 feuille de style, vous pouvez spécifier différentes largeurs/hauteurs/padding/marges de faire votre mise en page cohérente. Vous pouvez inclure une feuille de style pour IE6 seulement comme ceci:
border-box
comme comportement...Il y a plusieurs façons de le faire, aucun idéal.
Comme vous le soulignez:
1. Les Commentaires Conditionnels:
Utiliser box-sizing pour IE8 et 9, puis apporter des dérogations pour IE7. Cette option sera douloureux.
2. Le Schepp Boîte De Dimensionnement Polyfill:
https://github.com/Schepp/box-sizing-polyfill
Cette excellente Polyfill est un HTC fichier qui modifie le comportement par défaut du navigateur dans IE6 et 7, de sorte qu'ils utilisent le W3C modèle de boîte. C'est bien pour une utilisation légère, mais peut causer des problèmes de son propre si elle est utilisée de manière intensive. À utiliser avec prudence et de TEST.
3. De Style Ancien Divs Imbriqués:
L'ancien style imbriqué div approche est tout de même une bonne façon:
Un non-sémantique imbriquée div fournit le rembourrage indirectement, avec l'inconvénient que votre balisage devient désordonné. Évidemment, ne pas utiliser de styles en ligne, je suis en les utilisant pour des raisons d'illustration.
Le vieil adage ne Jamais utiliser de rembourrage sur une largeur fixe de l'élément tient toujours vrai.
4. Ma Solution Préférée Direct Sélecteur D'Enfant:
Dans l'autre sens, c'est avec le direct sélecteur d'enfant. Disons que vous avez un fixe largeur de la div contenant contenu:
Vous pouvez ensuite écrire une règle pour ajouter les marges gauche et droite pour tous les enfants directs de la div:
Cela va ajouter un peu de marge pour le h1 et p, mais pas à la imbriquée em, donnant l'apparence de 20px de rembourrage sur le contenu de la div, mais sans déclencher le modèle de boîte de bug.
5. Pensez à supprimer IE7 soutien
IE7 est le dernier navigateur de ne pas reconnaître le box-sizing de la propriété. Si vous avez peu de trafic à partir de IE7, vous pourrait envisager l'abandon de la gestion. Votre CSS sera beaucoup plus agréable.
À partir de la fin 2013, c'est mon option préférée.
2017 EDIT: C'est sans doute, depuis longtemps, le temps de laisser tomber le support pour IE7, et juste utiliser border-box.
border-box
-comme une!.content > *
devrait être évitée, car il est plutôt lent (au contraire de simplement l' * sélecteur de lui-même).Vous pouvez utiliser un polyfill pour le faire fonctionner sur certains points, il n'a pas fonctionné pour mon champs de saisie si.
https://github.com/Schepp/box-sizing-polyfill
Il suffit de noter que le comportement de l'url est relative à la page et ne pas le fichier css. Utiliser des chemins relatifs à la racine du site (début de l'url avec une barre oblique, puis à partir de là).