Я замечаю расхождения между браузерами в том, как интерпретируется ширина тега TH
, в частности, независимо от того, включено или нет заполнение в вычисление ширины.
Я создаю многократно используемую библиотеку для быстрой генерации и стилизации таблиц (конечно, для табличных данных). Это означает, что у меня есть полный контроль над кодом, который я генерирую, но мне нужно на самом деле решить проблему, а не искать взлом для конкретного экземпляра.
Простейшее описание проблемы
A TH
в IE9 и FF рассчитывается на основе его отступа + ширина (как и ожидалось). Chrome и Safari включают отступы по ширине, что приводит к нежелательным результатам.
Например, если для ячейки задана ширина 16 пикселей + отступы 4 пикселя, IE9 правильно отображает ячейку шириной 20 пикселей. Chrome отображает его как 16 пикселей в ширину.
Вот JS Fiddle, показывающий различия: http://jsfiddle.net/CZnau/
Вы можете видеть, как последняя ячейка имеет разные размеры в разных браузерах.
Примечания
Я знаю о размере окна, и хотя по умолчанию не включает вычисление заполнения по ширине ячейки, установка box-sizing: content-box
явно не решает проблему.
Скрипка показывает таблицу с фиксированным макетом. Я хочу использовать table-layout: fixed
для правильной обработки отображения в других сценариях. В частности, моя фактическая реализация использует переполнение текста, управление переносом и макеты переменной ширины. В моем тестировании использование фиксированного макета является единственным надежным способом, чтобы все мои требования хорошо сочетались. Кроме того, таблицы с фиксированной разметкой потенциально отображаются быстрее.
Я попытался установить ширину явно для каждого TD
, но это не решает проблему (возможно, это конфликтует с таблицей фиксированной разметки?)
Если вам нужна более подробная информация о , почему Мне нужна таблица с фиксированным макетом, попробуйте эту скрипту с table-layout: fixed
и без него и отметьте различия. При фиксированной разметке таблица имеет правильный размер до 100% и элегантно обрезает текст, даже с ячейкой переменной ширины.
http://jsfiddle.net/6GPmY/