如何解決div樣式拉伸問題

華為開發者論壇發表於2021-07-22

現象描述:

text 元件的內容較多且顯示多行的時候,相鄰的div 樣式會顯示異常,會從正常的圓形變為橢圓。

問題程式碼如下:

<template>
  <div class="container">
    <div style="align-items: center;">
       <div class="typscolor" style="background-color: blue; opacity: 0.26; margin-left: 16px;">
</div>
      <text>{{text}}</text>
       <div class="typscolor" style="background-color: blue; opacity: 0.26; margin-left: 16px;">
</div>
      <text>{{text}}</text>
       <div class="typscolor" style="background-color: blue; opacity: 0.26; margin-left: 16px;">
</div>
      <text>{{text}}</text>
    </div>  
  </div>
</template>
<style>
  .container {
    flex-direction: column;
    justify-content: center;
    height: 100%;
  }
   text {
    font-size: 24px;
  }
  .typscolor {
      border-radius: 50%;
      width: 30px;
      height: 30px;
      background-color: red;
      margin-right: 8px; 
  }
</style>
<script>
  module.exports = {
    data: {
      text:'text文字內容過多時左邊的圓圈會被拉伸'
    },
    onInit() {
    },
  }     
</script>

  程式碼執行效果,如下圖所示:

 

 
 

 
 

       1     異常

 
 

      2     正常

 

 

問題分析:

text 元件內容過多時,text 元件寬度增加,相鄰div 寬度不夠,flex 佈局寬度超出會自動壓縮,從而導致div 標籤被拉伸了。

解決方法:

可以給div 標籤設定flex-shrink: 0 屬性,顯示指定不壓縮,即可解決該問題。

 

修改程式碼如下:

<template>
  <div class="container">
    <div style="align-items: center;">
       <div class="typscolor" style="background-color: blue; opacity: 0.26; margin-left: 16px;"></div>
      <text>{{text}}</text>
       <div class="typscolor" style="background-color: blue; opacity: 0.26; margin-left: 16px;"></div>
      <text>{{text}}</text>
       <div class="typscolor" style="background-color: blue; opacity: 0.26; margin-left: 16px;"></div>
      <text>{{text}}</text>
    </div>  
  </div>
</template>
<style>
  .container {
    flex-direction: column;
    justify-content: center;
    height: 100%;
  }
   text {
    font-size: 24px;
  }
  .typscolor {
      border-radius: 50%;
      width: 30px;
      height: 30px;
      background-color: red;
      margin-right: 8px; 
      flex-shrink: 0;   /*加上該屬性即可解決拉伸問題*/
  }
</style>
<script>
  module.exports = {
    data: {
      text:'text文字內容過多時左邊的圓圈會被拉伸'
    },
    onInit() {
    },
  }     
</script>


修改後程式碼執行效果如下圖所示:

 

 

欲瞭解更多詳情,請參見:

快應用通用樣式介紹:

https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-common-settings#h1-1575449213432

 

原文連結: https://developer.huawei.com/consumer/cn/forum/topic/0201454978326300783?fid=0101271690375130218

原作者:Mayism

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2782711/,如需轉載,請註明出處,否則將追究法律責任。

相關文章