Вчера у меня есть решение с одним свойством DIV и background-image.Если мы говорим о динамическом сайте с неизвестными или не совсем понятными размерами изображения, мы можем использовать класс JavaScript Image.На самом деле это не «разводной гаечный ключ» и не ракетостроение о правильной настройке ширины и высоты.
Посмотрите на это с загруженным JQuery:
<style type="text/css">
#ribbon div {
display: inline-block; /* no hacks about left-floating images */
border: none;
border-radius: 8px; /* just for test inset shadow with rounded borders */
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
// CSS3 inset shade
-moz-box-shadow: inset 0 0 20px red;
-webkit-box-shadow: inset 0 0 20px red;
box-shadow: inset 0 0 20px red;
}
</style>
<script type="text/javascript">
$(function(){
// Here's our images. We can load a list with AJAX.
var sources = ['1.jpg','2.jpg','3.jpg'];
var imgs = [];
var ribbon = $('#ribbon'); // Image list container
// Add images to the ribbon
for (var i=0, len=sources.length; src=sources[i], i<len; i++) {
var div = $('<div>'); // Create an empty DIV
div.attr('id','thumbimg'+i); // Name our DIV for async access
div.css('display','none'); // Make it hidden while loading the image
div.appendTo(ribbon); // Add to container
imgs[i] = new Image(); // Empty Image object
imgs[i].id = 'img'+i; // Name it for DIV match
// We can get the dimensions only after the image is loaded
imgs[i].onload = function() {
var myDiv = $('#thumb'+this.id); // Matching 'thumbimgX'
myDiv.css({
'display': '', // Clear display property = show hidden DIV
'width': this.width + 'px', // Set DIV.width = Image.width
'height': this.height + 'px', // Same for height
'background-image': 'url('+this.src+')', // draw our image in background
// Note the image already loaded and the div is inserted before
// so picture just appears without lags
});
}
// Load image
imgs[i].src = src;
}
}
</script>
<body>
...
<div id="ribbon"></div>
...
</body>
Таким образом, мы можем отобразить список изображений с различными встроенными теневыми эффектами: виньетирование (
inset 0 0 60px rgba(0,0,0,0.8)
), buttonize /магнит на холодильник (
inset -4px -4px 8px rgba(0,0,0,0.2), inset 4px 4px 8px rgba(255,255,255,0.8)
) и все, что вы хотите.Нет тега IMG, поэтому при щелчке правой кнопкой мыши не отображаются параметры «сохранить изображение» или «скопировать адрес изображения».
ps упс, фиксированная загрузка изображения