Ngx-drag-scroll: λ“œλž˜κ·Έ μ•€ λ“œλ‘­ 직후 클릭 μ „νŒŒ 방지

에 λ§Œλ“  2017λ…„ 10μ›” 11일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: bfwg/ngx-drag-scroll

λ“œλž˜κ·Έ μ•€ λ“œλ‘­ ν›„ 클릭 μ΄λ²€νŠΈκ°€ λ°œμƒν•˜λŠ” λ¬Έμ œκ°€ μžˆλŠ” μ‚¬λžŒμ΄ μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

λ‚΄ μ»¨ν…Œμ΄λ„ˆλŠ” μ „μš© νŽ˜μ΄μ§€μ— λŒ€ν•œ 링크둜 λž˜ν•‘λœ κ±°λŒ€ν•œ 이미지 λͺ©λ‘μž…λ‹ˆλ‹€.

λ•Œλ•Œλ‘œ λ“œλž˜κ·Έ μ•€ λ“œλ‘­μ΄ 이미지 μœ„μ—μ„œ μ‹œμž‘λ  λ•Œ 마우슀λ₯Ό 놓을 λ•Œ 클릭 μ΄λ²€νŠΈκ°€ μ‹œμž‘λ©λ‹ˆλ‹€.

이런 일이 μΌμ–΄λ‚˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” μ‰¬μš΄ 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

μ»¨ν…Œμ΄λ„ˆμ— no-click 클래슀λ₯Ό μΆ”κ°€ν•œ λ‹€μŒ λΆ€λͺ¨μ— no-click ν΄λž˜μŠ€κ°€ μžˆλŠ”μ§€ ν™•μΈν•œ λ‹€μŒ 100ms 이내에 마우슀 업이 트리거되면 이벀트 μ „νŒŒλ₯Ό μ€‘μ§€ν•˜λŠ” λͺ¨λ“  μžμ‹μ— click eventListenerλ₯Ό μΆ”κ°€ν•˜λŠ” 것에 λŒ€ν•΄ μƒκ°ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ“œλž˜κ·Έ κ°€λŠ₯ν•œ μƒνƒœκ°€ μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬, 이전에 보고된 문제(https://github.com/bfwg/angular2-drag-scroll/issues/16)둜 인해 주석 처리된 e.preventDefault()λŠ” 이 μ›μΉ˜ μ•ŠλŠ” λ™μž‘κ³Ό 관련이 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 더 λ‚˜μ€ μ†”λ£¨μ…˜μ€ λ“œλž˜κ·Έ μ΄λ²€νŠΈκ°€ μ€‘μ§€λœ 직후에 μ‹œμž‘λœ κ²½μš°μ—λ§Œ 클릭을 λ°©μ§€ν•˜λŠ” 것 μž…λ‹ˆλ‹€.

λͺ¨λ“  13 λŒ“κΈ€

@μŠ€ν”„λΌμš°μΉ˜
이 문제λ₯Ό 보고해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. 이 버그에 λŒ€ν•΄ ν™λ³΄ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

μ•„λ‹ˆ, λ‚˜λŠ” 아직 이것에 λ„ˆλ¬΄ μ΅μˆ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Angularμ—μ„œ κ°œλ°œμ„ μ‹œμž‘ν•œμ§€ ​​18κ°œμ›”μ΄ μ•ˆλ˜μ–΄ μ–΄μ œ GitHub에 κ°€μž…ν–ˆμŠ΅λ‹ˆλ‹€ ;)

κ±±μ •ν•˜μ§€ λ§ˆμ„Έμš”. μ‹œκ°„μ΄ λ‚˜λ©΄ μˆ˜μ •ν•˜λ„λ‘ λ…Έλ ₯ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„, 저도 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μˆ˜μ •/ν•΄κ²° λ°©λ²•μœΌλ‘œ 진행 상황이 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš” @stuart-clark-45

