recherche
Maisoninterface Webuni-appComment utiliser la boucle pour déterminer la largeur et modifier la largeur dans Uniapp

Avec la popularité des applications mobiles, les développeurs ont fourni de nombreux outils et frameworks de développement pratiques. UniApp est un framework multiplateforme qui permet aux développeurs d'utiliser le même code pour créer des applications sur plusieurs plateformes. Dans UniApp, nous devons souvent résoudre certains problèmes de mise en page et de style. Comment effectuer une boucle pour déterminer la largeur et modifier la largeur est l'un des problèmes courants.

Tout d'abord, nous devons clarifier les exigences. Ce que nous voulons réaliser, c'est placer plusieurs sous-éléments de largeurs inégales dans un conteneur lorsque la somme des largeurs de tous les sous-éléments est inférieure à la largeur du sous-élément. conteneur, la largeur des sous-éléments doit être divisée de manière égale par la largeur du conteneur, et la largeur de chaque sous-élément n'est pas inférieure à une valeur spécifiée si la somme des largeurs est supérieure à la largeur du conteneur. conteneur, la largeur de chaque sous-élément doit être réduite proportionnellement pour s'adapter au conteneur.

Ensuite, nous pouvons envisager d'utiliser l'instruction v-for dans Vue pour restituer les éléments enfants en boucle, tout en définissant une variable pour stocker la largeur de l'élément enfant et en modifiant sa valeur en fonction de la situation réelle. Le code est le suivant :

<template>
  <view>
    <view>
      {{ item }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      itemList: [&#39;Apple&#39;, &#39;Banana&#39;, &#39;Cherry&#39;, &#39;Grape&#39;, &#39;Orange&#39;],
      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(&#39;.text-measure&#39;)
        .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>

L'idée d'implémentation du code ci-dessus est de calculer d'abord la relation entre la somme des largeurs des sous-éléments et la largeur du conteneur, puis de juger s'il est nécessaire de égalisez la largeur des sous-éléments ou réduisez-la proportionnellement en fonction de la situation réelle, et enfin utilisez les sous-éléments calculés. La largeur de l'élément est affectée à la variable itemWidth, et le v- La directive for est utilisée dans le modèle pour restituer les éléments enfants. itemWidth变量,并在模板中使用v-for指令来渲染子元素。

需要注意的是,为了计算文本宽度,我们需要定义一个text-measure类的元素来进行实际测量,同时使用uni.createSelectorQuery

Il convient de noter que pour calculer la largeur du texte, nous devons définir un élément de la classe text-measure pour la mesure réelle et utiliser uni.createSelectorQuery pour obtenir la largeur réelle de l'élément.

En résumé, UniApp est un framework puissant qui fournit de nombreux outils et composants pratiques pour résoudre divers problèmes de développement d'applications mobiles. Lorsqu'il s'agit de problèmes de mise en page et de style, utiliser une boucle pour déterminer la largeur et modifier la largeur est une méthode très efficace et pratique qui peut nous aider à créer rapidement l'effet de mise en page souhaité. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Comment déboguer les problèmes sur différentes plateformes (par exemple, mobile, web)?Comment déboguer les problèmes sur différentes plateformes (par exemple, mobile, web)?Mar 27, 2025 pm 05:07 PM

L'article traite des stratégies de débogage pour les plates-formes mobiles et Web, mettant en évidence des outils comme Android Studio, Xcode et Chrome Devtools, et des techniques pour des résultats cohérents à travers le système d'exploitation et l'optimisation des performances.

Quels outils de débogage sont disponibles pour le développement UNIAPP?Quels outils de débogage sont disponibles pour le développement UNIAPP?Mar 27, 2025 pm 05:05 PM

L'article traite des outils de débogage et des meilleures pratiques pour le développement de l'UNIAPP, en se concentrant sur des outils comme HBuilderx, WeChat Developer Tools et Chrome Devtools.

Comment effectuez-vous des tests de bout en bout pour les applications UNIAPP?Comment effectuez-vous des tests de bout en bout pour les applications UNIAPP?Mar 27, 2025 pm 05:04 PM

L'article traite des tests de bout en bout pour les applications UNIAPP sur plusieurs plateformes. Il couvre la définition de scénarios de test, le choix d'outils comme Appium et Cypress, la configuration des environnements, l'écriture et l'exécution de tests, l'analyse des résultats et l'intégration

Quels sont les différents types de tests que vous pouvez effectuer dans une application UNIAPP?Quels sont les différents types de tests que vous pouvez effectuer dans une application UNIAPP?Mar 27, 2025 pm 04:59 PM

L'article traite de divers types de tests pour les applications UNIAPP, y compris l'unité, l'intégration, les tests fonctionnels, UI / UX, les performances, la plate-forme multiplateforme et la sécurité. Il couvre également une compatibilité multiplateforme et recommande des outils comme JES

Quels sont les anti-motifs de performance communs à UniaPP?Quels sont les anti-motifs de performance communs à UniaPP?Mar 27, 2025 pm 04:58 PM

L'article traite des anti-motifs de performance communs dans le développement de l'UNIAPP, tels que l'utilisation excessive des données globales et la liaison inefficace des données, et propose des stratégies pour identifier et atténuer ces problèmes pour de meilleures performances d'applications.

Comment pouvez-vous utiliser des outils de profilage pour identifier les goulots d'étranglement des performances à UniApp?Comment pouvez-vous utiliser des outils de profilage pour identifier les goulots d'étranglement des performances à UniApp?Mar 27, 2025 pm 04:57 PM

L'article discute de l'utilisation d'outils de profilage pour identifier et résoudre les goulots d'étranglement des performances dans UNIAPP, en se concentrant sur la configuration, l'analyse des données et l'optimisation.

Comment pouvez-vous optimiser les demandes de réseau dans UNIAPP?Comment pouvez-vous optimiser les demandes de réseau dans UNIAPP?Mar 27, 2025 pm 04:52 PM

L'article traite des stratégies d'optimisation des demandes de réseau dans UNIAPP, en se concentrant sur la réduction de la latence, la mise en œuvre de la mise en cache et l'utilisation des outils de surveillance pour améliorer les performances des applications.

Comment pouvez-vous optimiser les images pour les performances Web à UniApp?Comment pouvez-vous optimiser les images pour les performances Web à UniApp?Mar 27, 2025 pm 04:50 PM

L'article discute de l'optimisation des images dans UniaPP pour de meilleures performances Web par compression, conception réactive, chargement paresseux, mise en cache et utilisation du format WebP.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.