Подтвердить что ты не робот

Chrome, Safari игнорирует максимальную ширину в таблице

У меня есть HTML-код:

<!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> 
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <title></title> 
    </head> 

    <body> 
       <table style="width:100%;"> 
          <tr> 
             <td> 
                <table style="width:100%; max-width:1000px; background:#000099;"> 
                       <tr> 
                           <td> 
                               001 
                           </td> 
                       </tr> 
                   </table> 
               </td> 
           </tr> 
       </table> 
    </body> 
    </html> 

Проблема в том, что Chrome и Safari игнорируют "max-width:1000px" Мой друг обнаружил, что мы можем предотвратить это, добавив "display:block" для внутренней таблицы, и это как-то работает.

Итак, я хочу знать, есть ли другие способы решения этой проблемы и почему это происходит?

4b9b3361

Ответ 1

Максимальная ширина применяется к элементам . <table> не является block или inline. Достаточно сложно? ха-ха. Вы можете использовать display:block; max-width:1000px и забыть о width:100%. Chrome и Safari следуют правилам!

Изменить май 2017 года: обратите внимание, этот комментарий был сделан 7 лет назад (в 2010 году!). Я подозреваю, что браузеры сменили кучу на протяжении многих лет (я бы не знал, я больше не занимаюсь веб-дизайном). Я рекомендую использовать более недавнее решение.

Ответ 2

Я знаю, что на какое-то время было дано какое-то время и с помощью рабочего обходного пути, но ответ на то, что max-width применим только к элементам блока и ссылается на источник, который не соответствует спецификации.

spec (CSS 3 spec для CSS Intrinsic и Extrinsic Sizing относится к спецификации CSS 2.1 по этому правилу) четко заявляет:

все элементы, но не замененные встроенные элементы, строки таблицы и группы строк

что означало бы, что он должен применяться к элементам таблицы.

Это означает, что поведение WebKit недочета max-width или min-width в элементах таблицы неверно.

Ответ 3

Я думаю, что вы ищете здесь:

table-layout: fixed

Примените этот стиль к таблице, и ваша таблица будет уважать назначенную ему ширину.

Примечание. Применение этого стиля непосредственно в Chrome будет выглядеть так, как будто оно не работает. Вам нужно применить стиль в вашем файле CSS / HTML и обновить страницу.

Ответ 4

Оберните внутреннюю таблицу с div и установите максимальную ширину для этого оберточного div.

Ответ 5

У меня была такая же проблема. Я использовал таблицу как средство для центра моего контента на странице, но сафари игнорировал width:100%; max-width:1200px как стиль, который я применил к таблице. Я узнал, что если я упакую таблицу в div и поставлю левое и правое поля в auto на div, она будет сосредоточена на странице и будет подчиняться атрибутам max и min width в сафари и firefox на mac. Мне еще нужно проверить проводник или хром на окнах. Вот пример:

<div style="position:relative; width:100%; max-width:1200px; min-width:800px; margin-left:auto; margin-right:auto">

Затем я вложил таблицу внутри div...

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">

Ответ 6

Я только наткнулся на этот ответ, и стоит отметить, что согласно MDN (https://developer.mozilla.org/en-US/docs/Web/CSS/max-width), их таблица совместимости для max-width говорит:

|             Feature  | Chrome        | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
--------------------------------------------------------------------------------------------------------
|applies to <table> [1]| Not supported | (Yes)           | Not supported     | (Yes) | Not supported   |

"[1] CSS 2.1 явно оставляет поведение max-width с undefined. Поэтому любое поведение соответствует CSS2.1, но более новые спецификации CSS могут определять это поведение, поэтому веб-разработчикам не следует полагаться на конкретный один сейчас".

В MDN есть некоторые интересные вещи, такие как "fill-available" и "fit-content". У нас есть некоторые вещи, на которые можно рассчитывать, когда спецификация стабилизируется и явна на этом фронте...

Ответ 7

Мне удалось решить проблему с помощью медиа-запроса:

Я заменил

max-width: 360px

с

@media (min-width: 440px) {
    width: 360px;
}

Ответ 8

Вот недвусмысленная ссылка: 10 Детали модели форматирования форматирования (w3.org)

В CSS 2.1 влияние "min-width" и "max-width" на таблицы, встроенные таблицы, ячейки таблицы, столбцы столбцов и группы столбцов - undefined.

Ссылки, приведенные ранее в этом потоке, ошибочно читают "строки таблицы" как "таблица". Этот, однако, действительно говорит "таблица". Эта часть CSS2, но CSS3 относится к CSS2 на основе max-width.

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