mirror of
https://github.com/locomotivemtl/locomotive-boilerplate.git
synced 2026-01-15 00:55:08 +08:00
Update locomotive-scroll to v3: update scroll.js, add scrollbar css, remove copy task
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { module } from 'modujs';
|
||||
import { $document } from '../utils/environment'
|
||||
import ScrollManager from '../scroll/vendors/ScrollManager';
|
||||
import locomotiveScroll from 'locomotive-scroll';
|
||||
|
||||
export default class extends module {
|
||||
constructor(m) {
|
||||
@@ -8,10 +7,9 @@ export default class extends module {
|
||||
}
|
||||
|
||||
init() {
|
||||
this.scroll = new ScrollManager({
|
||||
container: $(this.el),
|
||||
smooth: true,
|
||||
inertia: 1
|
||||
this.scroll = new locomotiveScroll({
|
||||
el: this.el,
|
||||
smooth: true
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
// ==========================================================================
|
||||
// Extended Locomotive Scroll
|
||||
// ==========================================================================
|
||||
/* jshint esnext: true */
|
||||
import Scroll, { EVENT_KEY as VENDOR_EVENT_KEY, EVENT as VENDOR_EVENTS, DEFAULTS as VENDOR_DEFAULTS } from './vendors/Scroll'
|
||||
|
||||
/**
|
||||
* UNCOMMENT ONLY THE LINES YOU NEED
|
||||
*/
|
||||
// import { $window, $document } from '../../utils/environment';
|
||||
// import debounce from '../../utils/debounce';
|
||||
// import { isNumeric } from '../../utils/is';
|
||||
|
||||
export const EVENT_KEY = VENDOR_EVENT_KEY;
|
||||
|
||||
export const EVENT = Object.assign(VENDOR_EVENTS, {
|
||||
// TEST: `test.${EVENT_KEY}`
|
||||
});
|
||||
|
||||
export const DEFAULTS = Object.assign(VENDOR_DEFAULTS, { });
|
||||
|
||||
export default class extends Scroll {
|
||||
constructor(options) {
|
||||
super(options)
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
// ==========================================================================
|
||||
// Extended Locomotive Smooth Scroll
|
||||
// ==========================================================================
|
||||
/* jshint esnext: true */
|
||||
import SmoothScroll from './vendors/SmoothScroll'
|
||||
|
||||
/**
|
||||
* UNCOMMENT ONLY THE LINES YOU NEED
|
||||
*/
|
||||
// import { $window, $document, $html } from '../utils/environment';
|
||||
// import Scroll, { DEFAULTS, EVENT } from './Scroll';
|
||||
|
||||
// import debounce from '../utils/debounce';
|
||||
// import Scrollbar from 'smooth-scrollbar';
|
||||
// import { isNumeric } from '../utils/is';
|
||||
|
||||
export default class extends SmoothScroll {
|
||||
constructor(options) {
|
||||
super(options)
|
||||
}
|
||||
}
|
||||
34
assets/styles/components/_scrollbar.scss
Normal file
34
assets/styles/components/_scrollbar.scss
Normal file
@@ -0,0 +1,34 @@
|
||||
.c-scrollbar {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 11px;
|
||||
height: 100vh;
|
||||
transform-origin: center right;
|
||||
transition: transform 0.3s, opacity 0.3s;
|
||||
opacity: 0;
|
||||
|
||||
&:hover {
|
||||
transform: scaleX(1.45);
|
||||
}
|
||||
|
||||
&:hover, .has-scroll-scrolling &, .has-scroll-dragging & {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.c-scrollbar_thumb {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background-color: black;
|
||||
opacity: 0.5;
|
||||
width: 7px;
|
||||
border-radius: 10px;
|
||||
margin: 2px;
|
||||
cursor: grab;
|
||||
|
||||
.has-scroll-dragging & {
|
||||
cursor: grabbing;
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,20 @@ html {
|
||||
&.is-loading {
|
||||
cursor: wait;
|
||||
}
|
||||
|
||||
&.has-scroll-smooth {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&.has-scroll-dragging {
|
||||
user-select: none;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
.has-scroll-smooth & {
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
::selection {
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
@import "objects/form";
|
||||
@import "objects/button";
|
||||
@import "objects/pjax";
|
||||
@import "objects/scroll";
|
||||
// @import "objects/crop";
|
||||
// @import "objects/table";
|
||||
|
||||
@@ -49,7 +48,7 @@
|
||||
|
||||
// Components
|
||||
// ==========================================================================
|
||||
// @import "components/component";
|
||||
@import "components/scrollbar";
|
||||
|
||||
// Templates
|
||||
// ==========================================================================
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
html.has-smooth-scroll {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.o-scroll{
|
||||
html.has-smooth-scroll & {
|
||||
height: 100vh;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.scroll-content {
|
||||
transform: translate3d(0,0,0);
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
// Scrollbar
|
||||
// ==========================================================================
|
||||
[data-scrollbar],[scrollbar],scrollbar{display:block;position:relative}[data-scrollbar] .scroll-content,[scrollbar] .scroll-content,scrollbar .scroll-content{-webkit-transform:translateZ(0);transform:translateZ(0);will-change:transform}[data-scrollbar].sticky .scrollbar-track,[scrollbar].sticky .scrollbar-track,scrollbar.sticky .scrollbar-track{background:hsla(0,0%,87%,.75)}[data-scrollbar] .scrollbar-track,[scrollbar] .scrollbar-track,scrollbar .scrollbar-track{position:absolute;opacity:0;z-index:1;-webkit-transition:opacity .5s ease-out,background .5s ease-out;transition:opacity .5s ease-out,background .5s ease-out;background:none}[data-scrollbar] .scrollbar-track.show,[data-scrollbar] .scrollbar-track:hover,[scrollbar] .scrollbar-track.show,[scrollbar] .scrollbar-track:hover,scrollbar .scrollbar-track.show,scrollbar .scrollbar-track:hover{opacity:1}[data-scrollbar] .scrollbar-track:hover,[scrollbar] .scrollbar-track:hover,scrollbar .scrollbar-track:hover{background:hsla(0,0%,87%,.75)}[data-scrollbar] .scrollbar-track-x,[scrollbar] .scrollbar-track-x,scrollbar .scrollbar-track-x{bottom:0;left:0;width:100%;height:8px}[data-scrollbar] .scrollbar-track-y,[scrollbar] .scrollbar-track-y,scrollbar .scrollbar-track-y{top:0;right:0;width:8px;height:100%}[data-scrollbar] .scrollbar-thumb,[scrollbar] .scrollbar-thumb,scrollbar .scrollbar-thumb{position:absolute;top:0;left:0;width:8px;height:8px;background:rgba(0,0,0,.5);border-radius:4px}[data-scrollbar] .overscroll-glow,[scrollbar] .overscroll-glow,scrollbar .overscroll-glow{position:absolute;top:0;left:0;width:100%;height:100%}
|
||||
|
||||
.scrollbar-track {
|
||||
user-select: none;
|
||||
background-color: transparent !important;
|
||||
width: 14px !important;
|
||||
opacity: 0 !important;
|
||||
z-index: 99999 !important;
|
||||
|
||||
.scrolling & {
|
||||
opacity: 0.75 !important;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
opacity: 1 !important;
|
||||
background-color: #fafafa !important;
|
||||
}
|
||||
}
|
||||
|
||||
.scrollbar-thumb {
|
||||
position: relative;
|
||||
width: 14px !important;
|
||||
background-color: transparent !important;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
right: 3px;
|
||||
bottom: 3px;
|
||||
left: 3px;
|
||||
background-color: #c1c1c1;
|
||||
border-radius: 4px;
|
||||
transition: background-color $speed $easing;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&::after {
|
||||
background-color: #7d7d7d;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
import gulp from 'gulp';
|
||||
import paths from '../mconfig.json';
|
||||
import error from './error.js';
|
||||
|
||||
function copy() {
|
||||
return gulp
|
||||
.src([`./node_modules/locomotive-scroll/assets/scripts/scroll/vendors/*`])
|
||||
.on('error', function(err) {
|
||||
error(this, err);
|
||||
})
|
||||
.pipe(gulp.dest(`${paths.scripts.src}/scroll/vendors`));
|
||||
}
|
||||
|
||||
export default copy;
|
||||
@@ -5,14 +5,12 @@ import concat from './build/concat.js';
|
||||
import svgs from './build/svgs.js';
|
||||
import serve from './build/serve.js';
|
||||
import watch from './build/watch.js';
|
||||
import copy from './build/copy.js';
|
||||
import { buildStyles, buildScripts } from './build/build.js';
|
||||
|
||||
const compile = gulp.series(styles, scripts, svgs, concat);
|
||||
const main = gulp.series(copy, compile, serve, watch);
|
||||
const build = gulp.series(copy, compile, buildStyles, buildScripts);
|
||||
const main = gulp.series(compile, serve, watch);
|
||||
const build = gulp.series(compile, buildStyles, buildScripts);
|
||||
|
||||
gulp.task('default', main);
|
||||
gulp.task('compile', compile);
|
||||
gulp.task('build', build);
|
||||
gulp.task('copy', copy);
|
||||
|
||||
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
Reference in New Issue
Block a user