New page data

This commit is contained in:
CHIEFSOFT\ameye
2025-11-08 18:07:02 -05:00
parent d4ecc1bcfb
commit 5fa3259909
88 changed files with 10728 additions and 1 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+11
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+104
View File
@@ -0,0 +1,104 @@
/**
* JQuery Simple MobileMenu
* Copyright (c) 2017 Position2 Inc.
* Licensed under MIT (http://opensource.org/licenses/MIT)
* https://github.com/Position2/jQuery-Simple-MobileMenu
*/
(function($) {
var defaults = {
"hamburgerId": "sm_menu_ham", //Hamburger Id
"wrapperClass": "sm_menu_outer", //Menu Wrapper Class
"submenuClass": "sub-menu", //Submenu Class
"menuStyle": "slide", //Menu Style
"onMenuLoad": function() { return true; }, //Calls when menu loaded
"onMenuToggle": function() { return true; } //Calls when menu open/close
};
$.fn.simpleMobileMenu = function(options) {
if (this.length === 0) { return this; }
var smMenu = {},
ds = $(this);
var init = function() {
smMenu.settings = $.extend({}, defaults, options);
smMenu.styleClass = smMenu.settings.menuStyle.toLowerCase() === 'slide' ? "slide" : "accordion";
// Create Wrapper div & hamburger
createWrapper_Ham();
// Create Back Menu for each sub menu
createBackButton();
// Callback - Menu loaded
if (typeof smMenu.settings.onMenuLoad == 'function') {
smMenu.settings.onMenuLoad(ds);
}
},
createWrapper_Ham = function() {
smMenu.hamburger = $("<div/>", {
"id": smMenu.settings.hamburgerId,
"html": "<span></span><span></span><span></span><span></span>"
}),
smMenu.smmOuter = $("<div/>", { "class": smMenu.settings.wrapperClass+" "+smMenu.styleClass });
ds.appendTo(smMenu.smmOuter);
smMenu.hamburger.add(smMenu.smmOuter).appendTo($("body"));
},
createBackButton = function() {
smMenu.smmOuter.find("ul." + smMenu.settings.submenuClass).each(function() {
var dis = $(this),
disPar = dis.closest("li"),
disfA = disPar.find("> a"),
disBack = $("<li/>", {
"class": "back",
"html": "<a href='#'>" + disfA.text() + "</a>"
})
disPar.addClass("hasChild");
if(smMenu.settings.menuStyle.toLowerCase() === 'slide') {
disBack.prependTo(dis);
}
});
},
toggleMobileMenu = function(e) {
$("#" + smMenu.settings.hamburgerId).toggleClass("open");
$("." + smMenu.settings.wrapperClass).toggleClass("active").find("li.active").removeClass("active");
$("body").toggleClass("mmactive");
if(smMenu.settings.menuStyle.toLowerCase() === 'accordion') {
$("."+smMenu.settings.wrapperClass).find("ul."+smMenu.settings.submenuClass).hide();
}
// Callback - Menu Toggle
if (typeof smMenu.settings.onMenuToggle == 'function') {
smMenu.settings.onMenuToggle(ds, $("#" + smMenu.settings.hamburgerId).hasClass("open"));
}
},
showSlideSubMenu = function(e) {
$("." + smMenu.settings.wrapperClass).scrollTop(0);
$(this).parent().addClass("active").siblings().removeClass("active");
},
showAccordionSubMenu = function(e) {
e.preventDefault();
var dis = $(this),
dispar = $(this).parent(),
lastActive = dispar.siblings(".active");
dispar.find("> ."+smMenu.settings.submenuClass).slideToggle(function() {
if ($(this).is(":visible")) {
var offset = dis[0].offsetTop;
$("." + smMenu.settings.wrapperClass).stop().animate({ scrollTop: offset }, 300);
}
});
lastActive.find("ul."+ smMenu.settings.submenuClass).slideUp(function() {
$(this).find(".hasChild").removeClass("active");
})
dispar.toggleClass("active").siblings().removeClass("active");
},
goBack = function(e) {
e.preventDefault();
$(this).closest("ul." + smMenu.settings.submenuClass).parent().removeClass("active");
}
/*Init*/
init();
/* Open Menu */
smMenu.hamburger.click(toggleMobileMenu);
/* Show Slide SubMenu */
smMenu.smmOuter.filter(".slide").find("li.hasChild > a").click(showSlideSubMenu);
/* Show Accordion SubMenu */
smMenu.smmOuter.filter(".accordion").find("li.hasChild > a").click(showAccordionSubMenu);
/* Go Back */
smMenu.smmOuter.find("li.back a").click(goBack);
};
})(jQuery)
+1
View File
@@ -0,0 +1 @@
!function(t){function e(){var e,i,n={height:a.innerHeight,width:a.innerWidth};return n.height||(e=r.compatMode,(e||!t.support.boxModel)&&(i="CSS1Compat"===e?f:r.body,n={height:i.clientHeight,width:i.clientWidth})),n}function i(){return{top:a.pageYOffset||f.scrollTop||r.body.scrollTop,left:a.pageXOffset||f.scrollLeft||r.body.scrollLeft}}function n(){var n,l=t(),r=0;if(t.each(d,function(t,e){var i=e.data.selector,n=e.$element;l=l.add(i?n.find(i):n)}),n=l.length)for(o=o||e(),h=h||i();n>r;r++)if(t.contains(f,l[r])){var a,c,p,s=t(l[r]),u={height:s.height(),width:s.width()},g=s.offset(),v=s.data("inview");if(!h||!o)return;g.top+u.height>h.top&&g.top<h.top+o.height&&g.left+u.width>h.left&&g.left<h.left+o.width?(a=h.left>g.left?"right":h.left+o.width<g.left+u.width?"left":"both",c=h.top>g.top?"bottom":h.top+o.height<g.top+u.height?"top":"both",p=a+"-"+c,v&&v===p||s.data("inview",p).trigger("inview",[!0,a,c])):v&&s.data("inview",!1).trigger("inview",[!1])}}var o,h,l,d={},r=document,a=window,f=r.documentElement,c=t.expando;t.event.special.inview={add:function(e){d[e.guid+"-"+this[c]]={data:e,$element:t(this)},l||t.isEmptyObject(d)||(l=setInterval(n,250))},remove:function(e){try{delete d[e.guid+"-"+this[c]]}catch(i){}t.isEmptyObject(d)&&(clearInterval(l),l=null)}},t(a).bind("scroll resize scrollstop",function(){o=h=null}),!f.addEventListener&&f.attachEvent&&f.attachEvent("onfocusin",function(){h=null})}(jQuery);
+5
View File
@@ -0,0 +1,5 @@
// leanModal v1.1 by Ray Stone - http://finelysliced.com.au
// Dual licensed under the MIT and GPL
(function($){$.fn.extend({leanModal:function(options){var defaults={top:100,overlay:0.5,closeButton:null};var overlay=$("<div id='lean_overlay'></div>");$("body").append(overlay);options=$.extend(defaults,options);return this.each(function(){var o=options;$(this).click(function(e){var modal_id=$(this).attr("href");$("#lean_overlay").click(function(){close_modal(modal_id)});$(o.closeButton).click(function(){close_modal(modal_id)});var modal_height=$(modal_id).outerHeight();var modal_width=$(modal_id).outerWidth();
$("#lean_overlay").css({"display":"block",opacity:0});$("#lean_overlay").fadeTo(200,o.overlay);$(modal_id).css({"display":"block","position":"fixed","opacity":0,"z-index":11000,"left":50+"%","margin-left":-(modal_width/2)+"px","top":o.top+"px"});$(modal_id).fadeTo(200,1);e.preventDefault()})});function close_modal(modal_id){$("#lean_overlay").fadeOut(200);$(modal_id).css({"display":"none"})}}})})(jQuery);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+43
View File
@@ -0,0 +1,43 @@
(function($) {
'use strict';
$("#modal_trigger").leanModal({top : 100, overlay : 0.6, closeButton: ".modal_close" });
$(function(){
// Calling Login Form
$("#login_form").click(function(){
$(".social_login").hide();
$(".user_login").show();
return false;
});
// Calling Register Form
$("#register_form").click(function(){
$(".social_login").hide();
$(".user_register").show();
$(".header_title").text('Register');
return false;
});
// Going back to Social Forms
$(".back_btn").click(function(){
$(".user_login").hide();
$(".user_register").hide();
$(".social_login").show();
$(".header_title").text('Login');
return false;
});
})
})(jQuery);
+215
View File
@@ -0,0 +1,215 @@
/*! MagicMouse.js - v1.1
* A lightweight javascript library to create some amazing effects for the mouse (cursor) on your website
* https://github.com/dshongphuc/magic-mouse-js
* Copyright (c) 2020 Phuc H. <dshongphuc@gmail.com> under MIT license; */
"use strict";
function magicMouse(options) {
// I believe we don't want this cursor on tablet/mobile
if (!Modernizr.touchevents){
options = options || {};
options.outerWidth = options.outerWidth || 30;
options.outerHeight = options.outerHeight || 30;
options.cursorOuter = options.cursorOuter || "circle-basic";
options.hoverEffect = options.hoverEffect || "circle-move";
options.hoverItemMove = options.hoverItemMove || false;
options.defaultCursor = options.defaultCursor || false;
// Add cursor DOM to body :
if ("disable" != options.cursorOuter) {
var newCursorDOM = document.createElement("div");
newCursorDOM.setAttribute("id", "magicMouseCursor");
document.body.appendChild(newCursorDOM);
// Select the cursor DOM which has been added to body before:
var cursorDOM = document.getElementById("magicMouseCursor");
}
// Check if user wanna use our custom cursor or not
// If yes, create DOM for it
if (!options.defaultCursor) {
document.body.style.cursor = "none";
var newPointerDOM = document.createElement("div");
newPointerDOM.setAttribute("id", "magicPointer");
document.body.appendChild(newPointerDOM);
var pointerDOM = document.getElementById("magicPointer");
}
if (cursorDOM) {
cursorDOM.style.width = options.outerWidth + "px";
cursorDOM.style.height = options.outerHeight + "px";
var cursorOuterWidth = options.outerWidth,
cursorOuterHeight = options.outerHeight,
originalCursorWidth = options.outerWidth,
originalCursorHeight = options.outerHeight;
}
//Update position of cursor when move:
var outerX = 0,
outerY = 0,
pointerX = 0,
pointerY = 0,
stopFlag = false,
itemHoverX = 0,
itemHoverY = 0;
document.addEventListener("mousemove", function(event) {
pointerX = event.clientX;
pointerY = event.clientY;
setTimeout(() => {
if (!stopFlag) {
outerX = event.clientX - cursorOuterWidth / 2;
outerY = event.clientY - cursorOuterHeight / 2;
}
}, 50);
});
//Hover effects :
var hoverEls = document.querySelectorAll(".magic-hover");
hoverEls.forEach((item, i) => {
item.addEventListener("mouseenter", event => {
switch (options.hoverEffect) {
case "circle-move":
circleMove_mouseEnterHover(item);
//Move the item hover on:
if (options.hoverItemMove) {
hoverItemMove(event, item);
}
break;
case "pointer-blur":
pointerClass_mouseEnterHover(item, "pointer-blur");
break;
case "pointer-overlay":
pointerClass_mouseEnterHover(item, "pointer-overlay");
break;
}
});
item.addEventListener("mouseleave", event => {
item.style.transform = "translate3d(0,0,0)";
switch (options.hoverEffect) {
case "circle-move":
circleMove_mouseLeaveHover();
break;
case "pointer-blur":
pointerClass_mouseLeaveHover("pointer-blur");
break;
case "pointer-overlay":
pointerClass_mouseLeaveHover("pointer-overlay");
break;
}
});
});
// sometime we just don't want to use magicmouse on some specific elements:
const noCursorEls = document.querySelectorAll(".no-cursor");
noCursorEls.forEach((item, i) => {
item.addEventListener("mouseenter", event => {
cursorDOM.style.opacity = 0
pointerDOM.style.opacity = 0
document.body.style.cursor = "auto";
});
item.addEventListener("mouseleave", event => {
cursorDOM.style.opacity = 1
pointerDOM.style.opacity = 1
document.body.style.cursor = "none";
});
});
//Move the cursorDOM:
var movement = () => {
if (cursorDOM) {
cursorDOM.style.transform =
"matrix(1, 0, 0, 1, " + outerX + ", " + outerY + ")";
cursorDOM.style.width = cursorOuterWidth + "px";
cursorDOM.style.height = cursorOuterHeight + "px";
}
//Move the custom pointer :
if (pointerDOM) {
pointerDOM.style.transform =
"matrix(1, 0, 0, 1, " +
pointerX +
", " +
pointerY +
") translate3d(-50%, -50%, 0)";
}
requestAnimationFrame(movement);
};
requestAnimationFrame(movement);
const circleMove_mouseEnterHover = item => {
stopFlag = true;
if (cursorDOM) {
cursorDOM.style.transition =
"transform 0.2s, width 0.3s, height 0.3s, border-radius 0.2s";
cursorDOM.classList.add("is-hover");
var elementPos = event.currentTarget.getBoundingClientRect();
if (item.classList.contains("magic-hover__square")) {
cursorDOM.classList.add("cursor-square");
outerX = elementPos.left;
outerY = elementPos.top;
cursorOuterWidth = elementPos.width;
cursorOuterHeight = elementPos.height;
} else {
outerX = elementPos.left;
outerY = elementPos.top;
cursorOuterWidth = elementPos.width;
cursorOuterHeight = elementPos.height;
}
}
if (pointerDOM) {
pointerDOM.classList.add("is-hover");
}
};
const circleMove_mouseLeaveHover = () => {
stopFlag = false;
if (cursorDOM) {
cursorOuterWidth = originalCursorWidth;
cursorOuterHeight = originalCursorHeight;
cursorDOM.style.transition =
"transform 0.07s, width 0.3s, height 0.3s, border-radius 0.2s";
cursorDOM.classList.remove("cursor-square");
cursorDOM.classList.remove("is-hover");
}
if (pointerDOM) {
pointerDOM.classList.remove("is-hover");
}
};
const pointerClass_mouseEnterHover = (item, className) => {
if (pointerDOM) {
pointerDOM.classList.add(className);
}
};
const pointerClass_mouseLeaveHover = className => {
if (pointerDOM) {
pointerDOM.classList.remove(className);
}
};
const hoverItemMove = (event, item) => {
itemHoverX = event.clientX;
itemHoverY = event.clientY;
item.addEventListener("mousemove", mouseEvent => {
item.style.transform =
"matrix(1,0,0,1," +
(mouseEvent.offsetX - mouseEvent.target.offsetWidth / 2) / 2 +
", " +
(mouseEvent.offsetY - mouseEvent.target.offsetHeight / 2) / 2 +
")";
});
};
}
}
/*! modernizr 3.6.0 (Custom Build) | MIT *
* https://modernizr.com/download/?-touchevents-setclasses !*/
!function(e,n,t){function o(e,n){return typeof e===n}function s(){var e,n,t,s,a,i,r;for(var l in c)if(c.hasOwnProperty(l)){if(e=[],n=c[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t<n.options.aliases.length;t++)e.push(n.options.aliases[t].toLowerCase());for(s=o(n.fn,"function")?n.fn():n.fn,a=0;a<e.length;a++)i=e[a],r=i.split("."),1===r.length?Modernizr[r[0]]=s:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=s),f.push((s?"":"no-")+r.join("-"))}}function a(e){var n=p.className,t=Modernizr._config.classPrefix||"";if(h&&(n=n.baseVal),Modernizr._config.enableJSClass){var o=new RegExp("(^|\\s)"+t+"no-js(\\s|$)");n=n.replace(o,"$1"+t+"js$2")}Modernizr._config.enableClasses&&(n+=" "+t+e.join(" "+t),h?p.className.baseVal=n:p.className=n)}function i(){return"function"!=typeof n.createElement?n.createElement(arguments[0]):h?n.createElementNS.call(n,"http://www.w3.org/2000/svg",arguments[0]):n.createElement.apply(n,arguments)}function r(){var e=n.body;return e||(e=i(h?"svg":"body"),e.fake=!0),e}function l(e,t,o,s){var a,l,f,c,d="modernizr",u=i("div"),h=r();if(parseInt(o,10))for(;o--;)f=i("div"),f.id=s?s[o]:d+(o+1),u.appendChild(f);return a=i("style"),a.type="text/css",a.id="s"+d,(h.fake?h:u).appendChild(a),h.appendChild(u),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(n.createTextNode(e)),u.id=d,h.fake&&(h.style.background="",h.style.overflow="hidden",c=p.style.overflow,p.style.overflow="hidden",p.appendChild(h)),l=t(u,e),h.fake?(h.parentNode.removeChild(h),p.style.overflow=c,p.offsetHeight):u.parentNode.removeChild(u),!!l}var f=[],c=[],d={_version:"3.6.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){c.push({name:e,fn:n,options:t})},addAsyncTest:function(e){c.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=d,Modernizr=new Modernizr;var u=d._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];d._prefixes=u;var p=n.documentElement,h="svg"===p.nodeName.toLowerCase(),m=d.testStyles=l;Modernizr.addTest("touchevents",function(){var t;if("ontouchstart"in e||e.DocumentTouch&&n instanceof DocumentTouch)t=!0;else{var o=["@media (",u.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");m(o,function(e){t=9===e.offsetTop})}return t}),s(),a(f),delete d.addTest,delete d.addAsyncTest;for(var v=0;v<Modernizr._q.length;v++)Modernizr._q[v]();e.Modernizr=Modernizr}(window,document);
File diff suppressed because one or more lines are too long
+193
View File
@@ -0,0 +1,193 @@
/*
Author : theme_ocean.
Template Name: Mastan - Responsive App Landing Page
Version : 1.0
*/
(function($) {
'use strict';
/*PRELOADER JS*/
$(window).on('load', function() {
$('.status').fadeOut();
$('.preloader').delay(350).fadeOut('slow');
});
/*END PRELOADER JS*/
/*START MENU JS*/
$(".mobile_menu").simpleMobileMenu({
"menuStyle": "slide"
});
$(window).on('scroll', function(){
if ( $(window).scrollTop() > 70 ) {
$('.site-navigation, .header-white, .header').addClass('navbar-fixed');
} else {
$('.site-navigation, .header-white, .header').removeClass('navbar-fixed');
}
});
/*END MENU JS*/
/* START SCREENSHOTS SLIDER JS*/
$('.s-slider').owlCarousel({
autoPlay: 10000, //Set AutoPlay to 4 seconds
items : 4,
itemsDesktop : [1199,4],
itemsDesktopSmall : [979,3],
itemsTablet : [768,2],
itemsMobile : [479,1],
pagination : true,
});
/* END START SCREENSHOTS SLIDER JS*/
/*START VIDEO JS*/
$('.magnific_popup').magnificPopup({
type: 'iframe'
});
/*END VIDEO JS*/
/*START TESTIMONIAL JS*/
$("#testimonial-slider").owlCarousel({
items:3,
itemsDesktop:[1000,3],
itemsDesktopSmall:[980,2],
itemsTablet:[768,2],
itemsMobile:[650,1],
pagination:true,
navigation:true,
navigationText:["",""],
slideSpeed:1000,
autoPlay:false
});
/*END TESTIMONIAL JS*/
/* START COUNTDOWN JS*/
$('.counter_feature').on('inview', function(event, visible, visiblePartX, visiblePartY) {
if (visible) {
$(this).find('.counter-num').each(function () {
var $this = $(this);
$({ Counter: 0 }).animate({ Counter: $this.text() }, {
duration: 2000,
easing: 'swing',
step: function () {
$this.text(Math.ceil(this.Counter));
}
});
});
$(this).unbind('inview');
}
});
/* END COUNTDOWN JS */
/*AJAX CONTACT JS*/
// Function for email address validation
function isValidEmail(emailAddress) {
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return pattern.test(emailAddress);
}
$("#contactForm").on('submit', function(e) {
e.preventDefault();
var data = {
name: $("#name").val(),
email: $("#email").val(),
subject: $("#subject").val(),
message: $("#message").val()
};
if (isValidEmail(data['email']) && (data['message'].length > 1) && (data['name'].length > 1) && (data['subject'].length > 1)) {
$.ajax({
type: "POST",
url: "sendmail.php",
data: data,
success: function() {
$('#contactForm .input-success').delay(500).fadeIn(1000);
$('#contactForm .input-error').fadeOut(500);
}
});
} else {
$('#contactForm .input-error').delay(500).fadeIn(1000);
$('#contactForm .input-success').fadeOut(500);
}
return false;
});
/*START WOW ANIMATION JS*/
new WOW().init();
/*END WOW ANIMATION JS*/
/*const lenis = new Lenis()
lenis.on('scroll', ScrollTrigger.update)
gsap.ticker.add((time) => {
lenis.raf(time * 1000)
})
gsap.ticker.lagSmoothing(0)*/
})(jQuery);
/*START MAGIC MOUSE JS*/
// Mouse Follower
const follower = document.querySelector(
".mouse-follower .cursor-outline"
);
const dot = document.querySelector(".mouse-follower .cursor-dot");
window.addEventListener("mousemove", (e) => {
follower.animate(
[
{
opacity: 1,
left: `${e.clientX}px`,
top: `${e.clientY}px`,
easing: "ease-in-out",
},
],
{
duration: 3000,
fill: "forwards",
}
);
dot.animate(
[
{
opacity: 1,
left: `${e.clientX}px`,
top: `${e.clientY}px`,
easing: "ease-in-out",
},
],
{
duration: 1500,
fill: "forwards",
}
);
});
// Mouse Follower Hide Function
$("a, button").on("mouseenter mouseleave", function () {
$(".mouse-follower").toggleClass("hide-cursor");
});
var terElement = $(
"h1, h2, h3, h4, .display-one, .display-two, .display-three, .display-four, .display-five, .display-six"
);
$(terElement).on("mouseenter mouseleave", function () {
$(".mouse-follower").toggleClass("highlight-cursor-head");
$(this).toggleClass("highlight-cursor-head");
});
var terElement = $("p");
$(terElement).on("mouseenter mouseleave", function () {
$(".mouse-follower").toggleClass("highlight-cursor-para");
$(this).toggleClass("highlight-cursor-para");
});
/*END MAGIC MOUSE JS*/
+76
View File
@@ -0,0 +1,76 @@
//** jQuery Scroll to Top Control script- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com.
//** Available/ usage terms at http://www.dynamicdrive.com (March 30th, 09')
//** v1.1 (April 7th, 09'):
//** 1) Adds ability to scroll to an absolute position (from top of page) or specific element on the page instead.
//** 2) Fixes scroll animation not working in Opera.
var scrolltotop={
//startline: Integer. Number of pixels from top of doc scrollbar is scrolled before showing control
//scrollto: Keyword (Integer, or "Scroll_to_Element_ID"). How far to scroll document up when control is clicked on (0=top).
setting: {startline:100, scrollto: 0, scrollduration:1000, fadeduration:[500, 100]},
controlHTML: '<i class="fa fa-angle-up scrolltop"></i>', //HTML for control, which is auto wrapped in DIV w/ ID="topcontrol"
controlattrs: {offsetx:5, offsety:5}, //offset of control relative to right/ bottom of window corner
anchorkeyword: '#top', //Enter href value of HTML anchors on the page that should also act as "Scroll Up" links
state: {isvisible:false, shouldvisible:false},
scrollup:function(){
if (!this.cssfixedsupport) //if control is positioned using JavaScript
this.$control.css({opacity:0}) //hide control immediately after clicking it
var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : parseInt(this.setting.scrollto)
if (typeof dest=="string" && jQuery('#'+dest).length==1) //check element set by string exists
dest=jQuery('#'+dest).offset().top
else
dest=0
this.$body.animate({scrollTop: dest}, this.setting.scrollduration);
},
keepfixed:function(){
var $window=jQuery(window)
var controlx=$window.scrollLeft() + $window.width() - this.$control.width() - this.controlattrs.offsetx
var controly=$window.scrollTop() + $window.height() - this.$control.height() - this.controlattrs.offsety
this.$control.css({left:controlx+'px', top:controly+'px'})
},
togglecontrol:function(){
var scrolltop=jQuery(window).scrollTop()
if (!this.cssfixedsupport)
this.keepfixed()
this.state.shouldvisible=(scrolltop>=this.setting.startline)? true : false
if (this.state.shouldvisible && !this.state.isvisible){
this.$control.stop().animate({opacity:1}, this.setting.fadeduration[0])
this.state.isvisible=true
}
else if (this.state.shouldvisible==false && this.state.isvisible){
this.$control.stop().animate({opacity:0}, this.setting.fadeduration[1])
this.state.isvisible=false
}
},
init:function(){
jQuery(document).ready(function($){
var mainobj=scrolltotop
var iebrws=document.all
mainobj.cssfixedsupport=!iebrws || iebrws && document.compatMode=="CSS1Compat" && window.XMLHttpRequest //not IE or IE7+ browsers in standards mode
mainobj.$body=(window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body')
mainobj.$control=$('<div id="topcontrol" class="topcontrol">'+mainobj.controlHTML+'</div>')
.css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.offsetx, opacity:0, cursor:'pointer'})
.attr({title:''})
.click(function(){mainobj.scrollup(); return false})
.appendTo('body')
if (document.all && !window.XMLHttpRequest && mainobj.$control.text()!='') //loose check for IE6 and below, plus whether control contains any text
mainobj.$control.css({width:mainobj.$control.width()}) //IE6- seems to require an explicit width on a DIV containing text
mainobj.togglecontrol()
$('a[href="' + mainobj.anchorkeyword +'"]').click(function(){
mainobj.scrollup()
return false
})
$(window).bind('scroll resize', function(e){
mainobj.togglecontrol()
})
})
}
}
scrolltotop.init()
+14
View File
@@ -0,0 +1,14 @@
$(function () {
gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
ScrollTrigger.normalizeScroll(false);
// create the smooth scroller FIRST!
let smoother = ScrollSmoother.create({
smooth: 2,
effects: true,
});
});
+2
View File
File diff suppressed because one or more lines are too long