From 3192b52562c2867359f014d55346b4e0f34a1342 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 25 May 2020 12:21:04 +0800 Subject: [PATCH] added scrolledin check for items > window height --- js/scroll-hint.js | 4 ++-- js/scroll-hint.min.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/js/scroll-hint.js b/js/scroll-hint.js index 1267603..7b6e2bd 100644 --- a/js/scroll-hint.js +++ b/js/scroll-hint.js @@ -209,7 +209,7 @@ var ScrollHint = function () { if (scrolledIn) { return; } - if ((0, _util.getOffset)(element).top + element.offsetHeight / 2 < (0, _util.getScrollTop)() + window.innerHeight) { + if ((0, _util.getOffset)(element).top + Math.min(element.offsetHeight, window.innerHeight) / 2 < (0, _util.getScrollTop)() + window.innerHeight) { item.scrolledIn = true; if (this.opt.remainingTime !== -1) { setTimeout(function () { @@ -296,4 +296,4 @@ var getOffset = exports.getOffset = function getOffset(el) { }; },{}]},{},[2])(2) -}); \ No newline at end of file +}); diff --git a/js/scroll-hint.min.js b/js/scroll-hint.min.js index 243c16c..5643af1 100644 --- a/js/scroll-hint.min.js +++ b/js/scroll-hint.min.js @@ -16,4 +16,4 @@ * * This header is generated by licensify (https://github.com/twada/licensify) */ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ScrollHint=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o\n \n
'+_this.opt.i18n.scrollable+"
\n
\n ");_this.items.push(item)});window.addEventListener("scroll",function(){_this.updateItems()});window.addEventListener("resize",function(){_this.updateItems()});this.updateItems()}_createClass(ScrollHint,[{key:"isScrollable",value:function isScrollable(item){var offset=this.opt.offset;var element=item.element;var offsetWidth=element.offsetWidth;return offsetWidth+offsetscrollHintBorderWidth){(0,_util.addClass)(element,scrollableLeftClass)}else{(0,_util.removeClass)(element,scrollableLeftClass)}}},{key:"needSuggest",value:function needSuggest(item){var scrolledIn=item.scrolledIn,interacted=item.interacted;return!interacted&&scrolledIn&&this.isScrollable(item)}},{key:"updateItems",value:function updateItems(){var _this2=this;[].forEach.call(this.items,function(item){_this2.updateItem(item)})}},{key:"updateStatus",value:function updateStatus(item){var _this3=this;var element=item.element,scrolledIn=item.scrolledIn;if(scrolledIn){return}if((0,_util.getOffset)(element).top+element.offsetHeight/2<(0,_util.getScrollTop)()+window.innerHeight){item.scrolledIn=true;if(this.opt.remainingTime!==-1){setTimeout(function(){item.interacted=true;_this3.updateItem(item)},this.opt.remainingTime)}}}},{key:"updateItem",value:function updateItem(item){var opt=this.opt;var element=item.element;var target=element.querySelector('[data-target="scrollable-icon"]');this.updateStatus(item);if(this.isScrollable(item)){(0,_util.addClass)(element,opt.scrollableClass)}else{(0,_util.removeClass)(element,opt.scrollableClass)}if(this.needSuggest(item)){(0,_util.addClass)(target,opt.suggestClass)}else{(0,_util.removeClass)(target,opt.suggestClass)}if(opt.suggestiveShadow){this.checkScrollableDir(item)}}}]);return ScrollHint}();exports.default=ScrollHint;module.exports=exports["default"]},{"./util":3,"es6-object-assign":1}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var append=exports.append=function append(element,string){var div=document.createElement("div");div.innerHTML=string;while(div.children.length>0){element.appendChild(div.children[0])}};var addClass=exports.addClass=function addClass(element,className){if(element.classList){element.classList.add(className)}else{element.className+=" "+className}};var removeClass=exports.removeClass=function removeClass(element,className){if(element.classList){element.classList.remove(className)}else{element.className=element.className.replace(new RegExp("(^|\\b)"+className.split(" ").join("|")+"(\\b|$)","gi")," ")}};var getScrollTop=exports.getScrollTop=function getScrollTop(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0};var getScrollLeft=exports.getScrollLeft=function getScrollLeft(){return window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0};var getOffset=exports.getOffset=function getOffset(el){var rect=el.getBoundingClientRect();return{top:rect.top+getScrollTop(),left:rect.left+getScrollLeft()}}},{}]},{},[2])(2)}); \ No newline at end of file +!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;(g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ScrollHint=f()}}((function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){var n=t[o][1][e];return s(n||e)}),l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o\n \n
'+_this.opt.i18n.scrollable+"
\n
\n "),_this.items.push(item)})),window.addEventListener("scroll",(function(){_this.updateItems()})),window.addEventListener("resize",(function(){_this.updateItems()})),this.updateItems()}return _createClass(ScrollHint,[{key:"isScrollable",value:function isScrollable(item){var offset=this.opt.offset,element=item.element,offsetWidth;return element.offsetWidth+offsetscrollHintBorderWidth?(0,_util.addClass)(element,scrollableLeftClass):(0,_util.removeClass)(element,scrollableLeftClass)}},{key:"needSuggest",value:function needSuggest(item){var scrolledIn=item.scrolledIn,interacted;return!item.interacted&&scrolledIn&&this.isScrollable(item)}},{key:"updateItems",value:function updateItems(){var _this2=this;[].forEach.call(this.items,(function(item){_this2.updateItem(item)}))}},{key:"updateStatus",value:function updateStatus(item){var _this3=this,element=item.element,scrolledIn;item.scrolledIn||(0,_util.getOffset)(element).top+Math.min(element.offsetHeight,window.innerHeight)/2<(0,_util.getScrollTop)()+window.innerHeight&&(item.scrolledIn=!0,-1!==this.opt.remainingTime&&setTimeout((function(){item.interacted=!0,_this3.updateItem(item)}),this.opt.remainingTime))}},{key:"updateItem",value:function updateItem(item){var opt=this.opt,element=item.element,target=element.querySelector('[data-target="scrollable-icon"]');this.updateStatus(item),this.isScrollable(item)?(0,_util.addClass)(element,opt.scrollableClass):(0,_util.removeClass)(element,opt.scrollableClass),this.needSuggest(item)?(0,_util.addClass)(target,opt.suggestClass):(0,_util.removeClass)(target,opt.suggestClass),opt.suggestiveShadow&&this.checkScrollableDir(item)}}]),ScrollHint}();exports.default=ScrollHint,module.exports=exports.default},{"./util":3,"es6-object-assign":1}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var append=exports.append=function append(element,string){var div=document.createElement("div");for(div.innerHTML=string;div.children.length>0;)element.appendChild(div.children[0])},addClass=exports.addClass=function addClass(element,className){element.classList?element.classList.add(className):element.className+=" "+className},removeClass=exports.removeClass=function removeClass(element,className){element.classList?element.classList.remove(className):element.className=element.className.replace(new RegExp("(^|\\b)"+className.split(" ").join("|")+"(\\b|$)","gi")," ")},getScrollTop=exports.getScrollTop=function getScrollTop(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},getScrollLeft=exports.getScrollLeft=function getScrollLeft(){return window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0},getOffset=exports.getOffset=function getOffset(el){var rect=el.getBoundingClientRect();return{top:rect.top+getScrollTop(),left:rect.left+getScrollLeft()}}},{}]},{},[2])(2)})); \ No newline at end of file