Простая и простая в использовании библиотеку анимации для веб -разработчиков
GIT Pages · Демо -версия детской площад
Jos-Animation, JavaScript на библиотеке анимации Scroll-это простой и простой в использовании пакет библиотеки анимации, чтобы мгновенно добавить профессиональную анимацию на ваш сайт. Он был создан, чтобы упростить мою жизнь при разработке веб -сайтов, поставляется с множеством функций и полностью настраивается. Он легкий и имеет очень маленький след. Самое приятное из всех - это то, что он не имеет (*минимума) по сравнению с производительностью.
Этот проект в настоящее время разрабатывается мной и сообществом Dev, поэтому вы можете ожидать больше функций и обновлений довольно часто.
Был вдохновлен GSAP, библиотеками AOS. Я хотел что -то проще в использовании, с отличной производительностью и хотел сделать реализацию лучше. Поэтому я работал над этим проектом с нуля.
Не стесняйтесь сообщать о проблеме или запросить функцию в этом репозитории :) И для получения дополнительной информации ознакомьтесь с веб -страницей JOS.
< a
target =" _blank "
rel =" noopener noreferrer nofollow "
href =" https://github.com/jesvijonathan/JOS-Animation-Library "
>
< img
src =" https://cdn.jsdelivr.net/gh/jesvijonathan/JOS-Animation-Library@master/res/badge/jos_github%20default.svg "
alt =" JOS-Animation "
style =" max-width: 100%; "
/> </ a > JOS v0.9.2 11 Nov 2023 Jesvi Jonathan
У вас есть возможность использовать последнюю версию JOS из различных источников:
< script
src =" https://cdnjs.cloudflare.com/ajax/libs/jos-animation/0.9.2/jos.js "
integrity =" sha512-ZbNmgrMmWwQspNz6WQ1HnqLEPMXE4PyJBVnuc10e4gwJhrycze2IzjDQPx4CxkOBnUyt5wNCekdeTRJOe8J4WA== "
crossorigin =" anonymous "
referrerpolicy =" no-referrer "
> </ script > < script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/jos.js " > </ script > < script src =" https://cdn.jsdelivr.net/gh/jesvijonathan/JOS-Animation-Library/dist/jos.js " > </ script >(или)
< script src =" https://cdn.jsdelivr.net/npm/jos-animation/dist/jos.js " > </ script >(или)
< script src =" https://cdn.jsdelivr.net/gh/jesvijonathan/JOS-Animation-Library/dist/v0.9.2/jos.js " > </ script > < script src =" https://unpkg.com/jos-animation " > </ script >(или)
< script src =" https://unpkg.com/[email protected]/dist/jos.js " > </ script > < script src =" https://raw.githubusercontent.com/jesvijonathan/JOS-Animation-Library/master/dist/jos.js " > </ script > Вы можете добавить мини -версию сценария, заменив jos.js на jos.min.js в теге сценария выше.
jos.js для базового. - jos.min.js для производственного использования. - jos.debug.js для отладки вместе с некоторой другой функцией v0.9 и далее, по умолчанию jos.js не требует, чтобы вы добавляли таблицу стилей jos.css , он будет экспортирован вместе со сценарием. Но вы все равно можете добавить таблицу стилей, если хотите по какой -то причине. ### Импорт JOS 1. Установите JOS с помощью NPM (пряжа или PNPM): `` `Bash NPM Установить JOS-ANIMATION jos-animation@latest[email protected][email protected] Так что это будет https://unpkg.com/jos-animation/@latest/dist/jos.js (Enced) для последней версии. или jos-animation/@0.8.8/dist/jos.js (NPM Install) для конкретной версии.
npm install jos-animation // import "jos-animation/dist/jos.css";
// Above is required only for v0.8.8 & below (or) if you want to overide jos by using style from the stylesheet
import JOS from "jos-animation" ;
// Other ways to import JOS
// import JOS from "jos-animation/dist/jos.js";
// import JOS from "jos-animation/dist/jos.min.js";
// import JOS from "jos-animation/dist/jos.debug.js"; // main.js
import { createApp } from "vue" ;
import { watch , nextTick } from "vue" ;
import JOS from "jos-animation" ; // jos-animation/dist/jos.debug.js
import App from "./App.vue" ;
const app = createApp ( App ) ;
app . mount ( "#app" ) ;
JOS . init ( ) ;
//JOS.version();
watch (
( ) => router . currentRoute . value ,
( ) => {
nextTick ( ( ) => {
JOS . refresh ( ) ;
} ) ;
}
) ;
// To observe elements after a route changeИспользуется в: https://jos-animation.vercel.app/
Этот пример для Vue.js также применим для nuxt.js
// index.js
import JOS from "jos-animation/dist/jos.js" ;
onload = ( ) => {
const options = {
debugMode : true ,
animation : "flip" ,
duration : 0.7 ,
rootMargin : "0% 0% 0% 0%" ,
} ;
JOS . init ( options ) ;
//JOS.version();
} ;
function Main ( ) {
useEffect ( ( ) => {
JOS . refresh ( ) ;
} , [ ] ) ;
// To observe elements after a route change
return (
< React . StrictMode >
< App />
</ React . StrictMode >
) ;
}
ReactDOM . createRoot ( document . getElementById ( "root" ) ) . render ( < Main /> ) ;Используется в: https://azzle.netlify.app
Этот выше пример для React.js также применим для letle.js & preact.js
// app/layout.tsx
import jos from "jos-animation/dist/jos.js" ;
export default function RootLayout ( {
children ,
} : {
children : React . ReactNode ;
} ) {
const jos_options = {
debugMode : false ,
passive : true ,
animation : "fade" ,
duration : 0.4 ,
rootMargin : "20% 0% 30% 0%" ,
} ;
useEffect ( ( ) => {
jos . init ( jos_options ) ;
} , [ ] ) ; // Once
useEffect ( ( ) => {
jos . refresh ( ) ;
} ) ; // For every update
return ( ) ;
}
// To observe elements after a route changeИспользуется в: https://bitspace-nextjs-jos.vercel.app
import { Component , OnInit , AfterViewChecked } from '@angular/core' ;
import JOS from 'jos-animation' ;
@ Component ( {
selector : 'app-root' ,
templateUrl : './app.component.html' ,
styleUrls : [ './app.component.css' ]
} )
export class AppComponent implements OnInit , AfterViewChecked {
ngOnInit ( ) : void {
JOS . init ( ) ; // Once
}
ngAfterViewChecked ( ) : void {
JOS . refresh ( ) ; // For every update
}
// ... rest of your code
}Вы можете проверить эту ветку для обсуждения для получения дополнительной информации: JOS для Angular
JOS.init(); Для инициализации библиотеки с настройками по умолчанию. <!-- Initialize JOS with default settings -->
< script >
JOS . init ( ) ;
</ script >JOS.init(options); Чтобы преувеличить настройки по умолчанию с помощью пользовательских настроек. <!-- Global Parameters -->
< script >
JOS . init ( {
// disable: false, // Disable JOS globally | Values : 'true', 'false'
debugMode : true , // Enable JOS debug mode | Values : 'true', 'false'
passive : false , // Set the passive option for the scroll event listener | Values : 'true', 'false'
once : false , // Disable JOS after first animation | Values : 'true', 'false' || Int : 0-1000
animation : "fade" , // JOS global animation type | Values : 'fade', 'slide', 'zoom', 'flip', 'fade-right', 'fade-left', 'fade-up', 'fade-down', 'zoom-in-right', 'zoom-in-left', 'zoom-in-up', 'zoom-in-down', 'zoom-out-right', 'zoom-out-left', 'zoom-out-up', 'zoom-out-down', 'flip-right', 'flip-left', 'flip-up', 'flip-down, spin, revolve, stretch, "my-custom-animation"
// animationInverse: "static", // Set the animation type for the element when it is scrolled out of view | Values : 'fade', 'slide', 'zoom', 'flip', 'fade-right', 'fade-left', 'fade-up', 'fade-down', 'zoom-in-right', 'zoom-in-left', 'zoom-in-up', 'zoom-in-down', 'zoom-out-right', 'zoom-out-left', 'zoom-out-up', 'zoom-out-down', 'flip-right', 'flip-left', 'flip-up', 'flip-down, spin, revolve, stretch, "my-custom-animation"
timingFunction : "ease-in-out" , // JOS global timing function | Values : 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear', 'step-start', 'step-end', 'steps()', 'cubic-bezier()', 'my-custom-timing-function'
//mirror : false, // Set whether the element should animate back when scrolled out of view | Values : 'true', 'false'
threshold : 0 , // Set global the threshold for the element to be visible | Values : 0-1
delay : 0 , // Set global the delay for the animation to start | Values : 0,1,2,3,4,5
duration : 0.7 , // Set global the duration for the animation playback | Values : flota : 0-1 & int : 0,1,2,3,4,5
// startVisible: "true", // Set whether the element should animate when the page is loaded | Values : 'true', 'false' || MS : 0-10000
// scrollDirection: "down", // Set the scroll direction for the element to be visible | Values : 'up', 'down', 'none'
//scrollProgressDisable: true // disable or enable scroll callback function | Values : 'true', 'false'
// intersectionRatio: 0.4, // Set the intersection ratio between which the element should be visible | Values : 0-1 (automatically set)
// rootMargin_top: "0%", // Set by which percent the element should animate out (Recommended value between 10% to -30%)
// rootMargin_bottom: "-50%", // Set by which percent the element should animate out (Recommended value between -10% to -60%)
// rootMargin: "0% 0% -50% 0%", // Set the root margin for the element to be visible | Values : _% _% _% _% (automatically set)
} ) ;
</ script >class="jos" на элемент, который вы хотите оживить: <!-- JOS class is required to animate the element -->
< div class =" jos " > </ div >data-jos *для настройки элемента, который вы хотите оживить, <!-- JOS attributes are optional and will work without them (class="jos" is mandatory). these attributes can be used to customize the animation of the element -->
< div
class =" jos "
data-jos_animation =" zoom "
data-jos_once =" false "
data-jos_duration =" 0.4 "
data-jos_delay =" 0.1 "
data-jos_timing-function =" ease-in-out "
data-jos_mirror =" true "
data-jos_rootMargin =" 0% 0% -50% 0% "
data-jos_rootMargin_top =" -10% "
data-jos_rootMargin_bottom =" -50% "
data-jos_scrollDirection =" down "
data-jos_startVisible =" false "
data-jos_threshold =" 0.4 "
data-jos_passive =" false "
data-jos_invoke =" myCustomFunction "
data-jos_invoke_out =" myCustomFunction_onExit "
data-jos_scroll =" your_callbackFunction "
data-jos_anchor =" #elementID "
> </ div >См. JOS Reps для полной информации о анимации, атрибутах и опциях.
/* Custom animation class name starts with 'jos-' keyword followed by the animation name*/
. jos-my-custom-animation {
/* Set the initial state of the element */
}data-jos_animation для my-custom-animation : < div class =" jos " data-jos_animation =" my-custom-animation " > </ div >Пример: пользовательская анимация
/* Custom inverse animation class name starts with 'jos-' keyword followed by the animation name*/
. jos-my-custom-animation-inverse {
/* Set the initial state of the element */
}data-jos_animationInverse к my-custom-animation-inverse : < div class =" jos " data-jos_animationInverse =" my-custom-animation-inverse " > </ div >Это особенно полезно, когда вы хотите оживить элемент, когда он прокручивается из его rootmargin , это дает больше настраиваемости для красивой анимации.
Вы также можете использовать комбинацию как data-jos_animation («Нет», «Статическое», без трансляции и т. Д.) и data-jos_animationInverse для создания пользовательской анимации.
Пример: пользовательская обратная анимация
/* Custom playable animation class name starts with 'jos-' keyword followed by the animation name*/
/* My Custom Playable Animation */
. jos-my-custom-animation {
transition : 1 s ;
animation : jos-my-custom-animation 1 s ease-in-out infinite;
transform : translateX ( 100 px );
}
/* Add Keyframes */
@keyframes jos-my-custom-animation {
0 % {
opacity : 1 ;
}
50 % {
transform : translateX ( -100 px );
}
}data-jos_animation для my-custom-animation и data-jos_animationInverse к my-custom-animation-play : < div
class =" jos "
data-jos_animation =" my-custom-animation "
data-jos_animationinverse =" static "
> </ div > Здесь атрибут data-jos_animationinverse установлен на static , чтобы не допустить, чтобы элемент не был вышел из виду и сохранить его в конечном состоянии. Играбельная анимация запускается и начинает играть, когда элемент прокручивается в поле зрения.
Пример: играбельная анимация
/* Custom timing function attribute name starts with 'data-jos_timing_function' keyword & a custom name of your choice */
[ data-jos_timing_function = "myCustom-timingFunc" ] {
/* Set the timing of the element */
transition-timing-function : cubic-bezier ( 0.2 , 0.5 , 0.2 , 0.5 ) !important ;
}data-jos_timing-function FUNCTION для my-custom-timing-function : < div class =" jos " data-jos_timing-function =" myCustom-timingFunc " > </ div >Пример: пользовательская функция времени
id : <!-- My reference anchor element -->
< div id =" myElement " > </ div >data-jos_anchor , с идентификатором, начиная с суффикса # : <!-- My animated element -->
< div class =" jos " data-jos_anchor =" #myElement " > </ div > Это запускает анимацию, когда элемент myElement прокручивается в поле зрения.
Эта функция полезна, особенно если вы хотите оживить элемент, который находится в фиксированном положении .
Пример: якорь
data-jos_scrollDirection : <!-- My animated element -->
< div class =" jos " data-jos_scrollDirection =" down " > </ div > Это запускает анимацию, когда элемент прокручивается в поле зрения от направления down .
И вы можете сделать то же самое, чтобы вниз, чтобы up направление.
Это особенно полезно, когда вы хотите оживить элемент, когда он прокручивается в вид с определенного направления.
Пример: анимация на основе направления
data-jos_startVisible : <!-- My animated element -->
< div class =" jos " data-jos_startVisible =" true " > </ div > Это устанавливает элемент, чтобы быть видимым при загрузке страницы. Вы можете добавить к нему задержку, установив значение в ms :
<!-- My animated element that is visible with a given timer/delay in ms-->
< div class =" jos " data-jos_startVisible =" 3000 " > </ div > Это устанавливает элемент, чтобы быть видимым, когда страница загружается через 3000 мс или мгновенно, если значение равно 0 (или) true .
Эта функция полезна, особенно если вам нужен элемент, который находится в фиксированном положении, или присутствует на целевой странице , который был изначально в видимом состоянии без анимации.
Пример: начать видимый
// Create a custom function
function myCustomFunction ( ) {
// Do something
}data-jos_invoke на myCustomFunction : < div class =" jos " data-jos_invoke =" myCustomFunction " > </ div >Это запускает функцию MyCustomFunction (), когда элемент прокручивается в виде.
Вы можете использовать атрибут data-jos_invoke_out чтобы запустить функцию, когда элемент прокручивается из виду.
Пример: пользовательская функция
data-jos_scroll : < div id =" elem1 " class =" jos " data-jos_scroll =" your_callbackFunction " >
Scroll Trigger Element
</ div > your_callbackFunction = ( element ) => {
// windowScrollProgress : element scroll pixel
console . log ( element . id , element . jos . windowScrollProgress ) ;
// scrollProgress : 0-1
element . style . opacity = element . jos . scrollProgress ;
// rootScrollProgress : +-0 to +-1
element . style . innerHTML = element . jos . rootScrollProgress ;
} ;Это запускает функцию your_callbackfunction () при прокрутке элемента. Таким образом, вы можете справиться с прогрессом прокрутки элемента.
Пример: пользовательская функция
data-jos_stagger вместе с классом jos : < div
class =" jos parent_elem "
id =" stagger "
data-jos_stagger =" spin "
data-jos_staggerinverse =" none "
data-jos_stagger_anchor =" #elementID "
data-jos_stagger_sequence =" 0.1 "
data-jos_stagger_delay =" 0 "
data-jos_stagger_duration =" 0.4 "
data-jos_stagger_timing-function =" ease-in-out "
data-jos_stagger_mirror =" true "
data-jos_stagger_rootMargin =" 0% 0% -50% 0% "
data-jos_stagger_invoke =" myCustomFunction "
data-jos_stagger_invoke_out =" myCustomFunction_onExit "
data-jos_stagger_scroll =" your_callbackFunction "
data-jos_stagger_startVisible =" false "
data-jos_stagger_scrollDirection =" down "
data-jos_stagger_once =" false "
>
<!-- data-jos_stagger="true" # this attribute along with 'jos' class in parent element is Required/Must to enable staggering -->
<!-- data-jos_stagger_anchor="true" # auto sets parent element's id & uses it as a anchor's -->
<!-- Element 1 -->
< div class =" child_elem " > </ div >
<!-- Element 2 -->
< div class =" child_elem " > </ div >
<!-- Element 3 -->
< div class =" child_elem " > </ div >
<!-- Element n -->
</ div > Атрибут data-jos_stagger вместе с классом jos в родительском элементе требуется/необходимо для включения ошеломления, даже если вы используете другие атрибуты.
data-jos_stagger = true будет автоматическим идентификатором для родительского элемента и использует его в качестве якоря для детских элементов.data-jos_stagger = #id будет использовать заданный идентификатор в качестве якоря для детских элементов.data-jos_stagger_anchor Сделайте элемент независимым от родительского элемента. data-jos_stagger_seq используется для установки задержки между каждым элементом в последовательности (для запуска одного за другим), тогда как data-jos_stagger_delay Общая задержка для каждого элемента в целом.
Пример: ошеломляющая анимация
| Атрибут | Тип | По умолчанию | Описание | Ценности |
|---|---|---|---|---|
| DATA-JOS_ANIMATION | нить | тускнеть | Установите тип анимации для элемента. | fade , slide , zoom , flip , fade-right , fade-left , fade-up , fade-down , zoom-in-right , zoom-in-left , zoom-in-up , zoom-in-down , zoom-out-right , zoom-out-left , zoom-out-up , zoom-out-down , flip-right , flip-left , flip-up , flip-down , rotate , rotate-right , spin , spin-right , revolve , revolve-right , stretch , stretch-vertical , my-custom-animation |
| data jos_animationinverse | нить | статический | Установите обратный тип анимации для элемента. | fade , slide , zoom , flip , fade-right , fade-left , fade-up , fade-down , zoom-in-right , zoom-in-left , zoom-in-up , zoom-in-down , zoom-out-right , zoom-out-left , zoom-out-up , zoom-out-down , flip-right , flip-left , flip-up , flip-down , rotate , rotate-right , spin , spin-right , revolve , revolve-right , stretch , stretch-vertical , my-custom-animation |
| DATA-JOS_ONCE | логический | ЛОЖЬ | Установите, должен ли элемент оживлять только один раз. | true , false |
| DATA-JOS_DELAY | инт | 0 | Установите задержку для начала анимации. | (float: 0-1) & (int: 0, 1, 2, 3, 4, 5) |
| data-jos_duration | плавать | 0,4 | Установите продолжительность для воспроизведения анимации. | (float: 0-1) & (int: 0, 1, 2, 3, 4, 5) |
| DATA-JOS_TIMING FUNCTION | нить | простота | Установите функцию времени для воспроизведения анимации. | ease , ease-in , ease-out , ease-in-out , linear , step-start , step-end , steps(1, start) , steps(1, end) , cubic-bezier(0.1, 0.7, 1.0, 0.1) , my-custom-timingFunc |
| DATA-JOS_INVOKE | нить | нулевой | Установите функцию, которая будет вызвана, когда элемент прокручивается в поле зрения. | function , myCustomFunction |
| DATA-JOS_INVOKE_OUT | нить | нулевой | Установите функцию, которая будет вызвана, когда элемент прокручивается из виду. | function , myCustomFunction |
| Data-Once | Boolean & Int | ЛОЖЬ | Установить, должен ли элемент оживлять только | (boolean: true, false) & (int: 0-infinity) |
| DATA-JOS_ROOTMARGIN | нить | 0% -10% 0% -50% | Устанавливает маржу для элемента, который будет анимироваться в точке зрения при прокрутке. | (string: "right% top% left% bottom%") |
| DATA-JOS_ROOTMARGIN_TOP | нить | 0% | Устанавливает маржу для элемента, чтобы оживить в верхней части просмотра при прокрутке. | (string: "top%") |
| DATA-JOS_ROOTMARGIN_BOTTOM | нить | 0% | Устанавливает запас для элемента, чтобы оживить в нижней части просмотра при прокрутке. | (string: "bottom%") |
| DATA-JOS_SCROLLDIRECTION | нить | вниз | Устанавливает направление, чтобы элемент был анимирован на просмотре INA при прокрутке. | (string: "up", "down", "none") |
| data jos_startvisible | Boolean & Int | ЛОЖЬ | Установите, должен ли элемент начинаться с окончательного состояния при загрузке страницы (также работает с задержкой). | (boolean: true, false) & (int: 0-10000 ms) |
| DATA-JOS_ANCHOR | нить | нулевой | Устанавливает элемент якоря для элемента, который будет анимироваться в точке зрения при прокрутке. | (string: "#elementID") |
| data-jos_scroll | нить | нулевой | Устанавливает функцию обратного вызова для элемента, чтобы оживить в точке зрения при прокрутке. | function , your_callbackFunction |
| data-jos_stagger | нить | тускнеть | Устанавливает анимацию «Шофля» для элемента поражения ребенка, чтобы оживить в виде просмотра при прокрутке. | string , fade |
| data-jos_staggerinverse | нить | статический | Устанавливает ошеломляющую обратную анимацию для элемента поражения ребенка, чтобы оживить в виде просмотра при прокрутке (воспроизводить анимацию). | string , fade-play |
| data jos_stagger_anchor | нить | нулевой | Устанавливает якорный элемент для элемента поражения ребенка, чтобы оживить в виде просмотра при прокрутке. | string , #elementID |
| data-jos_stagger_seq | плавать | нулевой | Устанавливает задержку последовательности для элемента поражения ребенка, чтобы оживить в виде просмотра при прокрутке. | float , 0-1 |
| data-jos_stagger_delay | плавать | нулевой | Устанавливает задержку для детского элемента поражения, чтобы оживить в виде просмотра при прокрутке. | float , 0-1 |
| data-jos_stagger_duration | плавать | нулевой | Устанавливает продолжительность элемента для ребенка, ошеломляющего в виде просмотра при прокрутке. | float , 0-1 |
| data jos_stagger_timing-функция | нить | нулевой | Устанавливает функцию синхронизации для детского элемента поражения, чтобы оживить в виде просмотра при прокрутке. | string , ease |
| data-jos_stagger_mirror | логический | нулевой | Устанавливает зеркальную анимацию для элемента поражения ребенка, чтобы оживить в просмотре при прокрутке. | boolean , true , false |
| data jos_stagger_rootmargin | нить | нулевой | Устанавливает маржу для элемента поражения ребенка, чтобы оживить в виде просмотра при прокрутке. | (string: "right% top% left% bottom%") |
| data jos_stagger_scrolldirection | нить | нулевой | Устанавливает направление для элемента поражения ребенка, чтобы анимировать ONA Viewport при прокрутке. | (string: "up", "down", "none") |
| data jos_stagger_startvisible | Boolean & Int | нулевой | Установите, должен ли элемент поражения ребенка начинаться в конечном состоянии при загрузке страницы (также работает с задержкой). | (boolean: true, false) & (int: 0-10000 ms) |
| data jos_stagger_once | логический | нулевой | Установите, должен ли элемент оживлять только один раз или n считать. | true , false , int |
| data-jos_stagger_scroll | нить | нулевой | Устанавливает функцию обратного вызовов для ребенка, поражающегося анимеру в виде просмотра при прокрутке. | function , your_callbackFunction |
| data jos_stagger_invoke | нить | нулевой | Установите функцию, которая будет вызвана, когда прокручивается элемент шата ребенка. | function , myCustomFunction |
| data jos_stagger_invoke_out | нить | нулевой | Установите функцию, которая будет вызвана, когда элемент детского поражения прокручивается из виду. | function , myCustomFunction |
| Метод | Описание | Параметры |
|---|---|---|
| init () | Инициализировать/сбросить JOS | Options = {} (см. Jos.init (Options)) |
| обновить () | Обновить Джос | никто |
| останавливаться() | Останови/Пауза Джос | State = ( 0 - остановка в конечном состоянии, 1 - остановка в начальном состоянии, -1 - пауза в текущем состоянии) |
| начинать() | Начать/возобновить службу JOS | State = ( 0 - нормальный/полный старт, -1 - резюме из текущего состояния) |
| разрушать() | Уничтожить экземпляр JOS | State = ( 0 - Уничтожьте экземпляр JOS, исключая таблицу стилей, 1 - Полное уничтожение вместе с таблицей JOS -стиля) |
Как только вы закончите и закончите разработку версии JOS, вы можете объединить ее, используя следующую команду из Project Root:
# JOS-Animation-Library
# |-dev
# |-dist
# |-bundler
# |-config
# |-export <-- Check this folder for the output files
# |-jos.css
# |-jos.js
# |...
# |-original
# |-bundle.sh <-- Run this file to bundle JOS
# ... # Change/Move to bundler directory
cd ./bundler
# Bundle the project
sh bundle.sh
# View the output files
ls ./exportПереехал на проблемы
Может быть, даже свяжите его и протестируйте, прежде чем поделиться этим с миром;
( Пинг меня, если у тебя есть демонстрация;) )