uniapp에서 루프를 사용하여 너비를 결정하고 너비를 변경하는 방법
모바일 애플리케이션의 인기로 인해 개발자는 편리한 개발 도구와 프레임워크를 많이 제공했습니다. UniApp은 개발자가 동일한 코드를 사용하여 여러 플랫폼에서 애플리케이션을 구축할 수 있는 크로스 플랫폼 프레임워크입니다. UniApp에서는 일부 레이아웃 및 스타일 문제를 처리해야 하는 경우가 많습니다. 너비를 결정하고 너비를 변경하기 위해 루프를 수행하는 방법은 일반적인 문제 중 하나입니다.
우선, 우리가 달성하고자 하는 것은 모든 하위 요소의 너비의 합이 너비보다 작은 여러 하위 요소를 컨테이너에 배치하는 것입니다. 컨테이너의 경우 하위 요소의 너비를 컨테이너의 너비로 균등하게 나누어야 하며, 각 하위 요소의 너비는 너비의 합이 컨테이너의 너비보다 크면 지정된 값보다 작지 않아야 합니다. 컨테이너에 맞게 각 하위 요소의 너비를 비례적으로 줄여야 합니다.
다음으로 Vue에서 v-for 명령을 사용하여 루프에서 하위 요소를 렌더링하는 동시에 하위 요소의 너비를 저장하는 변수를 정의하고 실제 상황에 따라 그 값을 변경하는 것을 고려할 수 있습니다. 코드는 다음과 같습니다.
<template> <view class="container"> <view class="item" v-for="(item, index) in itemList" :key="index" :style="'width: ' + itemWidth[index] + 'px;'"> {{ item }} </view> </view> </template> <script> export default { data() { return { itemList: ['Apple', 'Banana', 'Cherry', 'Grape', 'Orange'], containerWidth: 100, // 容器宽度 itemWidth: [], // 子元素宽度 minItemWidth: 30 // 子元素最小宽度 } }, mounted() { this.calculateWidth() }, methods: { calculateWidth() { const totalWidth = this.itemList.reduce((pre, cur) => { return pre + this.calculateTextWidth(cur) }, 0) if (totalWidth < this.containerWidth) { // 宽度不足,均分 const width = Math.floor(this.containerWidth / this.itemList.length) this.itemWidth = this.itemList.map(() => width) } else { // 宽度过多,按比例缩小 let availableWidth = this.containerWidth const result = this.itemList.reduce((pre, cur) => { const curWidth = this.calculateTextWidth(cur) const minCurWidth = Math.min(curWidth, this.minItemWidth) const ratio = curWidth / minCurWidth pre.push({ originalWidth: curWidth, availableWidth: Math.floor(availableWidth / ratio), ratio: ratio }) availableWidth -= Math.floor(availableWidth / ratio) return pre }, []) this.itemWidth = result.map(item => { return Math.max(item.availableWidth / item.ratio, this.minItemWidth) }) } }, calculateTextWidth(text) { // 通过uni.createSelectorQuery获取元素实际宽度 return uni.createSelectorQuery().select('.text-measure') .boundingClientRect(rect => { return rect.width }).exec() } } } </script> <style> .container { display: flex; flex-wrap: wrap; } .item { display: flex; justify-content: center; align-items: center; padding: 5px; } .text-measure { visibility: hidden; position: absolute; left: -9999px; } </style>
위 코드의 구현 아이디어는 먼저 하위 요소의 너비 합과 컨테이너 너비의 관계를 계산한 다음, 필요한지 여부를 판단하는 것입니다. 하위 요소의 너비를 동일하게 하거나 실제 상황에 비례하여 줄인 후 최종적으로 계산된 하위 요소를 사용합니다. 요소 너비는 itemWidth
변수에 할당되고 v- for
지시문은 템플릿에서 하위 요소를 렌더링하는 데 사용됩니다. itemWidth
变量,并在模板中使用v-for
指令来渲染子元素。
需要注意的是,为了计算文本宽度,我们需要定义一个text-measure
类的元素来进行实际测量,同时使用uni.createSelectorQuery
text-measure
클래스의 요소를 정의하고 uni.createSelectorQuery
를 사용해야 한다는 점에 유의하세요. 실제 요소 너비를 얻으려면. 요약하자면 UniApp은 다양한 모바일 애플리케이션 개발 문제를 해결하기 위해 많은 편리한 도구와 구성 요소를 제공하는 강력한 프레임워크입니다. 레이아웃 및 스타일 문제를 다룰 때 루프를 사용하여 너비를 결정하고 너비를 변경하는 것은 원하는 레이아웃 효과를 빠르게 구축하는 데 도움이 될 수 있는 매우 효과적이고 실용적인 방법입니다. 🎜위 내용은 uniapp에서 루프를 사용하여 너비를 결정하고 너비를 변경하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











이 기사는 장치, 통합, 기능, UI/UX, 성능, 크로스 플랫폼 및 보안 테스트를 포함한 UniAPP 응용 프로그램에 대한 다양한 테스트 유형에 대해 설명합니다. 또한 크로스 플랫폼 호환성을 보장하고 JES와 같은 도구를 권장합니다.

이 기사는 코드 최적화, 리소스 관리 및 코드 분할 및 게으른로드와 같은 기술에 중점을 둔 UNIAPP 패키지 크기를 줄이기위한 전략에 대해 설명합니다.

이 기사는 HBuilderx, WeChat 개발자 도구 및 Chrome Devtools와 같은 도구에 중점을 둔 UniAPP 개발을위한 디버깅 도구 및 모범 사례에 대해 설명합니다.

게으른 하중은 비 약한 리소스를 방어하여 사이트 성능을 향상시켜로드 시간 및 데이터 사용량을 줄입니다. 주요 관행에는 중요한 콘텐츠 우선 순위를 정하고 효율적인 API 사용이 포함됩니다.

이 기사에서는 압축, 반응 형 디자인, 게으른로드, 캐싱 및 Webp 형식 사용을 통해 웹 성능을 향상시키기 위해 UniAPP의 이미지 최적화에 대해 설명합니다.

이 기사는 UniAPP의 복잡한 데이터 구조 관리, 싱글 톤, 관찰자, 공장 및 상태와 같은 패턴과 Vuex 및 VUE 3 Composition API를 사용하여 데이터 상태 변경을 처리하기위한 전략에 중점을 둔다.

UNIAPP는 변수 및 믹스 인에 대해 uni.scss를 사용하여 app.vue 또는 app.scss를 통한 Manifest.json 및 스타일을 통해 글로벌 구성을 관리합니다. 모범 사례에는 SCSS, 모듈 식 스타일 및 반응 형 디자인 사용이 포함됩니다.

vue.js에서 파생 된 UniAPP의 계산 된 속성은 반응성, 재사용 가능하며 최적화 된 데이터 처리를 제공하여 개발을 향상시킵니다. 종속성이 변경되면 자동으로 업데이트하고 성능 혜택을 제공하며 주 관리 공동 단순화
