【小程序】手动实现switch开关中带文字效果(开关左右文字相同/不同都可以)

news/2024/7/20 1:43:18 标签: 小程序, css, javascript

最终效果:

左右文字宽度相同
在这里插入图片描述
左右文字宽度不同
在这里插入图片描述

左右长度相同

效果:配合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

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:

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

配合wx:show:或true

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

参考:
小程序 switch 上添加文字显示_小程序switch中怎么添加一个提示_梦到韩大厨的博客-CSDN博客

左右长度不同

如:
在这里插入图片描述

如果宽高不够,且一边文字更多,可能出现文本换行的问题。

文本换行原因:文本的宽度大于外层块级元素设置的宽度

因此我们可以不设置宽而设置padding,让padding撑开距离:没有设置宽就不会换行,距离随字数自适应长度,加点padding保证距离美观。

如上图,若希望左边的再宽一些就可以单独再加padding。

左右长度不同+inline-block

实际上,我们需要的switch开关一般不会占一行。即,我们并不需要块级元素。
然而,switch开关一般会有背景色,如果:

  • 是块级元素
  • 没有设置宽度

则一整行都会是switch的背景色,这并不好看:

在这里插入图片描述
若设置了宽度,背景色会只有宽度那么宽,但是,在不同屏幕上由于分辨率问题可能出现文本换行问题。我们当然可以使外面的switch类的宽度十分大,以使得 文字+padding 一定小于switch的宽,但是这会导致外部的背景色宽度明显大于switch。

解决方法:使用inline-block

当我们想要让一个元素既不独占一行,又可以设置其宽高属性的时候,我们就可以选择inline-block了。

效果:

  • switch开关宽度随文字长度+padding自适应
  • 背景色随上述宽度自适应(即上述宽度多宽,背景色就有多少)
  • 不会出现文本换行问题(文本换行问题本质:文本宽度>设置宽度)
css">.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;
}

效果:
在这里插入图片描述


http://www.niftyadmin.cn/n/243576.html

相关文章

DeepSpeed 搭建碰到的问题

Windows 系统来做一些前沿开发&#xff0c;估计连微软自家的孩子们也都鄙视&#xff0c;在Win 11下搭建Deepspeed 环境&#xff0c;遇到 PS C:\WINDOWS\system32> pip install deepspeed Collecting deepspeed Downloading deepspeed-0.9.0.tar.gz (764 kB) -------…

docker容器与网络模式|磁盘使用|内存使用|清理

docker容器与网络模式|磁盘使用|内存使用|清理 一 docker 网络模式二 docker的网络模式分类三 网络模式详解3.1host模式&#xff1a;3.2 container模式container模式操作 3.3 none模式3.4 brideg模式3.5 自定义网络 四 容器资源控制4.1 docker容器cpu压力测试4.2 设置CPU资源占…

QGIS--开发OpenSCENARIO动态场景(三)--制作动态场景

一、添加scenario&#xff0c;carla的环境变量 export CARLA_ROOT/path/to/your/carla/installation export SCENARIO_RUNNER_ROOT/path/to/your/scenario/runner/installation export PYTHONPATH$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/dist/carla-<VERSION>.egg ex…

第四十章 调试总结

调试没有文本输出控制台,GLSL中没有断点,无法检测GPU的运行状态。 glGetError函数可以查询错误标记,会检测错误标记集,在OpenGL确实出错的时候返回一个错误值,原型如下: GLenum glGetError();————要么会返回错误标记之一,要么返回无错误。 GL_NO_ERROR 0 自上次调用…

微积分入门

文章目录 前言初期积分微分微积分问题 后期极限 ε \varepsilon ε- δ \delta δ极限勒贝格积分 结语 前言 微积分总共走过了两个时期。首先是牛顿和莱布尼茨利用无穷小量定义微分和积分&#xff0c;并且发现了微分和积分的关系&#xff0c;这是第一个时期&#xff0c;这时的…

能量密度的必要性:城市比乡村具有更高的能量密度

文章目录 引言I 人口密度1.1 人口密度太低对于经济的发展的不利因素1.2 足够的人口密度带来的好处1.3 乌鲁克城II 农耕文明和商业文明2.1 农耕文明2.2 商业文明III 有效掌握动力的文明处于优势3.1 苏美尔人- 轮子&风能的利用3.2 英国人- 以蒸汽机为代表的工业革命引言 文明…

人大金仓kingbaseV8.6安装 “初始化数据库错误”

按照正常流程&#xff0c;安装最后一步报错&#xff0c;如下 找了很长时间&#xff0c;原因是cmd的配置有问题&#xff0c;导致输出了多余的字符串“Active code page: 65001”&#xff0c;进而导致kingbase无法配置。 解决方式&#xff1a; winr&#xff0c;输入 regedit 进…

pywebview搭建、运行、打包白屏

1、禁用微软商店引流 点击开始菜单输入管理应用执行别名搜索系统设置&#xff0c;将该列表划到最底部&#xff0c;找到python.exe和python3.exe&#xff0c;将其设置为关闭状态 这是微软搞的狗皮膏药&#xff0c;强制型环境变量 2、配置Python环境 1.考虑版本管理&#xff…