Что делать, если фон веб-страницы имеет значение - PullRequest
1 голос
/ 17 мая 2010

У меня сложное фоновое изображение и изображения, которые должны быть на точных позициях фонового изображения.

Как организовать веб-страницу?

Я не могу использовать абсолютные позиции, потому что мне нужно организовать фон, чтобы он хорошо смотрелся на любом мониторе, в любом разрешении и любом браузере. Он может быть выровнен по центру или чему-то еще.

Веб-страница может быть написана только с помощью Javascript или с помощью библиотеки, например JQuery .

Вот пример того, какую веб-страницу в соответствии с фоновым изображением и организацией изображений на ней я хотел бы иметь.

http://desandro.com/portfolio/

(фоновое изображение и точки на нем)

Заранее спасибо.

EDIT

Я добавлю свой ответ в комментариях к вопросу.

Фон будет представлять собой набор кругов в виде матрицы (m * n), беря изображение (один круг) и повторяя его на странице, или это будет одно фоновое изображение со всеми этими кругами на нем. Но некоторые из этих кругов должны быть отдельными img, а не в фоновой части, чтобы пользователь мог щелкнуть по ним, но он не должен заполнять никаких различий, как если бы все круги были одного типа, только некоторые из них способны щелкать. Если бы я мог это устроить, чтобы кнопки могли произвольно меняться, это было бы здорово. Надеюсь, я все объяснил ясно.

Ответы [ 2 ]

6 голосов
/ 17 мая 2010

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

Если это дизайн портфолио, похожий на связанный, то вам нужно знать о 2 вещах:

  1. Снимок экрана сайта - контент, а не презентация. Люди приходят в ваше портфолио, чтобы увидеть, что вы сделали, важно, чтобы вы знали разницу между HTML img (контент) и фоновым изображением (презентация).
  2. Если у вас есть масштаб изображения, он будет выглядеть ужасно при разных разрешениях. Если вы растянете изображение или уменьшите его размер, это приведет к искажению изображения, что не очень приятно видеть в портфолио. Я советую вам быть прагматичными и выбирать, чтобы ваши изображения были фиксированного размера, что также поможет в добавлении ваших горячих точек в верхней части изображения. Вот как у автора связанного портфолио есть подходы, с дополнительным фоновым изображением, чтобы красиво разделить страницу.

Еще одна вещь, которую стоит отметить, это то, что связанный пример использует canvas для рисования точек из-за линий, соединяющих каждую из них. Canvas делает это легко, будучи динамичным, но не поддерживается в IE без использования плагинов. Однако, если вам не нужно менять эти точки очень часто, вы можете добиться аналогичного эффекта только с помощью изображений и CSS.

В остальной части этого ответа предполагается, что вы используете HTML4 / XHTML. В связанном примере используется HTML5 (некорректно местами), но без особых требований для использования этой технологии, я предполагаю, что вы не используете HTML5.

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

<div class="article">
  <div>
    <img src="my_screenshot.png" alt="Appropriate alt text here" />
    <ul>
      <li class="note1">Here is an interesting part of the image</li>
      <li class="note2">This is also interesting</li>
      <li class="note3">Look at this! Pretty cool huh?</li>
    </ul>
  </div>
</div>

Наценка: сделано. Вы можете использовать это для каждой части и просто заменить содержимое по мере необходимости. Если вы считаете, что порядок точек значительный, замените ul на ol.

Далее вы хотите подумать о CSS. Это только основы для начала, этого должно быть достаточно, чтобы указать вам правильное направление. Вам нужно установить div.article для позиционирования относительно, чтобы позволить позиционировать абсолютные дочерние элементы относительно левого верхнего угла этой конкретной записи. Также установите обертку div ширину, высоту и отцентрируйте ее (также установите размеры img). Наконец, вам нужно подготовить li заметки для позиционирования.

.article {position:relative}
  .article div{position:relative; width:800px; height:600px; margin:0 auto}
    .article img {display:block; width:800px; height:600px}
    .article ul,.article ul li {position:absolute; list-style:none; top:0; left:0; margin:0; padding:0}
    /* Debug styles */
      .article ul li {height:20px; width:20px; background-color:#ff0000}

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

.article ul li.note1{top:156px; left:89px}

Этого должно быть достаточно, чтобы поставить вас на правильный путь. Как только вы разберетесь с этим, вы можете начать добавлять фоновые изображения для заметок и любой JavaScript для добавления всплывающих подсказок и так далее. Что касается использования нескольких записей на странице, присвойте каждому div.article уникальный идентификатор и используйте его для более точного указания li.

РЕДАКТИРОВАТЬ: Живой пример с небольшим количеством JS, чтобы показать зависания. Извините за отсутствие реальных изображений, ужасные цвета должны быть достаточно визуальными;)

4 голосов
/ 17 мая 2010

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

Обычно у вас есть фоновое изображение, например позади центрированного элемента, который имеет фиксированную ширину. Этот элемент может иметь свойство CSS position: relative, поэтому любые абсолютно позиционированные элементы располагаются относительно верхнего левого угла этого элемента (вместо верхнего левого угла документа).

Кажется, именно так делает сайт, на который вы ссылаетесь. Фоновое изображение не масштабируется при изменении размера окна браузера.

Масштабирование фонового изображения и размещение на нем элементов с использованием относительных единиц (left: 3.5%) возможно, но нецелесообразно. В старых браузерах методы масштабирования изображений не оптимальны. (Метод масштабирования может быть установлен в более современных браузерах.), И я ожидаю огромных кросс-браузерных проблем с абсолютным позиционированием с использованием относительных единиц измерения.

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