μ €λŠ” v2.0 릴리슀λ₯Ό μž‘μ—… μ€‘μž…λ‹ˆλ‹€. κ·Έλ•ŒκΉŒμ§€λŠ” 이 λ¬Έμ œκ°€ ν•΄κ²°λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€. μ•ˆλ˜λ©΄ λŒμ•„μ™€μ„œ μˆ˜μ •ν•˜κ² μŠ΅λ‹ˆλ‹€.

@bfwg 정말 κ°μ‚¬ν•©λ‹ˆλ‹€. 이 버그 μ™Έμ—λŠ” 정말 멋진 μž‘μ€ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. v2.0을 μ–Έμ œ μΆœμ‹œν•  것인지에 λŒ€ν•œ 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ?

@stuart-clark-45

문제 μ—†μŠ΅λ‹ˆλ‹€. 2.0의 진행 상황은 #66 #68μ—μ„œ 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€. μ•½κ°„μ˜ 쑰사 후에 λ¬Έμ œκ°€ μ˜ˆμƒλ³΄λ‹€ μˆ˜μ •ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. 2.0 릴리슀 직후에 μˆ˜μ •ν•˜κΈ° μœ„ν•΄ μƒˆλ‘œμš΄ PR을 λ§Œλ“€λ„λ‘ λ…Έλ ₯ν•˜κ² μŠ΅λ‹ˆλ‹€. 지연 λΌμ„œ μ£„μ†‘ν•©λ‹ˆλ‹€.

@bfwg ꡉμž₯ν•©λ‹ˆλ‹€ 당신은 λͺ¨λ“  것을 μž˜ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€ λŒ€λ‹¨νžˆ κ°μ‚¬ν•©λ‹ˆλ‹€ :thumbsup:

이것이 관련이 μžˆλŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ 마우슀λ₯Ό λˆ„λ₯΄κ³  ν…μŠ€νŠΈλ₯Ό κ°•μ‘° ν‘œμ‹œν•˜μ—¬ 각도 μ•±μ—μ„œ ν…μŠ€νŠΈλ₯Ό 선택할 수 μ—†μŠ΅λ‹ˆλ‹€. 이것은 DragScrollModule을 κ°€μ Έμ˜¨ 후에 λ°œμƒν•©λ‹ˆλ‹€. λ‚˜λŠ” 데λͺ¨ νŽ˜μ΄μ§€μ— κ°”κ³  ν™•μΈλœ ν…μŠ€νŠΈ 선택 μ—­μ‹œ ν•΄λ‹Ή νŽ˜μ΄μ§€μ—μ„œ μ „ν˜€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

νŽ˜μ΄μ§€μ˜ μ–΄λŠ κ³³μ—μ„œλ‚˜ μ§€κΈˆ λ°”λ‘œ ν…μŠ€νŠΈλ₯Ό μ„ νƒν•˜λŠ” μœ μΌν•œ 방법은 마우슀 더블 클릭과 ν‚€λ³΄λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ ν…μŠ€νŠΈλ₯Ό κ°•μ‘° ν‘œμ‹œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€...

이 λ™μž‘μ„ λ¬΄μ‹œν•˜κΈ° μœ„ν•΄ μΌμ‹œμ μœΌλ‘œ μˆ˜ν–‰ν•  수 μžˆλŠ” μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆκΉŒ?

(reachesLeftBound)λ₯Ό μ‚¬μš©ν•˜μ—¬ 클릭을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ“œλž˜κ·Έλ˜κ³  μžˆλŠ”μ§€ νŒŒμ•…ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
dragScroll에 (reachesLeftBound) μΆ”κ°€
<div dragScroll [scrollbar-hidden]="true" (reachesLeftBound)="leftBoundStat($event)">
div 등에 마우슀 이벀트λ₯Ό μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.
<div (mousedown)="down()" (click)="fire()">
component.tsμ—μ„œ λ‹€μŒμ„ μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.

