#jquery #css #overflow
#jquery #css #переполнение
Вопрос:
Вот моя скрипка http://jsfiddle.net/vZjnd
Учитывая факты
.высота оболочки фиксирована.
.главное — автоматическое переполнение.
. содержимое слайда является переменным, поэтому высота время от времени меняется.
моя цель
.main будет увеличен (высота уменьшена), поскольку .slide занимает часть .wrapper
Есть идея?
Комментарии:
1. ваш html изначально плохо разработан.
2. Это просто фиктивный файл. Не стесняйтесь изменять @Royi.
Ответ №1:
Вот мое решение:
$('#up').click(function() {
$('.slide').slideUp(function() {
$('.main').height($('.main').height() $('.slide').height() 'px');
});
});
$('#down').click(function() {
$('.slide').slideDown(function() {
$('.main').height($('.main').height() - $('.slide').height() 'px');
});
});
код:http://jsfiddle.net/vZjnd/5
Вы можете использовать animate
, чтобы сделать это более плавным.
Комментарии:
1. Отличное решение. Просто не забудьте отключить нажатую вами кнопку, чтобы вы не могли скользить вверх, если она уже поднята, поскольку она будет продолжать добавлять / удалять высоту при каждом нажатии. Еще выполните проверку высоты 🙂
2. Спасибо, Сэмич, можем ли мы заставить его работать параллельно со slideUp / Down?
3. Небольшая ошибка при повторном нажатии одной и той же кнопки, но 1 в любом случае.
4. Ребята, я просто хотел показать, где OP следует искать решение :). Итак, извините за ошибки в коде 😉
Ответ №2:
Единственный способ, который я смог придумать для достижения этой цели, — это выполнить следующее: добавить новое правило к onclick, $(‘.main’).animate({‘height’: ‘-=15px’}, 500); или использовать = при его удалении? но это означает, что полоса прокрутки исчезнет во время анимации.
Комментарии:
1. Как мы можем вычесть 15 пикселей, поскольку высота слайда является переменной?