记录一次小程序卡片组件封装的实战

简介: 来分析一下我这次所做项目的需求,首先重要的是卡片内部的布局需要卡片组件需要应用在两个场景下,每个场景的部分文本内容有区别,所以需要进行文本控制,而又要考虑到文本长度的问题,所以需要对文本内容进行一些处理,整理一下得出以下三个点

1.webp.jpg

来分析一下我这次所做项目的需求,首先重要的是卡片内部的布局需要卡片组件需要应用在两个场景下,每个场景的部分文本内容有区别,所以需要进行文本控制,而又要考虑到文本长度的问题,所以需要对文本内容进行一些处理,整理一下得出以下三个点

  • 卡片布局
  • 内容控制
  • 文本处理

卡片布局

1.webp.jpg

卡片布局采用flex布局将内容划分为两个部分,图片与文本,文本又划分为三部分,对应着各自的信息与内容,完整的dom结构如下所示。

<view class="info-list" >
    <view class="info-list-img">
        <t-image src="" />
    </view>
    <view class="info-list-text">
        <view class="info-list-title">标题</view>
        <view class="info-list-tag active">
            <view class="tag">标签</view>
        </view>
        <view class="info-list-intro">介绍</view>
    </view>
</view>
复制代码

通过paddingmargin来控制内容的间距,通过flex控制盒子的左右,上下调整,完成卡片的整体布局。

内容控制

由于有两个场景同样的文本区域但是不同的文本内容,而且文本内容是死的,所以一般需要使用属性来控制不同场景下的显示

properties: {
        tag: {
            type:Boolean,
            value:false
        }
    },
复制代码

在组件js文件属性中定义布尔值类型属性,在组件内通过wx:if来控制显示

<view class="info-list-text">
        <view class="info-list-title">标题</view>
        <view class="info-list-tag active" wx:if="{{tag}}">
            <view class="tag">标签_1</view>
        </view>
    <view class="info-list-tag active" wx:else="{{tag}}">
            <view class="tag">标签_2</view>
        </view>
        <view class="info-list-intro">介绍</view>
</view>
复制代码

如上结构,由于含有两个类别的内容(而且数量也不一样),所以就可以使用定义好的属性来进行控制。

文本处理

文本处理分为两种情况,一种是多行文本,另一种是单行文本

单行文本

image.png

上面的代码块展现在标签内如何控制单行文本,因为一行是有限制的,如果标签内文本过长就需要对文本进行处理,搭配了white-spacetext-overflowoverflow使用

  • white-space:控制文本溢出不换行的属性
  • text-overflow:以ellipsis为值的时候,其文本溢出使用省略号显示
  • overflow:控制文本溢出

三个属性搭配完成单行文本的溢出处理,其实这个场景下的文本处理就是需要考虑溢出溢出后的填充是否换行这三个问题,其中有一个重要的点就是需要去限制盒子的宽度,因为盒子不设置宽度会随着文本长度而增加的,下面来看看多行文本的处理。

多行文本

image.png

如上代码块,文本被控制在了三行,其他内容省略,其主要应用-webkit-box属性值即流体盒来实现限制多行文本

  • dispaly:-webkit-box;:设定流体盒模型
  • -webkit-line-clamp:限制文本的行数
  • -webkit-box-orient:规定内容以垂直形式排列

多行文本的处理在于设置流体盒对行数与排列进行限制,当然需要注意的是设定高度与字号,如果高度与字号还有设定的行数不匹配的话,仍会失效,会有文本溢出,但是省略不消失,这也是通过设定高度与设定overflow的原因。

特此声明:关于多行文本处理是我在网上查找的资料才cv实现的,虽然但是我还是去研究了一下午关于关于流体盒模型的问题,过几天整理一篇相关文章,感谢掘友们的支持。


相关文章
|
4月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
4月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
8月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
842 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
11月前
|
人工智能 自然语言处理 小程序
让小程序拥有“视觉之眼“:DeepSeek图像识别实战指南
本文介绍如何通过DeepSeek计算机视觉技术,赋予小程序“看懂世界”的能力。从构建视觉感知系统、训练专属视觉词典到创造会思考的界面,详细讲解了实现智能相册、植物识别器和老旧照片修复等功能的步骤。最后探讨性能优化与安全合规要点,展望未来视觉智能应用的无限可能。
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
641 1
微信小程序:轻松实现时间轴组件
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
292 0
在线课堂+工具组件小程序uniapp移动端源码
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
2347 1
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
765 0
微信小程序:自定义关注公众号组件样式
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
1402 1
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
946 1