2014-05-30 2 views
0

сообщество!JQuery: центрирование изображений в div

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

$(document).ready(imgresize); 
$(window).on('resize',imgresize); 

function imgresize() { 

var rk = $(".rk").css('width').replace(/[^-\d\.]/g, ''); 
var img = $("img").css('width').replace(/[^-\d\.]/g, ''); 
var calc = (img - rk)/2; 
var calc2 = calc - (calc * 2) + 'px'; 

$("img").css('margin-left', calc2); 
} 

Он принимает текущую ширину изображения-обертки (например, 200px) , Затем он принимает ширину самого изображения (например, 180 пикселей).

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

Это прекрасно работает, но есть только одна проблема. Если у меня есть 3 разных изображения, все они имеют разную ширину, то эта функция принимает ширину только одного изображения и дает другим двум слишком малое или слишком большое преимущество.

Это то, что HTML выглядит следующим образом:

<div id="content-wrapper"> 
    <div class="rk"> 
     <img src="img_1.jpg"> 
    </div> 
    <div class="rk"> 
     <img src="img_2.jpg"> 
    </div> 
    <div class="rk"> 
     <img src="img_3.jpg"> 
    </div> 
</div> 

Спасибо за любую помощь заранее! -Томас


EDIT: пример задачи:

http://jsfiddle.net/R9eZu/3/

Единственное, что мне действительно нужно знать, как отделить функции для каждого IMG и его контейнера. Возможно, это работает с «.this»? - К сожалению, я действительно новичок в JQuery/JavaScript :)


EDIT 2: лучше understandig:

Изображения должны пропорционально заполнить свои контейнеры - до этого момента не его проблемы. Теперь я хочу изменить каждое изображение внутри своего контейнера на индивидуальное значение, чтобы изображения были по центру горизонтально. Например:

-image container width: 200px 
    -img1w: 300px 
    -img2w: 240px 
    -img3w: 420px 

    ... calculation is: (imgwidth - containerwidth)/2 ... 

    img1 would be shifted 50px, 
    img2 would be shifted 20px, 
    img3 would be shifted 110px. 
+0

это не вариант? http://jsfiddle.net/ChubbyNinja/R9eZu/1/ - используя css для центрирования изображения, а не javascript –

+0

спасибо за ответ, но, к сожалению, он не работает для жидкого макета:/ – Cruto

+0

Отредактировано первое сообщение :) – Cruto

ответ

4

Использование foreach для соединения в классе. Я thisk это то, что вы попросили

function imgresize() { 
    $(".rk").each(function (index, data) {  
     var rk = $(this).width(); 
     var img = $(this).find(">:first-child").width(); 
     var calc = (img - rk)/2; 
     var calc2 = calc - (calc * 2) + 'px'; 
     $(this).find(">:first-child").css('margin-left', calc2); 
    }); 
} 

http://jsfiddle.net/R9eZu/5/

+0

К сожалению, эта проблема не решена:/- отредактировал первый пост! – Cruto

+0

@Cruto это решить? http://jsfiddle.net/R9eZu/4/ –

+0

Нет, извините:/Изображения должны пропорционально заполнять их контейнеры - к этому моменту это не проблема. Теперь я хочу изменить каждое изображение внутри контейнера на индивидуальное значение, чтобы изображения были расположены по горизонтали. Например: ширина контейнера изображения: 200 пикселей, img1w: 300 пикселей, img2w: 240 пикселей, img3w: 420 пикселей; ... вычисление: (imgwidth - containerwidth)/2 ... img1 будет сдвинуто на 50 пикселей, img2 20px и img3 110px – Cruto

Смежные вопросы