Этот код предназначен для изменения расположения галерейных изображений внутри их квадратных блоков.Все изображения имеют заданную высоту, например, 100 пикселей.Но их ширина различна.Вместо того, чтобы показывать только самые левые 100px каждого изображения, я бы предпочел, чтобы он показывал центр.
Все, что мне нужно, это просмотреть каждое изображение и изменить свойство left, чтобы сместить изображения влево.
$('img.gall_imgs').load(function() {
var $imgWidth = parseInt($(this).width); // "$(this)" or "this"? parseInt() needed?
var $divWidth = parseInt($(this).closest('div').width);
if($imgWidth > $divWidth) { // if img is wider than its containing div, we'll shift it left
var $position = -1 * ($imgWidth/2 - $divWidth/2); // will give decimals?
$position = parseInt($position) + "px"; // make $position format "123px". parseInt() needed here?
// var $position = '-50px'; // tested with pre-set position
this.css("left", $position); // "$(this)" or "this"?
}
//}
});
Кроме того, я даже не знаю, как проверить значения переменных внутри jquery.Я попытался добавить предупреждение ($ imgWidth), но оно, очевидно, не сработало.
РЕДАКТИРОВАТЬ: Вот CSS и HTML, которые у меня сейчас есть:
.gall_thumb_img { // the div surrounding the img
width:200px;
height:200px;
margin-left:auto;
margin-right:auto;
overflow:hidden;
text-align:center; // just added this per suggestions. No effect
}
.gall_thumb_img img{ // the img
position:absolute;
display:block;
height:200px;
min-width:200px;
}
HTML:
<div id="gall_box">
<div class="gall_thumb_box" id="gall_thumb_box_0" >
<div class="gall_thumb_img" id="gall_thumb_img_0" >
<a href="?c=ecards&v=single&idx=23&img_dir=nature">
<img class="gall_img" id="img0" src="http://example.com/small.jpg?20111211044810"></a>
</div>
</div>
</div>
РЕДАКТИРОВАТЬ2: Вот что я изменил jquery на основе различных предложений.Все еще без изменений в конечном результате.
$(window).load(function() {
$('img.gall_imgs').each(function() {
var imgWidth = $(this).width(); // "$(this)" or "this"?
var divWidth = $(this).closest('div').width();
alert(imgWidth);
if(imgWidth > divWidth) {
var position = -1 * (imgWidth/2 - divWidth/2); // will give decimals?
position = position + "px"; // make position format "123px".
// var position = '-50px'; // tested with set position
this.css("left", position); // "$(this)" or "this"?
}
});
});
Центр выравнивания текста - хорошая идея, которую я буду использовать, если смогу заставить его работать, но я все еще хотел бы знать, почему мой код jquery не работает,Спасибо.