click = false;
leftBoundStat(event: any): void {
        if (this.click) {
            this.click = false;
        }
    }

    down() {
        console.log('Mouse down');
        window.setTimeout(this.startCheck(), 1000);
    }

    fire() {
        if (this.click) {
            console.log('Fire the action');

        }
    }
startCheck() {
        this.click = true;
    }

μ΄λ ‡κ²Œ ν•˜λ©΄ λ“œλž˜κ·Έν•˜λ €λŠ” 경우 클릭을 방지할 수 μžˆμŠ΅λ‹ˆλ‹€.
그건 κ·Έλ ‡κ³ , scrollbar-hidden은 μ—¬μ „νžˆ β€‹β€‹λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λˆ„κ΅¬λ“ μ§€ 그것을 μž‘λ™μ‹œν‚€λŠ” 방법을 μ•Œκ³  μžˆλ‹€λ©΄, λ‚˜λŠ” ν•œ 쀄을 κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€ :)

μ•ˆλ…•ν•˜μ„Έμš” @STIKOλ‹˜ , μžμ„Ένžˆ λ³Ό 수 μžˆλ„λ‘ ν”ŒλŸ°μ»€ 링크λ₯Ό μ œκ³΅ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” 전에 그것을 μ‚¬μš©ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— plunkerμ—μ„œ μž‘λ™ν•˜κ²Œ ν•  수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.
app.module.tsμ—μ„œ κ°€μ Έμ™”μŠ΅λ‹ˆλ‹€.
import {DragScrollModule} from 'ngx-drag-scroll';
그런 λ‹€μŒ λ™μΌν•œ 파일의 @NgModule κ°€μ Έμ˜€κΈ°μ— μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
imports: [DragScrollModule];
λ“œλž˜κ·Έκ°€ μž‘λ™ν•˜λ―€λ‘œ μœ„μ˜ λ‚΄μš©μ΄ λ§žλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.
이제 λ‚΄ ꡬ성 μš”μ†Œμ—μ„œ

export class Example implements OnInit {
   @Input() 'scrollbar-hidden': boolean;
}

@Input() κ°€ ν•„μš”ν•œμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ ν…œν”Œλ¦Ώ

<div dragScroll scrollbar-hidden="true"
         drag-scroll="true"
         drag-scroll-y-disabled="true"
         snap-disabled="true">

          <div style="display: inline">
            <img src='http://via.placeholder.com/310x471'/>
          </div>
          <div style="display: inline">
            <img src='http://via.placeholder.com/310x471'/>
          </div>
          <div style="display: inline">
            <img src='http://via.placeholder.com/310x471'/>
          </div>
      </div>
</div>

슀크둀 ν•  λ•Œλ₯Ό μ œμ™Έν•˜κ³ λŠ” λͺ¨λ“  것이 잘 μž‘λ™ν•©λ‹ˆλ‹€. λΉ„ν™œμ„±ν™”λ₯Ό true둜 μ„€μ •ν–ˆλŠ”λ°λ„ 슀크둀 λ§‰λŒ€κ°€ 계속 ν‘œμ‹œλ©λ‹ˆλ‹€.

img νƒœκ·Έμ˜ div 래퍼λ₯Ό μ œκ±°ν•˜κ³  λ„ˆλΉ„μ™€ 높이λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆκΉŒ?
μ•„λž˜μ™€ 같은 것. λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

@Component({
  selector: 'my-app',
  styles: [`
    .image-cell: {
      width: 310px;
      height: 470px;
    }
  `]
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      <div dragScroll 
         drag-scroll-y-disabled="true"
         scrollbar-hidden="true"
         snap-disabled="true" style="height: 470px; width: 310px;">
          <img class="image-cell" src='http://via.placeholder.com/310x471'/>
          <img class="image-cell" src='http://via.placeholder.com/310x471'/>
          <img class="image-cell" src='http://via.placeholder.com/310x471'/>
      </div>
    </div>
  `,
})
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