Проблемы — макет таблицы, iFrames, устаревание кода

Я работаю с простой табличной компоновкой, в которой используются iFrames, как показано в примере ниже. Этот код хорошо отображается во всех современных браузерах. Интерактивные фреймы обычно заполнены длинными таблицами данных, но в них нет странного поведения или обрезки.

Меня беспокоит то, что это ВЫГЛЯДИТ мне как действительно плохой взлом. Помимо недостатков табличного макета, должен ли я беспокоиться об устаревании всех атрибутов width="100%" height="100%" тегов HTML и iFrame?

Я знаю, что CSS может многое, если не все, но я не хочу использовать плавающие хаки, и я не смог найти ничего, что работало бы во всех современных браузерах.

Чтобы было ясно, я ищу мнения и предложения относительно того, подходит ли это решение для следующих нескольких лет, или мне следует продолжить и углубиться в CSS-хаки.

Спасибо за любой отзыв.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled</title>
 <style type="text/css">
   <!--
    html, body
    {
      height: 100%;
      margin: 0px;
    }
    -->
 </style>
</head>
<body>
   <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
    <tr>
        <td colspan="2"><div align="center">This is the header.</div></td>
    </tr>
    <tr>
        <td height="100%">
            <iFrame src="pane1.php" width="100%" height="100%" frameborder="0"></iframe>
        </td>
        <td height="100%">
            <iFrame src="pane2.php" width="100%" height="100%" frameborder="0"></iframe>
        </td>
    </tr>
    <tr>
        <td colspan="2">This is the footer.</td>
    </tr>
   </table>
</body>
</html>

person Fred Wilson    schedule 17.04.2009    source источник


Ответы (4)


Я не вижу ничего, что будет удалено из любого браузера в ближайшие несколько (или несколько) лет.

Тег table является допустимым и необходимым набором тегов. Без него невозможно отобразить табличные данные.

Случилось так, что люди начали использовать его для отображения очень сложных макетов, которые в конечном итоге невозможно было поддерживать.

Никто не собирается стрелять в вас за использование таблиц так, как вы это делаете. Это очень просто и выполняет работу, пока вы разрабатываете, так что считайте это просто итерацией. Итеративная разработка — это хорошо. Как только вы разберетесь с макетом на основе CSS, код здесь достаточно прост, чтобы заменить его.

person supergalactic    schedule 17.04.2009
comment
Да, ленивый кодер во мне согласен с тобой. Это очень простой макет, и я просто думаю, что если бы IE немного лучше работал со спецификацией, я бы просто использовал чистый CSS. Имея немного больше знаний, я мог бы изолировать ошибку ... она настолько случайна, что я сбежал обратно к столам. ;) - person Fred Wilson; 18.04.2009

Вероятно, было бы лучше перейти на стили css, если вы беспокоитесь об устаревании. Вы все еще можете использовать макет таблицы, если вам удобнее, хотя я предпочитаю плавающие элементы div.

person Jeremy    schedule 17.04.2009
comment
У меня есть версия с чистым CSS. Очень жаль, что левый iFrame иногда пропадает в IE без видимой причины. Я предполагаю, что пока: ‹!-- ‹!DOCTYPE HTML PUBLIC --//W3C//DTD HTML 4.01 Transitional//EN› --› и ‹!DOCTYPE HTML PUBLIC --//W3C//DTD HTML 4.01 Transitional// RU w3.org/TR/html4/loose.dtd› поддерживаются, хромое табличное решение поможет. Мне лень не заставить CSS работать в IE. Спасибо за ответ! - person Fred Wilson; 17.04.2009
comment
Вы получите очень разные результаты, если будете использовать первый тип документа (неполный - по существу то же самое, что и без типа документа) по сравнению со вторым типом документа. Поплавки с процентами и переполнение: авто или переполнение: прокрутка должны дать вам примерно такие же результаты без таблиц. - person Traingamer; 17.04.2009
comment
Вы правы.. были разные результаты! :o) Оригинальное решение на чистом CSS работало очень хорошо, пока мой клиент не открыл страницу в IE7 на Vista Home Basic. Левого iFrame просто не было. В любом другом браузере, включая IE7 на Vista Ultimate (и это была та же версия браузера!), все работало нормально. Единственный способ успокоить клиента в крайнем случае состоял в том, чтобы быстро вернуться к неудачному решению за столом. Бле.. и спасибо за комментарий! - person Fred Wilson; 17.04.2009

Насколько мне известно, нет опасности, что тег станет устаревшим. И у меня есть это из очень хорошего источника!

см. Являются ли IFrames (HTML) устаревшими?

person Peter    schedule 18.04.2009

Устаревание означает, что функции не будут представлены в будущей версии (X)HTML. Пока что все браузеры поддерживают старые версии HTML, но я бы не стал на это полагаться.

Все, что вы делаете, и многое другое можно сделать с помощью CSS без использования хаков. Выполнение упражнения поможет вам сохранить соответствующие навыки. Страница, которая у вас есть прямо сейчас, требует для отображения два дополнительных HTTP-запроса; является ли это проблемой, зависит от того, сколько людей запрашивают страницу.

person Scott    schedule 17.04.2009
comment
Я согласен, что поддержание соответствующих навыков очень важно. В этом приложении iFrames работают лучше всего благодаря спецификациям рабочего процесса для приложения. Каждая сторона имеет сетки, которые ведут к формам и т. д., и они должны работать без обновления всей страницы. Я бы поместил iFrame в DIV, но ошибка в IE (и только в IE) делает это серьезной проблемой, потому что левый iFrame иногда исчезает без видимой причины. Извините, если я упустил суть. - person Fred Wilson; 18.04.2009