Семантическое представление диаграммы - PullRequest
3 голосов
/ 25 ноября 2008

Я перекодирую старый сайт, который содержит диаграмму, подобную этой:

альтернативный текст http://dl.getdropbox.com/u/240752/rental-chart.gif

Как бы эта диаграмма была представлена ​​в чистом HTML? Я не хочу просто включать это как изображение.

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

Любые предложения приветствуются.

Ответы [ 6 ]

8 голосов
/ 25 ноября 2008

Что не так с изображением?

В большинстве случаев, когда вы видите в Интернете информацию о графике, создается сгенерированный файл .jpg или .png.

У всех этих дизайнеров что-то не так?

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

Используйте изображение и текст "alt" с настоящим английским описанием "Диаграмма, показывающая, что продукт ACME стоит всего 49 долларов по сравнению с конкурентами: Rental Company 4 по 51 доллару .......

3 голосов
/ 25 ноября 2008
<div class="chart">
 <h3>Price for two weeks</h3>
 <div class="companies">
  <div class="company_scale"></div>
  <div class="company1">
   <span class="name">Company 1</span><span class="cost"> $78</span>
  </div>
  <div class="company2">
   <span class="name">Company 2</span><span class="cost"> $74</span>
  </div>
  <div class="company3">
    <span class="name">Company 3</span><span class="cost"> $60</span>
  </div>
  <div class="company4">
    <span class="name">Company 4</span><span class="cost"> $55</span>
  </div>
  <div class="acme">
    <span class="name">Acme Product</span><span class="cost"> $49.95</span>
  </div>
 </div>
</div>

Или что-то подобное. Вы можете указать ширину с помощью CSS, а скрыть «стоимостные» классы с помощью CSS.

Я испытал желание использовать список определений, но было бы сложнее получить иерархические ассоциации в CSS.

Преимущество этой разметки заключается в том, что при визуализации без каких-либо данных стиля она сохраняет большую часть своего первоначального значения:


<h3>Price for two weeks</h3> Company 1 $78
 Company 2 $74
 Company 3 $60
 Company 4 $55
 Acme Product $49.95

Настольная модель:

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

Прокрутите вниз, чтобы увидеть его в действии (истекает довольно быстро) http://www.webdevout.net/test?03

Исходное содержание следует

<div class="chart">
 <h3>Price for two weeks</h3>
 <table class="companies">
  <thead>
  <tr class="titles">
    <td>Company</td><td>Price</td>
  </tr>
  </thead>
  <tbody>
    <tr class="company1">
      <td class="name">Company 1</td>
      <td class="cost">$78</td>
    </tr>
    <tr class="company2">
      <td class="name">Company 2</td>
      <td class="cost">$74</td>
    </tr>
    <tr class="company3">
      <td class="name">Company 3</td>
      <td class="cost">$60</td>
    </tr>
    <tr class="company4">
      <td class="name">Company 4</td>
      <td class="cost">$55</td>
    </tr>
   <tr class="acme">
      <td class="name">Acme Product</td>
      <td class="cost">$49.95</td>
    </tr>
  </tbody>
  </table>
</div>

div.chart 
{ 
  border: 1px solid #DDD;
}
div.chart table, 
div.chart tbody, 
div.chart thead,
div.chart tr 
{ 
  display: block; 
}
div.chart td 
{ 
  display: inline-block;
  overflow-x: hidden;
}
div.chart {
  padding: 10px;
}
div.chart td.cost, div.chart thead td { 
  display: none;
}

div.chart tbody tr td { 
  background-color: #999;
  padding: 4px;
  margin-top: 16px;
  text-align: right;
}

div.chart  tr.company1 td { 
  width:260px;
}
div.chart tr.company2 td { 
  width:246px;
}
div.chart tr.company3 td { 
  width:200px;
}
div.chart tr.company4 td { 
  width:183px;
}

div.chart tbody tr td.cost { 
  display: inline-block;
  background-color: inherit;
  color: #F00;
  font-size: 80%;
  width: 80px;
}
div.chart  tr.acme td { 
  background-color: #99F;
  width: 166px;
}
div.chart tbody  tr.acme td.cost {
  color: #000;
  background-color: #FF9;
}

2 голосов
/ 25 ноября 2008

Итак, диаграмма - это графический элемент, я предполагаю, что вы хотите, чтобы данные были доступны как для текстовых браузеров, так и для поисковых систем (?): В этом случае использование <table> для данных, представленных в графике, равно на самом деле правильно . Я знаю, что многие люди боятся таблиц, потому что все говорят о дизайне «без таблиц». Но для таблиц предназначались таблицы.

Я бы поставил таблицу под (или выше, помимо прочего) изображением диаграммы с данными, отображаемыми в таблице. Диаграмма хороша для визуализации различий и не очень хороша для просмотра фактических значений; поэтому таблица также является хорошим дополнением к графике.

Если диаграмма не очень сложна (как в этом примере), вы также можете просто добавить альтернативный текст с простым английским описанием диаграммы, что-то вроде этого:

<img alt="The price for two weeks is 80 dollars at rental company 1, 
73 dollars at ... The best service and price of 48 dollars 
you get at acme product, plus you can keep it for life" />

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

1 голос
/ 25 ноября 2008

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

По стечению обстоятельств, после публикации этого сообщения я вчера посмотрел everyblock.com и заметил, что у них есть особенно хорошая реализация графиков в html / css, на которую стоило бы взглянуть.

0 голосов
/ 25 ноября 2008

См. Отличную статью о CSS для гистограмм на сайте "Яблоки в апельсины".

(Изменить: это та же ссылка, которую опубликовал @ Сэм Мюррей-Саттон выше - извините)

0 голосов
/ 25 ноября 2008

Вы также можете рассмотреть возможность использования только таблицы в своем HTML, а затем использовать Javascript для генерации таблицы: http://www.wait -till-i.com / 2008/01/08 / generate-charts-from-available- данные столы-используя-на-Google-чарты-апи /

Но для диаграммы, такой как изображение, которое вы предоставили - где это просто маркетинговый образ, а значения не имеют реального значения - тогда подойдет только хорошее альтернативное текстовое описание.

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