IE7 i właściwość CSS table-cell

Więc po prostu uwielbiam, gdy moja aplikacja działa świetnie w Firefoksie, ale potem otwieram ją w IE i... Nie, spróbuj jeszcze raz.

Problem polega na tym, że ustawiam właściwość wyświetlania CSS na none LUB table-cell za pomocą JavaScript.

Początkowo używałem display: block, ale Firefox renderował to dziwnie bez właściwości table-cell.

Chciałbym to zrobić bez dodawania hack w JavaScript do testowania dla IE. Dowolne sugestie?

Dzięki.
Author: Mads Mogenshøj, 2008-10-30

10 answers

Dobry sposób rozwiązania tego ustawienia wartości {[1] } na '':

<script type="text/javascript">
<!--
function toggle( elemntId ) {
    if (document.getElementById( elemntId ).style.display != 'none') {
        document.getElementById( elemntId ).style.display = 'none';
    } else {
        document.getElementById( elemntId ).style.display = '';
    }
    return true;
}
//-->
</script>

Pusta wartość powoduje powrót stylu do domyślnej wartości. To rozwiązanie działa we wszystkich głównych przeglądarkach.

 31
Author: Jacco,
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
2011-04-21 09:57:33

Rozwiązałem to używając jQuery:

$(document).ready(function(){
  if ($.browser.msie && $.browser.version == 7)
  {
    $(".tablecell").wrap("<td />");
    $(".tablerow").wrap("<tr />");
    $(".table").wrapInner("<table />");
  }
});

Powyższy skrypt zakłada, że masz divy używając stylu takiego jak:

<style>
.table     { display: table; }
.tablerow  { display: table-row; }
.tablecell { display: table-cell; }
</style>
 48
Author: andy magoon,
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
2011-02-10 22:35:19

Miałem ten sam problem i użyłem

*float: left; 

" * " oznacza TYLKO IE

 9
Author: Jonathan Hendler,
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
2009-08-05 21:26:04

No cóż, IE7 nie ma display: table(-cell/-row) więc będziesz musiał wymyślić coś innego lub zrobić kierowanie przeglądarki (co zgadzam się, to zły hack). Jako szybką poprawkę (Nie wiem, co próbujesz osiągnąć, wyglądowo) możesz spróbować display: inline-block i zobaczyć, jak to wygląda.

Może wymyślić sposób, aby zrobić display: block i rozwiązać problem "Firefox rendering it weird" zamiast tego? Czy możesz dokładnie opisać, co masz na myśli przez dziwne renderowanie?

 4
Author: joelhardi,
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
2008-10-30 02:24:21

Nigdy nie potrzebujesz Javascript do testowania dla IE, użyj komentarzy warunkowych .

Możesz spojrzeć na rozwiązanie Ci faceci wymyślili do obsługi wyświetlania tabel w IE.

 4
Author: eyelidlessness,
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
2008-10-30 04:00:28

Używanie inline-block działa dobrze dla tego typu rzeczy. Nie, IE 6 i IE 7 technicznie nie mają display: inline-block, ale można replikować zachowanie za pomocą następujących stylów:

div.show-ib {
    display: inline-block;
    *zoom: 1;
    *display: inline;
}

Kluczem do tego jest 'zoom: 1' włącza właściwość 'hasLayout' na elemencie, która zmienia sposób, w jaki przeglądarka renderuje element poziomu bloku. Jedynym, który ma wbudowany blok jest to, że nie możesz mieć marginesu mniej niż 4px.

 4
Author: risingfish,
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
2011-08-08 21:07:12

Używam CSS od ponad dekady i nigdy nie miałem okazji używać display: table-cell, a jedyne, co kiedykolwiek używam komentarzy warunkowych, to ukrywanie zaawansowanych efektów z IE6.

Podejrzewam, że inne podejście rozwiązałoby twój problem w sposób wewnętrzny między przeglądarkami. Czy możesz otworzyć osobne pytanie, które opisuje efekt, który próbujesz osiągnąć, i opublikować HTML i CSS, który obecnie działa w Firefoksie?

 3
Author: Herb Caudill,
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
2008-10-30 13:49:01

Przykład kodu fot komentarze warunkowe, które użytkownik powiek, uprzejmie napisał

" [if lt IE 8] " działa tylko wtedy, gdy przeglądarka jest IE niższa niż IE8, ponieważ IE8 robi to dobrze. Z komentarzami warunkowymi IE7 ładnie układa divy poziomo... HTML:

 <div class="container">
    <!--[if lt IE 8 ]><table><tr><![endif]--> 
    <!--[if lt IE 8 ]><td><![endif]-->
    <div class="link"><a href="en.html">English</a></div>
    <!--[if lt IE 8 ]></td><![endif]-->
    <!--[if lt IE 8 ]><td><![endif]-->
    <div tabindex="0" class="thumb"><img src="pictures\pic.jpg" /></div>
    <!--[if lt IE 8 ]></td><![endif]-->
    <!--[if lt IE 8 ]><td><![endif]-->
    <div class="link"><a href="de.html">Deutsch</a></div>
    <!--[if lt IE 8 ]></td><![endif]-->
    <!--[if lt IE 8 ]></tr></table><![endif]-->
</div> 

Mój CSS

.link {
 display:table-cell;
 vertical-align:middle;
 }
 div.container {
 margin: 0 auto;
 display:table;
 }
 .thumb {
 display:table-cell;
 float: left;
 text-align: center;
 }

IE 8 i 9 działają z CSS, podobnie jak FireFox. IE7 wygląda teraz tak samo używając Table i td & tr tagów. Na niektórych stronach IE 8 działało tylko 20% czasu, więc użyłem [if lt IE 9 ]

Pomaga to również wygładzić problemy z wyrównaniem pionowym, z którymi IE7 nie radzi sobie.

 1
Author: stack collision with heap,
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-09-07 14:36:36

Próbowałem wszystkiego i jedynym sposobem, w jaki znalazłem to wszystko cross browser było użycie Javascript / Jquery. Jest to czyste rozwiązanie lekkie: Kliknij tutaj

 0
Author: Mike6679,
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-01-23 17:29:58

IE7 również nie obsługuje display:inline-block;. Widoczny hack to zoom: 1; *display: inline; po css dla display:table-cell;

 0
Author: Phill Healey,
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
2014-05-19 19:29:59