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

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

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实现的,虽然但是我还是去研究了一下午关于关于流体盒模型的问题,过几天整理一篇相关文章,感谢掘友们的支持。


相关文章
|
1月前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
58 1
微信小程序:轻松实现时间轴组件
|
30天前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
395 1
|
1月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
59 0
微信小程序:自定义关注公众号组件样式
|
1月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
53 1
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
177 1
|
1月前
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
53 1
|
30天前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
308 0
|
2月前
|
小程序 容器
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
本文介绍了微信小程序中常用组件的使用方法,包括view、scroll-view、swiper与swiper-item、text与rich-text、button以及image组件。详细解释了各组件的功能、属性以及如何在小程序页面中进行使用。
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
|
1月前
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
48 0
|
3月前
|
JSON 小程序 前端开发
终于搞懂了!微信小程序的渲染机制及组件使用
【8月更文挑战第8天】微信小程序的渲染机制及组件使用
144 3
终于搞懂了!微信小程序的渲染机制及组件使用

热门文章

最新文章