|
01.09.2012, 12:53
|
Новичок на форуме
|
|
Регистрация: 01.09.2012
Сообщений: 4
|
|
Помогите со скроллингом
На сайте http://juliapetit.com.br при прокрутке постов используется красивый эффект, который я давно хотел применить, но не знал как реализовать. При прокрутке вниз к следующему посту предыдущий пост постепенно становится невидимым, причём прокрутка постов происходит с разной скоростью. Пожалуйста, подскажите как прикрутить этот эффект к своему сайту.
|
|
01.09.2012, 13:14
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Принцип :
1. При cкроле контролируется нижний край сообщения - если он в пределаx видимости и отстоит выше 30% высоты экрана - сообщение переводится в position:fixed; и придаётся новый класс Opacity
и отслеживается отступ верхнего края следующего сообщения от верхнего края экрана.
2. % Отступа верхнего края следующего сообщения - явлется коэффициентом прозрачности к предыдущему(c классом Opacity
|
|
01.09.2012, 13:39
|
Новичок на форуме
|
|
Регистрация: 01.09.2012
Сообщений: 4
|
|
Спасибо, принцип понятен, но я чайник в javascript и надеюсь на подсказку как бы прикрутить готовый скрипт. Как я понимаю, часть скрипта, ответственная за этот эффект, находится где-то здесь: http://juliapetit.com.br/wp-content/...s.js?ver=3.3.1
|
|
01.09.2012, 22:56
|
Новичок на форуме
|
|
Регистрация: 01.09.2012
Сообщений: 4
|
|
Помогите, кто-нибудь, пожалуйста
|
|
02.09.2012, 12:29
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
скорей всего не лучший вариант
<style>
div {
height: 200px;
}
</style>
<div class="op" style="background: red"></div>
<div class="op" style="background: green"></div>
<div class="op" style="background: blue"></div>
<div class="op" style="background: red"></div>
<div class="op" style="background: green"></div>
<div class="op" style="background: blue"></div>
<script>
window.onload = function () {
if (!document.getElementsByClassName) {
document.getElementsByClassName = function (className) {
var elems = document.getElementsByTagName('*');
var len = elems.length;
var mas = [];
for (var i = 0; i < len; i++) {
if (elems[i].className == className) {
mas.push(elems[i]);
}
}
return mas;
}
}
var elems = document.getElementsByClassName('op');
var len = elems.length;
var h;
window.onscroll = function () {
for (var i = 0; i < len; i++) {
h = parseInt(elems[i].getBoundingClientRect().bottom);
if (h < 0) {
h = 0;
}
elems[i].style.opacity = h/200;
elems[i].style.filter = 'alpha(opacity=' + h/2 + ')';
}
}
}
</script>
|
|
02.09.2012, 12:33
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
bes,
Да вообщем норма - если позицию элемента с opacity менять еще на fixed, - то поди будет в точности как в примере ( в принципе добавление двух строк - вставка и удаление свойства
|
|
02.09.2012, 12:41
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
да, заметил, там ещё приторможенный уход
|
|
02.09.2012, 19:24
|
Новичок на форуме
|
|
Регистрация: 01.09.2012
Сообщений: 4
|
|
bes,
спасибо большое!
Я попробовал сделать приторможенный уход через margin-bottom плюс margin-top чтобы размер окна не уменьшался, но тогда прокрутка происходит у меня не очень плавно. Да и обойдусь без этого.
|
|
|
|