Procent szerokości elementu potomnego w absolutnie pozycjonowanym rodzicu w Internet Explorer 7

Mam absolutnie pozycjonowane div zawierające kilkoro dzieci, z których jedno jest stosunkowo pozycjonowane div. Gdy używam szerokości opartej na procentach na dziecku div, zapada się do szerokości " 0 " w Internet Explorer 7, ale nie w Firefox lub Safari.

Jeśli użyję szerokości piksela , to działa. Jeśli rodzic jest względnie umieszczony, szerokość procentowa na dziecku działa.

  1. czy coś mi umyka?
  2. czy jest łatwe fix dla tego oprócz szerokości opartej na pikselach na dziecko?
  3. Czy istnieje obszar specyfikacji CSS, który to obejmuje?
Author: Peter Mortensen, 2008-08-01

6 answers

Rodzic div musi mieć zdefiniowane width, w pikselach lub w procentach. W przeglądarce Internet Explorer 7 rodzic div potrzebuje zdefiniowanego width, aby procent Potomków div działał poprawnie.

 136
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-19 06:10:52

Oto przykładowy kod. Myślę, że tego właśnie szukasz. Poniższe wyświetla dokładnie to samo w Firefoksie 3 (mac) i IE7.

#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;
}
<div id="absdiv">
    <div id="reldiv"></div>
    <div id="pctchild"></div>
</div>
 56
Author: Matt MacLean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-22 15:34:49

IE przed 8 ma aspekt czasowy do modelu pudełkowego, który przede wszystkim stwarza problem z szerokościami procentowymi. W Twoim przypadku absolutna pozycja div domyślnie nie ma szerokości. Jego szerokość zostanie obliczona na podstawie szerokości w pikselach jego zawartości i zostanie obliczona po renderowaniu zawartości. Tak więc w punkcie IE napotka i renderuje Twój relatywnie umieszczony div jego rodzic ma szerokość 0, dlatego samo się zapada do 0.

Jeśli chciałbyś bardziej dogłębna dyskusja na ten temat wraz z wieloma przykładami roboczymi, zajrzyj tutaj .

 36
Author: Evil Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-14 11:56:10

Dlaczego szerokość procentowa dziecka w absolutnie pozycjonowanej pracy rodziców w IE7?

Bo to Internet Exploder

Czy coś mi umyka?

To znaczy, aby podnieść świadomość współpracowników / klientów, że IE jest do bani.

Czy istnieje Łatwa poprawka oprócz szerokości opartej na pikselach na dziecku?

Używaj jednostek em, ponieważ są one bardziej przydatne podczas tworzenia płynnych układów, ponieważ można ich używać do wypełniania i marginesy oraz rozmiary czcionek. Tak więc biała przestrzeń rośnie i kurczy się proporcjonalnie do tekstu, jeśli jest on zmieniany (co naprawdę jest tym, czego potrzebujesz). Nie wydaje mi się, żeby procenty dawały lepszą kontrolę niż ems; nic nie stoi na przeszkodzie, aby określać w setnych częściach ems (0.01 em) i przeglądarka zinterpretuje to, co uzna za stosowne.

Czy istnieje obszar specyfikacji CSS, który to obejmuje?

Brak, z tego co pamiętam em'S I %'S były przeznaczone dla rozmiarów czcionek sam w CSS 1.0.

 33
Author: lock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-08 16:07:51

Myślę, że ma to coś wspólnego ze sposobem implementacji właściwości hasLayout w starszej przeglądarce.

Próbowałeś kodu w IE8, aby sprawdzić, czy tam też działa? IE8 posiada Debugger ( F12) i może również działać w trybie IE7.

 30
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-22 15:34:01

Div musi mieć określoną szerokość

<div id="parent" style="width:230px;">
    <div id="child1"></div>
    <div id="child2"></div>
</div>
 0
Author: Mohamed El Mrabet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-07 14:53:02