웹 프론트엔드 JS 튜토리얼 Bootstrap의 Modal에 드래그 앤 드롭 기능을 추가하는 방법에 대한 자세한 소개

Bootstrap의 Modal에 드래그 앤 드롭 기능을 추가하는 방법에 대한 자세한 소개

Jun 13, 2018 pm 03:54 PM
bootstrap modal 견인

이 글에서는 Bootstrap Modal에 드래그 앤 드롭을 추가하는 자세한 방법을 주로 소개하고 참고용으로 올려드립니다.

【관련 영상 추천: 부트스트랩 튜토리얼

인터넷에는 부트스트랩 모달에 대한 드래그 앤 드롭 구현이 많이 있지만 코드 중 상당수가 복잡해 보이고 캡슐화가 좋지 않을 수도 있습니다. jquery를 사용하다 UI의 드래그 앤 드롭 기능은 제가 원하는 것이 아닙니다. 사실 2017년 봄 축제 때 Bootstrap Modal에 드래그 앤 드롭 기능을 추가하던 중 눈 깜짝할 사이에 1년이 지나갔습니다. 2017년 춘절 때 이전 프로젝트의 몇몇 동료들이 레이어를 프런트엔드로 사용했는데, 저처럼 js 프런트엔드에 대한 지식이 부족한 백엔드 개발의 경우 전체 세트를 소개하기가 어려웠습니다. Layui의 일부 구성 요소를 살펴본 후 구성 요소의 기능이 그다지 완전하지 않다는 것을 알았습니다. 조금 더 복잡한 프로젝트는 이후 단계에서 많은 함정을 초래할 것으로 예상됩니다. . 그래서 프론트엔드 CSS 프레임워크로 부트스트랩을 사용했고, 팝업창을 만들기 위해 모달 등의 컴포넌트도 광범위하게 사용했습니다.

단계(3.3.4 이상 3.x 버전 기준):

1. bootstrap.js 소스 코드를 열어 모달 구성 요소 코드 블록을 찾고, Modal 아래에 드래그 앤 드롭 코드 구현을 추가합니다. DEFAULTS 코드 블록.

Modal.DEFAULTS = {
 backdrop: true,
 keyboard: true,
 show: true
}
//新加入的拖拽
Modal.prototype.draggable = function () {
 var $ele = this.$element;
 var mouseOffset;
 var $modalDialog = $ele.find(".modal-dialog");
 var dialogOffset;

 $ele.find(".modal-header").on('mousedown', function (event) {
 $(this).addClass({cursor: 'move'});
 $('body').addClass('select');
 dialogOffset = $modalDialog.offset();
 mouseOffset = {
  top: event.pageY - dialogOffset.top,
  left: event.pageX - dialogOffset.left
 };
 $('body').on("mousemove", function (event) {
  var left = event.pageX - mouseOffset.left;
  var top = event.pageY - mouseOffset.top;
  if (left < 10) {
  left = 0;
  } else if (left > $(window).width() - $modalDialog.width()) {
  left = $(window).width() - $modalDialog.width();
  }
  if (top < 10) {
  top = 0;
  } else if (top > $(window).height() - $modalDialog.height()) {
  top = $(window).height() - $modalDialog.height();
  }
  $modalDialog.offset({
  top: top,
  left: left
  });
 });
 });

 $(document).on("mouseup mouseleave", function () {
 $('body').off("mousemove");
 });
}
로그인 후 복사

2. 모달의 show 메소드에 draggable 메소드를 추가합니다

Modal.prototype.show = function (_relatedTarget) {
    var that = this
    var e = $.Event('show.bs.modal', {relatedTarget: _relatedTarget})

    this.$element.trigger(e)

    if (this.isShown || e.isDefaultPrevented()) return

    this.isShown = true

    //调用draggable()增加拖拽
    this.draggable()
    this.checkScrollbar()
    this.setScrollbar()
    this.$body.addClass('modal-open')

    this.escape()
    this.resize()
    //......省略
}
로그인 후 복사

