Увеличение изображения с помощью overflow

Превьюшки на CSS Этот пример покажет вам как можно реализовать простое увеличение изображений с помощью свойства overflow. Иногда на странице не хватает места для размещения полноразмерных изображений, но в тоже время не хочется ограничиваться маленькими превью. Данный способ позволяет ограничить размер изображений, а при наведении указателя мыши показывать их в полном размере.

В основе этого способа лежит не фактическое изменение размера изображения, а изменение его видимой области, с помощью свойства overflow. Это свойство влияет на отображение содержимого, в случае если это содержимое превышает размеры родительского контейнера. Свойство overflow может принимать следующие значения: visible, hidden, scroll и auto. В этом примере мы будем использовать значение hidden, чтобы скрыть часть изображения, и visible чтобы сделать эту часть видимой при наведении указателя мыши.

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

Превьюшки на CSS

Этот способ можно применять как для одного, так и для нескольких изображений.

<a href="#"><img src="image.jpg"  alt="Мое изображение" /></a>
a{
   display:block;
   float:left;
   width:100px;
   height:100px;
   overflow:hidden;
   position:relative;
   z-index:1;		
}
a img{
   position:absolute;
   top:-20px;
   left:-50px;	
}

Если вы хотите использовать изображения разных размеров, вы можете указать отступы непосредственно для каждого изображения:

a img{
   position:absolute;
   top:-20px;
   left:-50px;	
}
a#image1 img{
   top:-28px;
   left:-55px;	
}	
a#image2 img{
   top:-18px;
   left:-48px;	
}	
a#image3 img{
   top:-21px;
   left:-30px;	
}	
.
.
.

И, наконец, прописываем свойства, чтобы изображение стало видимым при наведении мыши:

a:hover{
   overflow:visible;
   z-index:1000;
   border:none;		
}

Как вы заметили для обоих состояний контейнера используется свойство z-index. Это важно, поскольку при наведении указателя нам нужно расположить изображение выше чем соседние изображения.

  • Мое изображение
  • Мое изображение
  • Мое изображение
  • Мое изображение

Оригинал: Create Resizing Thumbnails Using Overflow Property

Обсуждение:

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

  2. Steward

    Мдя.. это конечно всё работает хоть как-то красиво если:
    1) на исходном изображении есть осмысленный участок, который можно в превью выделить.
    2) разрешение исходного изображение не больше разрешения экрана, иначе вы просто больше на сайте ничего не увидите
    3) да и вообще слишком много если….

    Сама техника интересная (впрочем и давно известная), но имеет уж слишком много ограничений…

  3. Alex

    Безусловно, это не стандарт использования CSS, только лишь пример как можно использовать стили.

  4. akella

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

    Ресайзить изменяя пропорции картинки — типично программисткий подход. Таким образом мы получаем совершенно бесполезные уменьшенные картинки. ИМХО оставлять «осмысленный участок» единственный и правильный путь создания thumbnails.
    Техника отличная ;)

  5. akella — вовсе нет. я например использую два варианта — уменьшение по фиксированной высоте с сохранением пропорций, вырезание квадрата (на выбор — по центру/справа/слева) внутри картинки с его уменьшением..

  6. akella

    Ну это уже подробности, разумеется с картинками 3000 на 3000 этот прием напрямую не катит =) А с примерно одного размера, из этого я исходил — вполне себе.

  7. Yuriy Drozdov

    Казалось бы, довольно несложный прием, а так эффектно выглядит

  8. rak

    Да…конечно выглядит прикольно и эффектно)) но и в самом деле лучше чтобы размер исходной картинки был всё-таки не очень большим иначе она закроет весь экран…и попмойму в таких случаях об экономии трафика можно не говорить))))))

  9. twin

    Полностью согласен с Юрием Дроздовым.. и так причем не редко .. легкие приемы оказываются наиболее ефективными

  10. sonya

    Спасибо огромное реализовала на своём сайте такое

  11. Alex

    Sonya, рад что это оказалось полезным.

  12. VadiM

    Смотрится довольно не плохо, спасибо за код.

  13. Пингвин

    А есть подобная штукенцыя, только для текста!?
    типа предложение…
    Наводишь на него… и весь текст!?

  14. Alex

    Если вы имеете ввиду размер текста, то вполне можно. Только нужно ли и удобно ли это?

  15. retimer

    Спасибо автору! Применил на одном своем сайте, несколько модифицировав идею — мне понравилось..

  16. Aleksandr

    Спасибо большое!!! Хочу попробовать реализовать у себя на сайте

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*