В структуре HTML каждому входу должно предшествовать его метка, а не иметь метки в одной строке и вводить их на следующем.
Однако у вас есть очень конкретный дисплей, который вы хотите, и вы поддерживаете IE7 (без display: table
), поэтому я думаю, что вам лучше всего использовать таблицу.
Вы может это сделать доступным, если взять эти вещи во внимание:
Используйте основную таблицу макета для вашей формы, и включает в себя дополнительный атрибут на стол теге:
<table role="presentation">
Это означает, что таблица не является таблицей с точки зрения доступности. (I только когда-либо рекомендую это при поддержке макетов IE7!) Не используйте теги <th>
.
Главное, чтобы читатели экрана при заполнении были явным отношением ввода ярлыков.
<label for="input_id">My label</label>
<input type="text" id="input_id">
Вы можете узнать, работает ли это, щелкнув по метке, он должен поместить курсор на вход.
Однако, ваш взгляд на чтение нуждается в другом подходе. Когда у вас есть строка элементов вверху, которые относятся к строке элементов под ней, это определение таблицы данных. Поэтому, когда страница сохраняется (или как он преобразует в представление чтения), используйте таблицу данных, например:
<table>
<tr>
<th>Customer account number</th>
[other <th>s]
</tr>
<tr>
<tr>
<td>023456353434</td>
...
После считывания чтения с экрана он будет читать «заголовок» (например, клиент номер счета) перед контентом (023 ...).Таким образом, изменения:
- Удалить роль
- Преобразовать верхнюю строку в
<th>
s
Это должно быть сказано, что это хак, это не особенно надежной, и я, конечно, Wouldn Рекомендовать это для чувствительного сайта. Это просто необходимый макет и поддержка браузера, которые приводят к этому.
Вот скрипка: http://jsfiddle.net/YwMEu/3/ для разметки –