vue 감청 dom 크기 변경 사례
접 기 왼쪽 디 렉 터 리 를 누 르 면 작 아 지고 오른쪽 콘 텐 츠 영역 이 커 지 는 것 과 같 지만 swiper 는 처음에 폭 을 정 했 기 때문에 오른쪽 너비 크기 를 감청 해서 upddata 를 해 보 겠 다 고 생각 합 니 다.하지만 vue 의 watch 로$refs.swiper.offsetwidth 를 감청 하 는 데 실 패 했 습 니 다!!!하지만 폭 은 확실히 바 뀌 고 있 습 니 다.해결 방법 부터 말씀 드 리 겠 습 니 다.
1.사용element-resize-detector
var elementResizeDetectorMaker = require("element-resize-detector")
erd.listenTo(document.getElementById("swiper"), function(element) {
var width = element.offsetWidth;
var height = element.offsetHeight;
console.log("Size: " + width + "x" + height);
});
// vue getid。。 。 ref dom
2.사용ResizeObserver
this.observer = new ResizeObserver(entries => {
entries.forEach(() => {
swiper.updata()
})
})
let content = document.getElementById('swiper')
this.observer.observe(content)
왜 워 치 는 내 폭 을 동시에 들 을 수 없 는 지 에 대해 서 는.양 방향 으로 연 결 된 데이터,즉 MVVM 의 데이터 만 감청 할 수 있 을 것 같 습 니 다.예 를 들 어 저 희 는 watch 로 data 와$route 를 자주 감청 합 니 다.아직 잘 모 르 겠 어 요.큰 놈 이 도 와 줬 으 면 좋 겠 어 요.보충 지식:vue 는 어떤 용기 의 크기 변 화 를 감청 합 니 다(떡 모양 그림 은 용기 의 크기 변화 에 적응 합 니 다).
수요
echarts 도표 용기 크기 에 따라 크기 변경
주로 vue 감청 dom 요소 의 크기 변 화 를 사 용 했 습 니 다.
element 가 제공 하 는 element-resize-detector 는 문 제 를 쉽게 해결 할 수 있 는 존재 입 니 다.
설치 의존
npm install element-resize-detector
require 도입 사용,필요 한 페이지**.vue 도입
phontoImage(){ //
var echarts = require('echarts');
var elementResizeDetectorMaker = require("element-resize-detector");// dom
var erd = elementResizeDetectorMaker();
var worldMapContainer = document.getElementById('main4'); // dom
var that = this;
// chart ,
var resizeWorldMapContainer = function () {
worldMapContainer.style.width = worldMapContainer.scrollWidth+'px';
worldMapContainer.style.height = worldMapContainer.clientHeight+'px';
};
// dom, echarts
var myChart = echarts.init(worldMapContainer);
//var myChart = echarts.init(document.getElementById('main1'));
myChart.on('click',function(params){
that.open(params);
});
myChart.setOption({
title:[
{
text: this.data4.name, //
//subtext:rentalVal,
textStyle:{ //
fontSize:14,
color:"black"
},
subtextStyle: { //
fontSize:14,
color: 'black'
},
textAlign:"center",
x: '43%', //
y: '44%',
}],
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
type: 'scroll',
orient: 'vertical',
right: 10,
top: 20,
bottom: 20,
data: this.data4.names,
},
series : [
{
name: this.data4.name,
type: 'pie',
radius : ['40%', '60%'], //
center: ['45%', '50%'],
data:this.data4.values,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
},
normal:{
color:function(params) {
//
var colorList =['#7c277d','#7460ee', '#FC3468', '#1e88e5', '#ffb22b', '#fc4b6c', '#708069', '#26c6da','#fcc525', '#8d6658'];
return colorList[params.dataIndex]
}
}
}
}
]
});
erd.listenTo(worldMapContainer, function (element) { //
that.$nextTick(function () {
myChart.resize(); //
})
})
},
이상 의 vue 감청 dom 크기 변화 사례 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.