2017-02-20 17 views
0

Это действительно математический вопрос, но я не могу узнать, как это сделать. Я хочу использовать scrollTop для медленного уменьшения объекта opacity. Поэтому, когда scrollTop == 1, я хочу opacity быть 1, scrollTop == 2, я хочу opacity быть .99, scrollTop == 3, opacity.98. Может ли кто-нибудь помочь мне с математикой сделать это? Буду признателен за любую оказанную помощь.Convert scrollTop to incremental value

+0

вам нужно найти высоту прокруткой, и разделить 'значение scrollTop' на эту величину, чтобы получить процент. Я сделал что-то подобное в этом ответе - http://stackoverflow.com/questions/42259544/image-motion-when-scrolling-using-jquery/42288000#42288000 –

+0

Я не понимаю, зачем мне нужна другая переменная ... I просто нужно преобразовать 1 к 1, 2 к .99, 3 к .98 и т. д. Зачем мне нужна другая переменная. Разве я не могу это сделать с чистой математикой? – JordanBarber

+1

Я только что ответил, что это одно и то же! Если вы хотите посмотреть здесь, ссылка: http://stackoverflow.com/a/42354638/6647153! –

ответ

1

Если вы хотите получить ответ на то, что вы просите, то вы можете сделать следующее:

var position = window.pageYOffset; 
var opacity = Math.max(0, 1 - (position/100)); 

Это, как и другие комментаторы предположили, однако, будет приводить к непрозрачности достигая 0 после прокрутки 100px.

0

var doc = document.documentElement; 
 

 
window.onscroll = function() { 
 
var value = window.scrollY/(doc.offsetHeight - doc.clientHeight); 
 
document.getElementById("preview").style.opacity = 1 - value; 
 
}
body { 
 
    height: 1000px; 
 
} 
 

 
#container { 
 
    background: linear-gradient(45deg, #eee 25%, transparent 26%, transparent 75%, #eee 76%), linear-gradient(-45deg, #eee 25%, transparent 26%, transparent 75%, #eee 76%); 
 
    background-color: #444; 
 
    background-size: 10px 10px; 
 
    position: fixed; 
 
    width: 100px; 
 
} 
 

 
#preview { 
 
    height: 100px; 
 
    background: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    <div id="preview"></div> 
 
</div>