使用flex布局实现uni-app图片列表

使用flex布局实现uni-app图片列表。

效果1如下:
在这里插入图片描述
代码1示例:

<template>
	<view class="content">
		<view class="topic-list">
			<view class="topic-item" v-for="(item,index) in topicList" :key="index">
				<image class="topic-img" :src="item.banner"></image>
				<view class="topic-title">
					<text >{{item.title}}</text>
				</view>
				<view class="topic-tag">
					<text >标签:{{item.topic_tag}}</text>
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				topicList: [],
				// topicList格式如下
				// topicList: [
				// 	{'title':'单身重构:职业、情感、生活重构,快速适应急剧转型社会','banner':'http://xxx.com/test.png','topic_tag':'单身重构'},
				// 	{'title':'单身重构:职业、情感、生活重构,快速适应急剧转型社会','banner':'http://xxx.com/test.png','topic_tag':'单身重构'},
				// 	{'title':'单身重构:职业、情感、生活重构,快速适应急剧转型社会','banner':'http://xxx.com/test.png','topic_tag':'单身重构'},
				// 	{'title':'单身重构:职业、情感、生活重构,快速适应急剧转型社会','banner':'http://xxx.com/topic/test.png','topic_tag':'单身重构'},
				// ]
			}
		},
		onLoad() {
			uni.request({
				url: '请求的api地址',
				method: 'GET',
				data: {},
				success: res => {
					if(res.data.code==200){
						this.topicList=res.data.data;
					}
				},
				fail: () => {},
				complete: () => {}
			});
		
		},

	}
</script>

<style>
	/* 默认样式 */
	.content {
		/* 左右间距 */
		margin: 0 20rpx; 
	}
	
	/* 话题列表样式 */
	.topic-list{
		display:flex;
		/* 自动换行 */
		flex-wrap:wrap;
		/* 均匀排列每个元素,首个元素放置于起点,末尾元素放置于终点 */
		justify-content: space-between;
	}
	.topic-item{
		/* 单个列表宽度 */
		width:335rpx;
	
	}
	.topic-img{
		/* 继承父元素宽度 */
		width:100%;
		/* 图片高度 */
		height:180rpx;
		border-radius:10rpx;
		
	}
	.topic-title{
		font-size:24rpx;
	}
	.topic-tag{
		font-size:22rpx;
		padding: 14rpx 0rpx;
		color:gray;
	}
</style>

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

代码2示例:

<template>
	<view class="content">
		<view class="package-list">
			<view class="package-item" v-for="(item,index) in packageList" 
			:key="index">
				<image class="package-img" :src="item.new_poster"></image>
				<view class="package-title">
					<view>
						<text>{{item.title}}</text>
					</view>
					<view>
						<text class="package-subtitle">{{item.subtitle}}</text>
					</view>
					<view ><text>{{'\n'}}</text></view>
					<view>
						<text class="package-score">{{item.weighted_score}}分</text>
						<text class="package-score">{{item.ranking}}</text>
					</view>
					<view >
						<text class="package-mode-description">{{item.mode_description}}</text>
						<text class="package-subtitle">共{{item.course_num}}篇</text>
					</view>
					<view >
						<text class="package-subtitle">{{item.tag}}</text>
						<text class="package-subtitle">评论{{item.total_comment_num}}</text>
						<text class="package-subtitle">点赞{{item.total_like_num}}</text>
					</view>
				</view>
			</view>
			</view>
	</view>

</template>

<script>
	export default {
		data() {
			return {
				packageList: [],
				//packageList格式示例:
				// packageList: [
				// 	{'new_poster':'http://xxx.com/course_package/2024-01-19/1705635516_9526070749.png','title':'职业闭环:主业、副业、自由职业发展模式','subtitle':'职业规划类','weighted_score':'8.5','ranking':'Top3','mode_description':'VIP专区','course_num':'3','tag':'职业规划类','total_comment_num':'12','total_like_num':'42'},
				// 	{'new_poster':'http://xxx.com/course_package/2024-01-19/1705635516_9526070749.png','title':'职业闭环:主业、副业、自由职业发展模式','subtitle':'职业规划类','weighted_score':'8.5','ranking':'Top3','mode_description':'VIP专区','course_num':'3','tag':'职业规划类','total_comment_num':'12','total_like_num':'42'},
				// ],
			}
		},
		onLoad() {
			//获取课程套装列表
			uni.request({
				url: '请求的api地址',
				method: 'GET',
				data: {},
				success: res => {
					if(res.data.code==200){
						this.packageList=res.data.data;
					}
				},
				fail: () => {},
				complete: () => {}
			});
		}
	}
</script>

<style>
	/* 默认样式 */
	.content {
		/* 左右间距 */
		margin: 0 20rpx; 
	}
	
	/* 课程列表标题 */
	.package-list-header{
		display:flex;
		justify-content: space-between;
		padding: 14rpx 0rpx;
		/* 加粗 */
		font-weight: bold; 
	}
	
	/* 课程列表样式 */
	.package-list{
		display:flex;
		/* 自动换行 */
		flex-wrap:wrap;
		/* 均匀排列每个元素,首个元素放置于起点,末尾元素放置于终点 */
		justify-content: space-between;
	}
	.package-item{
		/* 单个列表宽度 */
		width:100%;
		display:flex;
		padding: 10rpx;
		
	}
	.package-img{
		/* 继承父元素宽度 */
		width:24%;
		/* 图片高度 */
		height:100%;
		border-radius:10rpx;
	}
	.package-title{
		font-size:26rpx;
		padding-left: 20rpx;
	}
	.package-subtitle{
		font-size: 24rpx;
		color: gray;
		padding-right: 35rpx;
	}
	.package-score{
		color:blue;
		font-size: 24rpx;
		padding-right: 35rpx;
	
	}
	.package-mode-description{
		color:seagreen;
		font-size: 24rpx;
		padding-right: 35rpx;
	}

</style>
  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app使用flex布局可以通过以下步骤实现: 1. 在需要使用flex布局的组件的父元素上添加样式:display: flex。 2. 可以使用flex属性来控制子元素的布局方式。常用的flex属性包括: - flex-direction:控制子元素的排列方向,可选值有row(水平排列,默认值)、column(垂直排列)、row-reverse(水平反向排列)、column-reverse(垂直反向排列)。 - justify-content:控制子元素在主轴上的对齐方式,可选值有flex-start(起点对齐,默认值)、center(居中对齐)、flex-end(终点对齐)、space-between(两端对齐,子元素之间间隔平均分配)、space-around(子元素之间间隔平均分配,两端留有空隙)。 - align-items:控制子元素在交叉轴上的对齐方式,可选值有flex-start(起点对齐)、center(居中对齐,默认值)、flex-end(终点对齐)、stretch(拉伸对齐,子元素高度自动匹配父元素高度)、baseline(基线对齐)。 例如,以下样式将子元素在水平方向上居中对齐,垂直方向上起点对齐: ``` .container { display: flex; justify-content: center; align-items: flex-start; } ``` 3. 还可以使用flex-grow属性来控制子元素的伸缩比例,可选值为数字。默认值为0,表示子元素不伸缩。例如,以下样式将两个子元素的宽度分别设置为1和2,即宽度比例为1:2: ``` .container { display: flex; } .item1 { flex-grow: 1; } .item2 { flex-grow: 2; } ``` 通过以上步骤,就可以在uni-app使用flex布局了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值