Использование jQuery для настройки высоты родительского элемента в соответствии с высотой видимого дочернего элемента - PullRequest
0 голосов
/ 30 июля 2011

У меня запущено слайд-шоу в контейнере, и высота контейнера должна соответствовать высоте видимого слайда.К сожалению, изображения абсолютно расположены, и я ничего не могу с этим поделать.Чтобы справиться с этим, я использую немного магии jQuery, чтобы позаботиться о той же функциональности.

По какой-то причине мой код не работает.Всякий раз, когда размер элемента #container изменяется, функция запускается и имеет значение предполагается для регулировки высоты #main до того же значения, что и у видимого слайда.

Но, э-э ... нет,Не отображаются ошибки в моей консоли.Мысли?

http://jsfiddle.net/danielredwood/2G4ky/3/

Плагин слайд-шоу: http://jquery.malsup.com/cycle/

HTML:

<div id="container">
  <div id="main" class="home" role="main">
      <img class="slide" src="http://payload.cargocollective.com/1/0/18788/1279362/452120_800_892531_800.jpg" />
      <img class="slide" src="http://payload.cargocollective.com/1/0/18788/1279362/452125_800_37eba7_800.jpg" />
      <img class="slide" src="http://payload.cargocollective.com/1/0/18788/1279362/452132_800_7dc0b6_800.jpg" />
  </div>
</div>

CSS:

#container {
    max-width:960px;
}
#main {
    max-width:780px;
    height:520px;
    margin:0 auto 40px;
    overflow:hidden;
    background:#ccc;
}
#main img {
    width:100%;
    height:auto;
}

JavaScript:

$('.home').cycle({
    fx:'fade' 
});
$('#container').resize(function(){
      var child_height = $('.slide:visible').height();
      $('#main').css('height', child_height);
});

Ответы [ 3 ]

3 голосов
/ 30 июля 2011

Я бы предложил использовать опции обратного вызова плагина, в частности after:

$('.home').cycle({
    fx:'fade',
    after: function(){
        $('#main').css('height',$(this).outerHeight());
    }
});

Обновленная демонстрация JS Fiddle .

Ссылки:

1 голос
/ 01 августа 2011

Вместо запуска до или после обратного вызова слайд-шоу это масштабирует изображение при изменении размера окна.Отлично!

$(window).resize(function() {
    $('#main').css('height',$('img.slide:visible').height());
});
0 голосов
/ 05 июня 2012

Я нашел, что это работает хорошо:

$(window).load(function() {
var imageHeight = $(".image-box img").height();
$(".image-box img").parent().css('height', imageHeight);
});

$(window).resize(function() {
var imageHeight2 = $(".image-box img").height();
$(".image-box img").parent().css('height', imageHeight2);
}); 

Где ".image-box" - это контейнер для ваших изображений.

Я также добавил это в свой CSS для отзывчивости:

.image-box img{
max-width: 100%;
height:auto !important;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...