| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
- // for details on configuring this project to bundle and minify static web assets.
- // Write your JavaScript code.
- class NavMenu {
- constructor() {
- this.$menu = document.getElementById("navMenu");
- this.isDown = false;
- this.startX = 0;
- this.scrollLeft = 0;
- this.setEvent();
- }
- setEvent() {
- this.$menu.addEventListener('mousedown', (e) => this.mouseDown(e));
- this.$menu.addEventListener('mouseleave', () => this.mouseLeave());
- this.$menu.addEventListener('mouseup', () => this.mouseUp());
- this.$menu.addEventListener('mousemove', (e) => this.mouseMove(e));
- this.$menu.addEventListener('wheel', (e) => this.mouseWheel(e));
- }
- mouseWheel(e) {
- e.preventDefault(); // 기본 휠 스크롤 동작을 방지
- this.$menu.scrollLeft += (e.deltaY * 2); // 휠 속도 조정
- }
- mouseDown(e) {
- this.isDown = true;
- this.$menu.classList.add('active');
- this.startX = (e.pageX - this.$menu.offsetLeft);
- this.scrollLeft = this.$menu.scrollLeft;
- }
- mouseLeave() {
- this.isDown = false;
- this.$menu.classList.remove('active');
- }
- mouseUp() {
- this.isDown = false;
- this.$menu.classList.remove('active');
- }
- mouseMove(e) {
- if (!this.isDown) {
- return;
- }
- e.preventDefault();
- const x = (e.pageX - this.$menu.offsetLeft);
- const walk = ((x - this.startX) * 3); // 스크롤 속도 조정
- this.$menu.scrollLeft = (this.scrollLeft - walk);
- }
- }
- const navMenu = new NavMenu();
- $(function () {
- const dropdownElementList = document.querySelectorAll('.dropdown-toggle');
- const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl));
- });
|