Отрегулируйте размер абсолютных позиционных элементов в зависимости от высоты тега заголовка для адаптивного сайта.

0

У меня возник вопрос о том, как настроить абсолютные позиционные DIVs для регулировки высоты на основе содержимого, содержащегося в теге заголовка. Дизайн требует, чтобы цветные полосы расширялись за пределами области содержимого (макс. 1170 пикселей), которая центрирована на экране.

У меня есть HTML/CSS, но я решил, что мне нужно будет использовать JQuery, потому что реализация должна быть в WordPress, поэтому возникла необходимость придумать систему, которая может найти любые теги h2 и h3 с классом ".bar "в пределах указанного содержимого div".main ", чтобы затем добавить соответствующую установку DIV-тега, чтобы получить желаемый вид."

Проблема заключается в изменении размера браузера. Когда заголовки разбиваются на две строки, кроме обновления сайта, размеры баров больше не совпадают. Я попробовал $(window).on('resize', function(){, но он продолжает добавлять новые divs, и он становится занятым.

Здесь более упрощенный пример конструкции

HTML

<div class="main">
<h2 class="bar">Even the all-powerful Pointing</h2>
<p>Has no control about the blind texts it is an almost unorthographic life One day     however a small line of blind text by the name of Lorem Ipsum     decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didnt listen.</p>
<h3 class="bar">She packed her seven versalia</h3>
<p>Put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way. On her way she met a copy.</p>
</div>

CSS

.gray-bar {
  background: #888f95;
  position: absolute;
  left: 0;
  right: 42.7%;
  height: 5px;
  z-index: -1;
}
.main h2.bar, .main h3.bar {
  background: #888f95;
  color: white;
  padding: .33em 0;
}
.main{
  width: 50%;
  margin: 0 auto;
  background-color: yellow;
}

JQuery

jQuery(document).ready(function($) {
$( ".main h2.bar" ).wrapAll( "<div class='section-head' />");
$( ".main h3.bar" ).wrapAll( "<div class='section-head' />");
$( ".main" ).find( ".section-head" ).prepend("<div class='gray-bar'></div>");
var heads = 0;
$( "div.section-head" ).each(function() {
    heads++;
    var foo = "foo"+heads;
    $( this ).addClass(foo);
    newHead = "."+foo;
    var z3 = $(newHead).height();
    $(newHead).children(".gray-bar").css("height", z3);
});
});

Вот сценарий примера с моим Javascript http://jsfiddle.net/unwrittendevin/PB48u/

Теги:

1 ответ

0

Я собрал небольшое "доказательство концепции" FIDDLE, которое будет обновлять размер абсолютно позиционированного div всякий раз, когда прокручивается окно. Размер изменяется пропорционально в зависимости от высоты другого div.

Вы нажимаете на любой из синих квадратов, а высота всего div изменяется. При следующем прокрутке окна фиксированный div изменит свой размер.

Это вообще то, что вы ищете?

JS

$('.variablediv').on('click', function(){
    $('.variablediv').css('height', '70px');
});

$( window ).scroll(function(){
    var heightcontainer = $('.container').height();
    var heightfixeddiv = +heightcontainer;
    $('.absolutediv').css( 'height', heightfixeddiv );
});
  • 0
    Я искал, есть ли способ повторно отрегулировать размер абсолютного позиционированного div, когда размер экрана уменьшается. Это заметно, когда h2 переходит на вторую строчку. Я получил его для работы с событием изменения размера, но есть ли лучший способ сделать это? http://jsfiddle.net/unwrittendevin/t4SMy/
  • 0
    Хорошо, но я не вижу .on ('resize' в вашем js. Можете ли вы добавить это и, возможно, более подробно рассказать о проблеме? Она не должна "добавлять" div, просто перемещать их при изменении размера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню