Maison  >  Article  >  interface Web  >  Comment uniapp détermine-t-il si le texte dépasse la zone spécifiée ?

Comment uniapp détermine-t-il si le texte dépasse la zone spécifiée ?

PHPz
PHPzoriginal
2023-04-18 14:12:191799parcourir

Dans le développement mobile, nous rencontrons souvent une situation : nous devons déterminer si un morceau de texte dépasse la zone désignée. Par exemple, sur la page de profil utilisateur, le pseudo de l'utilisateur peut dépasser la zone d'affichage. Dans ce cas, nous devons tronquer ou abréger le pseudo.

Cet article expliquera comment utiliser uniapp pour déterminer si le texte dépasse la zone spécifiée, et comment tronquer et afficher les vignettes.

1. Si l'obtention du texte dépasse

Dans uniapp, vous pouvez utiliser l'API de l'applet WeChat pour obtenir les informations des nœuds de texte. Utilisez la méthode wx.createSelectorQuery() pour obtenir le nœud de page, puis utilisez la méthode select() pour obtenir le nœud de texte, et enfin utilisez la méthodeboundingClientRect() pour obtenir la position et la taille du nœud.

Le code spécifique est le suivant :

// 在页面中添加一个id为“text-wrapper”的文本节点
<view id="text-wrapper">{{text}}</view>

<!-- JS代码 -->
onReady() {
  wx.createSelectorQuery().select('#text-wrapper').boundingClientRect(rect => {
    console.log(rect.width)  // 文本宽度
    console.log(rect.height) // 文本高度
  }).exec()
}

Grâce au code ci-dessus, nous pouvons obtenir les informations de largeur et de hauteur du nœud de texte. Ensuite, nous pouvons les comparer à la largeur et à la hauteur du conteneur pour déterminer si le texte la dépasse.

2. Tronquer le texte

Lorsque le texte dépasse le conteneur, nous pouvons tronquer le texte et n'afficher qu'une partie du contenu. Dans uniapp, vous pouvez utiliser la méthode substr() ou la méthode slice() de js pour la troncature.

Le code spécifique est le suivant :

// 在页面中添加一个宽度为200px的容器
<view class="container">

  // 在容器中添加一个id为“text-wrapper”的文本节点
  <view id="text-wrapper">{{text}}</view>

</view>

<!-- JS代码 -->
onReady() {
  wx.createSelectorQuery().select('#text-wrapper').boundingClientRect(rect => {
    if (rect.width > 200) {
      let len = Math.floor(200 / (rect.width / this.text.length))  // 根据容器宽度计算字符数
      this.text = this.text.substr(0, len) + '...'  // 截断字符串并添加省略号
    }
  }).exec()
}

Dans le code ci-dessus, nous détectons si la largeur du nœud de texte dépasse la largeur du conteneur de 200px. Si elle dépasse, nous calculons le nombre de caractères pouvant être affichés. Utilisez ensuite la méthode substr() pour tronquer le texte et ajouter des points de suspension à la fin.

3. Afficher le texte sous forme de vignettes

En plus de tronquer le texte, nous pouvons également afficher le contenu complet via l'affichage des vignettes. Dans uniapp, vous pouvez utiliser l'attribut CSS text-overflow et le mot-clé points de suspension pour obtenir l'effet miniature.

Le code spécifique est le suivant :

// 在页面中添加一个宽度为200px、高度为40px的容器
<view class="container">

  // 在容器中添加一个id为“text-wrapper”的文本节点
  <view id="text-wrapper">{{text}}</view>

</view>

<!-- CSS代码 -->
.container {
  width: 200px;
  height: 40px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

Dans le code ci-dessus, nous masquons le contenu au-delà du conteneur en définissant l'attribut de débordement du conteneur sur caché. Utilisez ensuite l'attribut text-overflow et le mot-clé ellipsis pour ajouter des points de suspension, et utilisez l'attribut white-space pour empêcher le texte de s'enrouler.

Résumé

En utilisant les styles API et CSS fournis par uniapp et l'applet WeChat, nous pouvons facilement déterminer si le texte dépasse, tronquer le texte et afficher le texte sous forme abrégée. Dans le développement réel, choisir la méthode appropriée en fonction des besoins spécifiques peut améliorer efficacement l'expérience utilisateur de l'application.

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