Картинка, фотография вылазит / выходит за пределы блока, тизера... Решения.

Главные вкладки

Аватар пользователя Serg_M Serg_M 21 декабря 2009 в 6:59

Достал меня мой узкоспециализированный сайт-хобби. Вернее надоело наблюдать посещения в количестве максимум 60 человек в сутки. Самое обидное, что весь контент заношу уже который год один, даже после того, как перевел сайт со статики на Drupal. Народ заходит, читает, пизд копи-пастит контен, но новый никто не собирается добавлять. А хочется ведь чтоб сайт жил полноценной жизнью, писались материалы, комментировались и чтоб посещений, человек 500 в месяц...

Решил сделать другой сайт, с более широкой тематикой. Скорее всего это будет очередной ...тысячный сайт которых полно, но зато свой. Подумал, кого-кого, а уж обывателей должно быть предостаточно. Может кому-то термин и покажется обидным, но в большинстве своем мы и есть обыватели, ярких индивидуальностей не так много, и их можно увидеть по телевизору. Собственно так и назвал проект "Обыватель". Как туда заманивать народ - это отдельная "песня", которую необходимо будет решать.

А вот как сделать, чтобы внешний вид сайта хотя бы сразу не отпугивал, это нужно было решать сразу. И дело не столько в надоевшей всем друпалерам стандартной фиксированной теме garland-minnelli, которую решил использовать, а в не защищенности темы от вставки больших / длинных фотографий-картинок. А они скорее всего будут, т.к. обыватель, по своей сути не компьютерный специалист и всякие width, px, Mb для него темный лес.

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

скрин 1

Существует несколько решений проблемы, и все они годятся для нормальных браузеров: Opera, Firefox... но не для гордого IE6. Конечно можно, как на drupal.ru посылать его владельцев подальше, но посмотрев статистику малопосещаемого сайта обнаружил, что доля IE6 составляет 12%. На мой взгляд это приличный контингент, который не то что послать, а и игнорировать нельзя. Поэтому задача сузилась до - чтоб это правильно работало в IE6.
Засев за интернет нашел следующие решения, являющиеся добавлением в css темы строк кода:

1) overflow: hidden
Одно из распространенных решений, придать блоку это свойство. Часть картинки выходящая за блок будет просто обрезаться. В IE6 в чистом виде не работает. Необходимо добавлять еще и width: а потом "тюнить" css. Данное решение реализовано на drupal.ru. Мне оно не нравится.

скрин 2

2) max-width: 100%
Еще одно решение. Картинка будет автоматически ресайзится до размеров блока. В зависимости от браузера и версии качество отресайзеной картинки будет разным. В IE6 не работает в принципе. Но есть обходной маневр, задание width: expression... Пишут, что эта "гадость" при неудачном раскладе (код в css), может "спалить мозг" IE6. Перепробовал наверное с полсотни вариантов, пока не вырисовалась конструкция меня удовлетворившая:

.node .content img {
  max-width: 98%;
  width: expression(this.offsetWidth > 490?"95%":"this.offsetWidth");
}

490 - это размер картинки подобраный экспериментально, после которого идет ее автоматическое уменьшение/увеличение на 95% к блоку.
И наверно правильнее вынести width: expression в корректирующий файл темы fix-ie.css (если есть).

скрин 3

3) скрипты js
существуют скрипты, которые исправляют конкретные баги IE6 или полностью делая его "правильным" браузером. Найти такой скрипт и загрузить конструкцией в page.tpl.php

<!--[if lt IE 7]>
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
<![endif]-->

По причине того, что меня устроил вариант 2) до этого варианта руки не дошли.

ВложениеРазмер
Иконка изображения foto_width_obyvatel-1.jpg126.26 КБ
Иконка изображения foto_width_obyvatel-2.jpg47.23 КБ
Иконка изображения foto_width_obyvatel-3.jpg44.53 КБ

Комментарии

Аватар пользователя Arturus Arturus 21 декабря 2009 в 7:34

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

Аватар пользователя Dan Dan 21 декабря 2009 в 10:10

У вас резиновая вёрстка? Если нет, то какой смысл загружать большую картинку? Юзайте imagecache.

Аватар пользователя Serg_M Serg_M 21 декабря 2009 в 10:38

imagecache спасает если картинку загружать на сайт. А если она будет браться извне?! Повторюсь, это подстраховка от глупого пользователя, который может впиндюрить картинку откуда угодно...