IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 文字横向自适应宽度并横向排列 -> 正文阅读

[JavaScript知识库]文字横向自适应宽度并横向排列

如下图左侧图,候选项是后端的数据字典中动态管理的数据,并不能事先知道文本字数,即选项的所占宽度,也就无法直接设定宽度来让文本拥有个比较好的样式,那么想要达到右侧效果图那样的效果该怎么做?

请添加图片描述

可能很多人会考虑从宽度去解决问题,设置固定宽度 width、最小宽度 min-width…但遇到了字数较多等情况,用户体验并不不怎么好,我愣了一会儿,突然意识到,这是宽度不够,导致文本自动换行了,那我用 css 属性设置文本不换行呢?

  • 顺带设置个最大宽度,让太长的文本显示省略号,不至于页面样式混乱
  /* 设定最大宽度,超出显示省略号... */
  max-width: 350rpx;
  overflow: hidden;
  text-overflow: ellipsis;
  /* 设定最大宽度,超出显示省略号... */
  
  white-space: nowrap; /* 关键样式代码 */

结果还真行,easy 而且个人感觉兼容性还挺好,就很 nice,记录一下

按钮和选项的结构代码

<view class="addBtn" bindtap="addApply">
  <view class="options">
    <view class="option-row" bindtap="addNewApply" data-value="1">预约来访</view>
    <view class="option-row" bindtap="addNewApply" data-value="2">营业执照代办</view>
    <view class="option-row" bindtap="addNewApply" data-value="3">厂房租赁价格代办</view>
  </view>
</view>

按钮和选项的样式代码

.addBtn {
  width: 120rpx;
  height: 120rpx;
  border-radius: 50%;
  background-color: #00A0E9;
  box-shadow: 0 2px 12px 0 rgb(0 0 0 / 40%);
  color: white;
  font-size: 120rpx;
  position: fixed;
  right: 20rpx;
  bottom: 20rpx;
}
.addBtn::before {
  content: "";
  display: block;
  width: 65rpx;
  height: 10rpx;
  border-radius: 10rpx;
  background-color: white;
  position: absolute;
  left: calc(50% - 32.5rpx);
  top: calc(50% - 5rpx);
}
.addBtn::after {
  content: "";
  display: block;
  width: 10rpx;
  height: 65rpx;
  border-radius: 10rpx;
  background-color: white;
  position: absolute;
  left: calc(50% - 5rpx);
  top: calc(50% - 32.5rpx);
}


.options {
  font-size: 28rpx;
  position: absolute;
  right: -20rpx;
  bottom: 100rpx;
  opacity: 0;
  pointer-events: none;
  transition: right 0.3s;
}
.options.show {
  opacity: 1;
  right: 110rpx;
  pointer-events: initial;
}
.option-row {
  color: white;
  background-color: #00A0E9;
  box-shadow: 0 2px 8px 0 rgb(0 0 0 / 40%);
  /* 设定最大宽度,超出显示省略号... */
  max-width: 350rpx;
  overflow: hidden;
  text-overflow: ellipsis;
  /* 设定最大宽度,超出显示省略号... */
  white-space: nowrap; /* 关键代码 */
  padding: 4rpx 14rpx;
  border-radius: 4rpx;
  margin-top: 12rpx;
  text-align: center;
}

点击加号展示收起选项的逻辑代码

Page({

  /**
   * 页面的初始数据
   */
  data: {

    showAddOption: false,
  },

  addApply() {
    this.setData({
      showAddOption: !this.data.showAddOption,
    })
  },
  addNewApply(event) {
    let servicetype = event.currentTarget.dataset.value
    wx.navigateTo({
      url: `./form/form?id=&servicetype=${servicetype}`,
    })
  },

})

ps: 这是农历2021年的最后一篇博客,也是2022年1月的最后一篇博客,祝大家除夕快乐,新年快乐,新的一年节节高升,一切都好~

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-01 20:30:57  更:2022-02-01 20:31:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:05:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码