308 votes

Pourquoi ne pas le pourcentage de la largeur de l'enfant dans la position absolue de travail parent?

J'ai une position absolue div contenant plusieurs enfants, dont l'un est relativement positionné div. Lorsque j'utilise un pourcentage en fonction de la largeur sur l'enfant, div, il s'effondre à l' 0 de la largeur sur IE7, mais pas sur Firefox ou Safari.

Si j'utilise la largeur en pixels, il fonctionne. Si le parent est en position relative, le pourcentage de la largeur sur l'enfant travaille.

Il y a une chose qui me manque ici? Est-il une solution facile pour cela, outre les pixels en fonction de la largeur sur l'enfant? Est-il une zone de l' CSS cahier des charges qui couvre ce?

63voto

maclema Points 5959

Voici un exemple de code. Je pense que c'est ce que vous cherchez. Le message suivant s'affiche exactement la même dans Firefox 3 (mac) et IE7.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
#absdiv {
    position: absolute; 
    left: 100px; 
    top: 100px; 
    width: 80%; 
    height: 60%; 
    background: #999;
}

#pctchild {
    width: 60%; 
    height: 40%; 
    background: #CCC;
}

#reldiv {
    position: relative;
    left: 20px;
    top: 20px;
    height: 25px;
    width: 40%;
    background: red;
}
</style>
</head>

<body>
    <div id="absdiv">
        <div id="reldiv"></div>
        <div id="pctchild"></div>
    </div>
</body>
</html>

41voto

Evil Andy Points 1220

IE avant 8 a un aspect temporel de son modèle de boîte que la plupart des notamment crée un problème avec un pourcentage en fonction des largeurs. Dans votre cas, voici un positionnement absolu div par défaut n'a pas de largeur. Sa largeur sera calculée en fonction de la largeur en pixels de son contenu et sera calculé après que le contenu ont été rendus. Donc, au point IE rencontre et rend votre position relative div son parent a une largeur de 0 donc pourquoi il lui-même s'effondre à 0.

Si vous souhaitez une discussion plus approfondie de ce long avec beaucoup d'exemples, ont un coup d'œil ici.

39voto

lock Points 1484

Pourquoi ne pas le pourcentage de la largeur de l'enfant en position absolue de travail parent dans IE7?

Parce que c'est Internet Exploder

Il y a une chose qui me manque ici?

C'est, pour élever vos collaborateurs / clients la prise de conscience que IE sucks.

Est-il une solution facile en plus les pixels en fonction de la largeur sur l'enfant?

Utiliser em parts qu'ils sont plus utiles lors de la création de mises en page liquides que vous pouvez les utiliser pour le remplissage et les marges ainsi que les tailles de police. Si votre espace blanc augmente et diminue proportionnellement à votre texte si c'est redimensionnée (qui est vraiment ce dont vous avez besoin). Je ne pense pas que les pourcentages de donner un contrôle plus fin que l'ems; il n'y a rien pour vous empêcher de vous précisant en centièmes de l'ems (0.01 em) et le navigateur va interpréter comme il l'entend.

Est-il une zone de la spécification CSS couvre ce?

Aucun, aussi loin que je me souvienne ems et %s'étaient destinés pour les tailles de police, seul, de retour au CSS 1.0.

34voto

Mike Points 131

Je pense que cela a quelque chose à voir avec la façon dont l' hasLayout de la propriété est mise en œuvre dans l'ancienne version de navigateur.

Avez-vous essayé votre code dans IE8 pour voir si les travaux dans les il y, trop?

IE8 a un Débogueur (F12) et peuvent également s'exécuter en mode IE7.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X