[小さなプログラム] スイッチ スイッチのテキスト効果を手動で実現します (スイッチの左右のテキストは同じでも異なっていてもかまいません)。

最終効果:

左右の文字幅が同じ
ここに画像の説明を挿入
左右の文字幅が異なる
ここに画像の説明を挿入

左右同じ長さ

効果:座標wx:show切り替え
ここに画像の説明を挿入
注:左右の長さが同じ場合は、同じ適切な幅を設定できます。

html:

<view class="switch">
 <view
    class="switchNums {
     
     { switchChecked == true ? 'currentNum' : '' }}"
    bindtap="switchChange"
    data-index="0"
    >{
   
   { selectOpen[0] }}
  </view>
  <view
    class="switchNums {
     
     { switchChecked == false ? 'currentNum' : '' }}"
    bindtap="switchChange"
    data-index="1"
    >{
   
   { selectOpen[1] }}</view
  >
</view>

css:

.switch {
    
    
  display: flex;
  align-items: center;
  justify-content: flex-end;
  width:120px;
  height: 54rpx;
  border-radius: 54rpx;
  background: #f7f7fb;
}
 
.switchNums {
    
    
  width: 112rpx;
  height: 54rpx;
  line-height: 54rpx;
  border-radius: 54rpx;
  text-align: center;
  color: #C1C1C1;
  font-size: 28rpx;
  font-weight: bold;
}
 
.currentNum {
    
    
  background: #1989FA;
  color: #ffffff;
}

js:

data: {
    
    
	selectOpen: ['扫码', '输入'],
	switchChecked: true
 }
methods:{
    
    
    switchChange() {
    
    
       this.switchChecked = !this.switchChecked
       console.log('switchChecked', this.switchChecked)
     }
}

wx:show: または true

wx:show="{
    
    {
    
    switchChecked===false}}

参考:
小番組スイッチにテキスト表示を追加する_小番組スイッチにリマインダーを追加する方法_ハンシェフの夢のブログ - CSDNブログ

左右の長さが違う

好き:
ここに画像の説明を挿入

幅と高さが十分でなく、片側に多くのテキストがある場合、テキストの折り返しの問題が発生する可能性があります。

テキストの折り返しの理由: テキストの幅が外側のブロック レベル要素によって設定された幅よりも大きい

したがって、幅を設定せずにパディングを設定し、パディングで距離を開くことができます。幅が設定されていない場合、改行はなく、距離は単語数に応じて長さに適応します. パディングを追加して、距離が美しくなるようにします.

上記のように、左側を広くしたい場合は、別途パディングを追加できます。

左右の長さが違う+インラインブロック

実際、必要なスイッチは通常、回線を占有しません。つまり、ブロックレベルの要素は必要ありません。
ただし、スイッチ スイッチは通常、次の場合に背景色を持ちます。

  • ブロックレベルの要素です
  • 幅が設定されていません

次に、行全体がスイッチの背景色になり、見栄えが悪くなります。

ここに画像の説明を挿入
幅が設定されている場合、背景色は幅と同じ幅になりますが、異なる画面では解像度の問題により、テキストの折り返しの問題が発生する場合があります。もちろん、外部スイッチ クラスの幅を非常に大きくして、テキスト + パディングをスイッチの幅よりも小さくすることができますが、これにより、外部背景色の幅がスイッチよりも大幅に大きくなります。 .

解決:インラインブロックを使用する

要素が1 行を占めるのではなく、幅と高さの属性も設定する必要がある場合は、インライン ブロックを選択できます。

効果:

  • スイッチの幅は、テキストの長さとパディングに応じて調整されます
  • 背景色は上記の幅に適応します(つまり、上記の幅の幅は背景色と同じ大きさです)
  • テキストの折り返しの問題はありません (テキストの折り返しの問題の本質: テキストの幅 > 幅の設定)
.switch {
    
    
  display:inline-block;
  height: 70rpx;
  border-radius: 70rpx;
  background: #f7f7fb;
}
 
.switchNums {
    
    
  display:inline-block;
  height: 70rpx;
  line-height: 70rpx;
  border-radius: 70rpx;
  text-align: center;
  color: #C1C1C1;
  font-size: 28rpx;
  font-weight: bold;
  //加点padding撑开
  padding:0 8px;
}
 
.currentNum {
    
    
  background: #1989FA;
  color: #ffffff;
}

効果:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/karshey/article/details/130248679