vue 에서 좌우 양쪽 div 의 폭 을 드래그 하여 조정 하 는 예제 코드 를 실현 합 니 다.
최근 vue 를 사용 할 때 필요 한 것 이 있 습 니 다.좌우 div 는 중간 부분 드래그 를 통 해 폭 을 조정 할 수 있 습 니 다.이와 같 습 니 다.
이것 은 나의 최종 실현 효과 이다.
아니면 옛말 에 저 는 전문 적 인 전단 엔지니어 가 아니 라 간단 한 전단 을 겸직 해서 썼 기 때문에 이 기능 의 실현 은 다음 과 같은 블 로그'vue 드래그 좌우 양측 div 의 폭 조정','vuejs 에서 드래그 하여 원소 의 폭 을 바 꾸 어 너비 적응 크기 를 실현 합 니 다'덕분 입 니 다.저 는 그들 이 제공 한 코드 에 대해 억 개의 세부 사항 을 추 가 했 을 뿐 입 니 다.
실현 원리
위의 그림 에서 보 듯 이 이 기능 을 실현 하려 는 페이지 를 세 부분 으로 나 누 어야 합 니 다.왼쪽,조정 구역,오른쪽 은 각각 css 스타일 에 대응 하 는 left,resize,mid 입 니 다.그리고 이 세 개의 div 를 css 스타일 을 box 의 div 에 두 면 됩 니 다.
구현 코드-HTML 부분
다음 코드 를 vue 페이지 파일 에
<div class="box" ref="box">
<div class="left">
<!-- div -->
</div>
<div class="resize" title=" ">
⋮
</div>
<div class="mid">
<!-- div -->
</div>
</div>
구현 코드-CSS 부분아래 코드 를탭 에 배치 하면 됩 니 다.
/* */
/* div */
.box {
width: 100%;
height: 100%;
margin: 1% 0px;
overflow: hidden;
box-shadow: -1px 9px 10px 3px rgba(0, 0, 0, 0.11);
}
/* div */
.left {
width: calc(32% - 10px); /* */
height: 100%;
background: #FFFFFF;
float: left;
}
/* div */
.resize {
cursor: col-resize;
float: left;
position: relative;
top: 45%;
background-color: #d6d6d6;
border-radius: 5px;
margin-top: -10px;
width: 10px;
height: 50px;
background-size: cover;
background-position: center;
/*z-index: 99999;*/
font-size: 32px;
color: white;
}
/* */
.resize:hover {
color: #444444;
}
/* div' */
.mid {
float: left;
width: 68%; /* */
height: 100%;
background: #fff;
box-shadow: -1px 4px 5px 3px rgba(0, 0, 0, 0.11);
}
구현 코드-드래그 이벤트 부분아래 코드 를 methods 방법 구역 에 두 면 됩 니 다.
dragControllerDiv: function () {
var resize = document.getElementsByClassName('resize');
var left = document.getElementsByClassName('left');
var mid = document.getElementsByClassName('mid');
var box = document.getElementsByClassName('box');
for (let i = 0; i < resize.length; i++) {
//
resize[i].onmousedown = function (e) {
//
resize[i].style.background = '#818181';
var startX = e.clientX;
resize[i].left = resize[i].offsetLeft;
//
document.onmousemove = function (e) {
var endX = e.clientX;
var moveLen = resize[i].left + (endX - startX); // (endx-startx)= 。resize[i].left+ =
var maxT = box[i].clientWidth - resize[i].offsetWidth; // - =
if (moveLen < 32) moveLen = 32; // 32px
if (moveLen > maxT - 150) moveLen = maxT - 150; // 150px
resize[i].style.left = moveLen; //
for (let j = 0; j < left.length; j++) {
left[j].style.width = moveLen + 'px';
mid[j].style.width = (box[i].clientWidth - moveLen - 10) + 'px';
}
};
//
document.onmouseup = function (evt) {
//
resize[i].style.background = '#d6d6d6';
document.onmousemove = null;
document.onmouseup = null;
resize[i].releaseCapture && resize[i].releaseCapture(); // ReleaseCapture()
};
resize[i].setCapture && resize[i].setCapture(); //
return false;
};
}
},
그리고 mouted 에서 로 딩 부분 을 초기 화하 여 추가 하면 됩 니 다.
this.dragControllerDiv();
결어상기 코드 는 좌우 div 드래그 확대 축 소 를 실현 할 수 있 지만 실제 응용 에서 저 는 더욱 까다 로 운 문제 에 부 딪 혔 습 니 다.그것 은 특정한 div 에서 iframe 프레임 워 크 를 사용 하면 드래그 할 때 현저 한 카드 가 존재 합 니 다.만약 에 사용 하 는 과정 에서 이 문제 가 발생 하면 제 다음 글vue 에서 드래그 변경 에 iframe 이 존재 하 는 div 큰 시간 카드 문 제 를 해결 합 니 다.을 볼 수 있 습 니 다.
vue 에서 좌우 양쪽 div 의 폭 을 드래그 하여 조정 하 는 예제 코드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 vue 드래그 조정 좌우 양쪽 div 너비 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.