Свернутые столбцы в веб-браузере Android (при использовании страниц с автоподгонкой) - PullRequest
12 голосов
/ 23 ноября 2011

Обновление: я зарегистрировал сообщение об ошибке в Google - http://code.google.com/p/android/issues/detail?id=22447&can=4&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars


Обновление: @benni_mac_b указывает, что проблема исчезнет, ​​если вы отключите автоподбор страниц. Это «решение» работает на 2.1 и 2.2 - оказывается, что телефон 2.3, на котором я тестировал, отключил автоподгонку, и при включении стол снова ломается.

Полагаю, я сейчас ищу способ запретить Android автоматически подгонять таблицу (и переопределять настройки браузера). Мне не нравятся мои шансы, судя по моим поискам в Google.


Я столкнулся со странной проблемой с веб-браузером Android и составными столбцами - например, если у меня есть такая структура:

<table class="amhtable">
    <col width="16.72%" />
    <col width="16.62%" />
    <col width="16%" />
    <col width="16%" />
    <col width="34.67%" />

    <thead>
        <tr class="heading">
            <td>Modifying circumstance</td>
            <td>Common pathogens</td>
            <td>First choice</td>
            <td>Alternative</td>
            <td>Additional information</td>
        </tr>
    </thead>

    <tr class="heading2">
        <td colspan="5" width="100%">SECTION TITLE</td>
    </tr>

    <tr class="body">
        <td>column 1</td>
        <td>column 2</td>
        <td>column 3</td>
        <td>column 4</td>
        <td>column 5</td>
    </tr>

</table>

Составной ряд уменьшится, чтобы соответствовать размеру экрана, даже если сама таблица все еще шире. Это означает, что в некоторых случаях фон строки heading2 отсутствует в большинстве таблиц, что делает его довольно странным.

Этого не происходит на iPhone или любом другом браузере настольного компьютера (Chrome, IE, FF, Safari), о котором мы знаем, - только на Android (несколько устройств и версий).

CSS:

.amhtable {
        border-width:1px;
        border-style:solid;
        border-color:#000000;
        border-collapse: collapse;
        border-spacing: 0;
        padding: 5px;
        font-weight: normal; 
        color: #000000;
}

.amhtable td {
        border-width:1px;
        border-style:solid;
        border-color:black;
        padding: 3px;
}

.amhtable th {
        border-width:1px;
        border-style:solid;
        border-color:#777777;
        background-color:#0084D6;
}

.amhtable .heading {
        border-width:1px;
        border-style:solid;
        border-color:#000000;
        background-color:#567ac4;
        font-weight: bold;
        font-style: italic;
        font-family: Verdana, Arial, Helvetica, DejaVu Sans, Bitstream Vera Sans, sans-serif; 
}

.amhtable .heading2 {
        border-width:1px;
        border-style:solid;
        border-color:#000000;
        background-color:#82a3e7;
        font-weight: bold;
        font-family: Verdana, Arial, Helvetica, DejaVu Sans, Bitstream Vera Sans, sans-serif; 
}

Пока что я пробовал следующее:

  • Снятие <col> элементов
  • Добавление шестого столбца и пустых <td> элементов в каждую строку
  • Удаление стиля сглаживания границ (после прочтения Отображение в браузерах Webkit для таблицы в зависимости от colspan )
  • Установка ширины составного столбца на 100% (вместе с вышеуказанными изменениями)
  • Установка фиксированной ширины в таблице и установка расширенного столбца на 100%
  • Заменены% ширины столбцов с фиксированной шириной в пикселях
  • Установите относительное положение для составной ячейки (а затем и строки) и установите влево и вправо на 0.
  • Установите положение, которое будет относительным для строки с оставленным 0 и шириной 1000px
  • Завернул стол в ширину 100% <div>

Одна вещь, которую мы заметили вчера, состоит в том, что таблица должна иметь черную границу 1px - но на устройствах 2.1 / 2.2, которые мы тестируем, есть пробел, где строка не завершается. Это действительно кажется проблемой рендеринга на этих устройствах.

Ответы [ 5 ]

4 голосов
/ 30 ноября 2011

Интересно, поможет ли следующее:

  1. Обернуть эти строки тела в элемент tbody:

  2. Удалите ширину = "100%" из строки заголовка. Colspan = "5" в любом случае должен охватывать ширину таблицы с соответствующим размером браузера. Интересно, интерпретирует ли браузер Google это буквально как ширину текущего экрана?

  3. Добавьте следующее к классу для .amhtable:

    float: left;
    width: 100%;
    

Чтобы увидеть, если это ошибка относительного размера.

Из интереса, происходит ли это, если строка заголовка появляется где-нибудь в таблице? Или это только в первый раз, когда это происходит после thead?

<table class="amhtable">
    <col width="16.72%" />
    <col width="16.62%" />
    <col width="16%" />
    <col width="16%" />
    <col width="34.67%" />

    <thead>
        <tr class="heading">
            <td>Modifying circumstance</td>
            <td>Common pathogens</td>
            <td>First choice</td>
            <td>Alternative</td>
            <td>Additional information</td>
        </tr>
    </thead>

    <tbody>
        <tr class="heading2">
            <td colspan="5">SECTION TITLE</td>
        </tr>

        <tr class="body">
            <td>column 1</td>
            <td>column 2</td>
            <td>column 3</td>
            <td>column 4</td>
            <td>column 5</td>
        </tr>
 </tbody>

</table>

Что произойдет, если вы попробуете это?

Другие вещи, которые вы можете попробовать, - это поместить текст фактического заголовка в такой элемент, как:

<tr class="heading2">
    <td colspan="5"><span style="100%">SECTION TITLE</span></td>
</tr>
2 голосов
/ 30 ноября 2011

Я не уверен, но попробуйте этот метод http://jsfiddle.net/DhAYd/9/

2 голосов
/ 29 ноября 2011

Предполагается, что общая ширина столбцов составляет 100,01%?

Попробуйте уменьшить первый столбец до 16,71%?

2 голосов
/ 26 ноября 2011

Возможно, это ошибка, но вы пытались поставить на стол:

table class="amhtable" **cellspacing="0"**
1 голос
/ 02 декабря 2011

(X) HTML-документ в вашем отчете об ошибке недействителен;в лучшем случае это неполно.Требуется объявление DOCTYPE (HTML 4.01, XHTML 1.0) или тип документа (HTML5).В текущем рабочем варианте HTML5 элемент col не имеет атрибута width (W3C Validator говорит, что он устарел; вместо этого следует использовать CSS).Но это также не может быть допустимым HTML или XHTML 1.0, так как элемент title равен отсутствует .

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

Кроме того, проценты в (X) HTML не указаны для поддержки десятичных чисел , хотя этоявно не запрещено.Валидатор синтаксиса HTML не может перехватить эту ошибку, поскольку %Length является псевдонимом для CDATA (любые символьные данные).

Вам следует

  1. Проверить документ: W3C Validator
  2. Сделайте его действительным.
  3. Посмотрите, использует ли целочисленные проценты или CSS.

Только если вы все еще видите другое поведение, вам следуетсообщить об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...