2016-07-19 2 views
-1

Я использую -webkit-mask-image: -webkit-gradient для создания эффекта градиента текста.CSS text fade gradient effect

Рассмотрим это: http://codepen.io/apopa116/pen/xOpjEz

Используя только CSS, как я могу удалить маску градиента, когда я достигаю в нижней части DIV?

+0

Когда вы говорите «когда я добираюсь до нижней части div», вы говорите про прокрутку? Потому что я не верю, что CSS имеет понятие о том, где окно просмотра находится внутри документа, поэтому это, вероятно, невозможно. (Только с CSS, с JS, это очень достижимо) – DBS

+0

Вопросы, требующие помощи кода, должны содержать кратчайший код, необходимый для его воспроизведения ** в самом вопросе **. Хотя вы предоставили ссылку [** на пример или сайт **] (http://meta.stackoverflow.com/questions/254428/something-in-my-web-site-or-project-doesnt-work- can-i-just-paste-a-link-to-it), если ссылка должна стать недействительной, ваш вопрос не будет иметь ценности для других будущих пользователей SO с той же проблемой. –

ответ

0

Что бы я сделал, это добавить JQuery (сначала вам нужно добавить строку для импорта рамки JQuery), которая обнаруживает, когда окно прокручивается до конца страницы, и если это так, измените свойство -webkit-маска-образ:

добавив этот JS, вы должны быть в состоянии получить то, что вы хотите:

jQuery(function($) { 
    $('.box').on('scroll', function() { 
     if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) { 
      $(".box").css("-webkit-mask-image", "initial"); 
     }else{ 
      $(".box").css("-webkit-mask-image", ""); 
     } 
    }) 
}); 

Codepen Demo

Стандартный JS эквивалент решение (нет необходимости в импорте JQuery) [Кредит: Андрей Кость]

var boxSelector = document.querySelector('.box'); 

boxSelector.addEventListener("scroll", function() { 
    if (boxSelector.scrollTop >= (boxSelector.scrollHeight - boxSelector.offsetHeight)) { 
    boxSelector.classList.remove('gradient') 
    } else { 
    boxSelector.classList.add('gradient') 
    } 
}) 
+1

Лично я бы переключил класс CSS, а не стиль в JS, но это в основном личные предпочтения. – DBS

+0

Когда он прокручивается до конца, эффект затухания останавливается, но не продолжается, как только вы снова прокручиваете вверх, поэтому мое решение было немного упрощено. – btrballin

+1

Я не совсем уверен, почему вы хотите импортировать jquery (замедляя время загрузки) только для этого? Это довольно просто сделать в стандартном JS https://jsfiddle.net/b0390hhx/ –