위 작업을 완료한 후, 드래그를 아주 잘 지원하도록 방금 수정한 소스코드 js를 페이지에 직접 도입하면 전체 드래그가 가능합니다. 보기 창의 범위는 경계를 초과하지 않습니다.

주의 사항: 위의 소스 코드 수정을 완료한 후 부트스트랩 소스 코드를 압축하여 패키징하는 것이 가장 좋습니다. 자동 구성에 익숙하지 않은 분들은 압축을 위해 공개 웹사이트에 올려두시면 됩니다. 웹 페이지 로딩 중 대역폭 사용량을 줄이기 위해 소스 코드를 패키징하고 압축하려면 gulp 및 webpack과 같은 프런트 엔드 자동화 도구를 사용하는 것이 가장 좋습니다. 물론 이 파일이 원본 파일과 어떻게 다른지 명확하게 짐작할 수 있도록 파일 이름을 bootstrap-draggable.min.js와 같은 이름으로 지정하는 것도 좋습니다. 또한 bootstrap3.x 버전의 소스 코드를 직접 다운로드한 다음 내부에서 modal.js를 수정하고 자체 grunt 빌드를 사용하여 다시 패키징할 수도 있습니다.

문제가 발생합니다. 부트스트랩 4.0+ 버전의 소스 코드는 3.x 버전에 비해 모달 구성 요소에 대한 수정 사항이 많지 않습니다. 위의 방법도 사용할 수 있습니다. 모달 중앙 정렬을 포함하여 소스 코드를 수정하여 완성할 수도 있습니다.

위 내용은 모두를 위해 제가 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

WeChat 미니 프로그램의 페이지 수명 주기에 대한 자세한 해석(자세한 튜토리얼)

NProgress.js 및 NProgress.js에서 로딩 진행 플러그인을 사용하는 방법(자세한 튜토리얼)

WeChat 미니 프로그램 프로그램 내 앱 수명 주기(자세한 튜토리얼)

jQuery에서 NProgress.js 로딩 진행 플러그인을 사용하는 방법

위 내용은 Bootstrap의 Modal에 드래그 앤 드롭 기능을 추가하는 방법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript를 사용하여 이미지의 드래그 및 확대/축소 기능을 구현하는 방법은 무엇입니까? JavaScript를 사용하여 이미지의 드래그 및 확대/축소 기능을 구현하는 방법은 무엇입니까? Oct 27, 2023 am 09:39 AM

JavaScript를 사용하여 이미지의 드래그 및 확대/축소 기능을 구현하는 방법은 무엇입니까?

Eclipse에 부트스트랩을 도입하는 방법 Eclipse에 부트스트랩을 도입하는 방법 Apr 05, 2024 am 02:30 AM

Eclipse에 부트스트랩을 도입하는 방법

부트스트랩에 아이디어를 도입하는 방법 부트스트랩에 아이디어를 도입하는 방법 Apr 05, 2024 am 02:33 AM

부트스트랩에 아이디어를 도입하는 방법

부트스트랩 매개 효과 테스트 결과를 Stata에서 읽는 방법 부트스트랩 매개 효과 테스트 결과를 Stata에서 읽는 방법 Apr 05, 2024 am 01:48 AM

부트스트랩 매개 효과 테스트 결과를 Stata에서 읽는 방법

대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 Apr 23, 2024 pm 03:28 PM

대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위

부트스트랩 조정 테스트 결과를 읽는 방법 부트스트랩 조정 테스트 결과를 읽는 방법 Apr 05, 2024 am 03:30 AM

부트스트랩 조정 테스트 결과를 읽는 방법

부트스트랩을 사용하여 중재 효과를 테스트하는 방법 부트스트랩을 사용하여 중재 효과를 테스트하는 방법 Apr 05, 2024 am 03:57 AM

부트스트랩을 사용하여 중재 효과를 테스트하는 방법

부트스트랩과 스프링부트의 차이점은 무엇입니까 부트스트랩과 스프링부트의 차이점은 무엇입니까 Apr 05, 2024 am 04:00 AM

부트스트랩과 스프링부트의 차이점은 무엇입니까

See all articles