uniapp swiper 卡片轮播 修改指示点样式效果demo(整理)

效果图:

<template>
	<swiper class="swiper-box" :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
		:duration="duration" circular="true" previous-margin="20px" next-margin="20px">
		<swiper-item v-for="(item, index) in info" :key="index">
			<view :class="item.colorClass" class="swiper-item">
				<image class="image" :src="item.url" mode="aspectFill" />
			</view>
		</swiper-item>
	</swiper>
</template>

<script>
	export default {
		data() {
			return {
				indicatorDots: true, //是否显示面板指示点
				autoplay: true, //是否自动切换
				interval: 2000, //切换的间隔时间
				duration: 500, //滑动动画时长
				info: [{
						colorClass: 'uni-bg-red',
						url: 'https://img.zcool.cn/community/01hzxc63yqx11b9znjoimm3734.jpg?x-oss-process=image/auto-orient,1/resize,m_lfit,w_1280,limit_1/sharpen,100/format,webp/quality,Q_100',
						content: '内容 A'
					},
					{
						colorClass: 'uni-bg-green',
						url: 'https://img.zcool.cn/community/01jsy5em8t7jzkbs17kncj3837.jpg?x-oss-process=image/auto-orient,1/resize,m_lfit,w_1280,limit_1/sharpen,100/format,webp/quality,Q_100',
						content: '内容 B'
					},
					{
						colorClass: 'uni-bg-blue',
						url: 'https://img.zcool.cn/community/01dz1ugf5tuetaf47pyvxj3633.jpg?x-oss-process=image/auto-orient,1/resize,m_lfit,w_1280,limit_1/sharpen,100/format,webp/quality,Q_100',
						content: '内容 C'
					},
					{
						colorClass: 'uni-bg-green',
						url: 'https://img.zcool.cn/community/01vfjnenucrnxlyi2luwzu3437.jpg?x-oss-process=image/auto-orient,1/resize,m_lfit,w_1280,limit_1/sharpen,100/format,webp/quality,Q_100',
						content: '内容 D'
					}
				],

			}
		},
	}
</script>

<style lang="scss">
	
	.swiper-box {
		/* width: 95%; */
		height: 300rpx;
	}

	.swiper-item {
		/* #ifndef APP-NVUE */
		display: flex;
		/* #endif */
		flex-direction: column;
		justify-content: center;
		align-items: center;
		background-color: #999;
		color: #fff;
		margin: 10px;
		border-radius: 15upx;
		/* app上运行不显示图片,就需要加下面这行,设置高度 */
		height: 280upx;
	}

	.image {
		/* width: 750rpx; */
		width: 100%;
		height: 300rpx;
		border-radius: 15upx;
	}

	/* 默认指示点的样式 */
	.swiper-box .wx-swiper-dot {
		width: 15rpx;
		height: 15rpx;
		background: indianred;
		border-radius: 15rpx;
	}

	/* 选中指示点的样式 */
	.swiper-box .wx-swiper-dot.wx-swiper-dot-active {
		width: 30rpx;
		height: 15rpx;
		background: indianred;
		border-radius: 15rpx;
	}
</style>

### 创建卡片样式自定义轮播图组件 #### HTML 结构与条件编译 为了兼容不同平台,在编写HTML结构时可以采用条件编译语句来区分不同的环境。对于非NVue以及头条小程序之外的情况,使用`<view>`标签包裹整个区块,并设置类名用于后续CSS样式的应用。 ```html <!-- #ifndef APP-NVUE || MP-TOUTIAO --> <view class="u-demo-block"> <!-- 轮播图组件放置处 --> </view> <!-- #endif --> ``` #### 使用 uView 的 `u-swiper` 组件构建基础功能[^1] 通过引入第三方库如[uView](https://www.uiview.cn/)中的`u-swiper`组件能够快速搭建起具有基本滑动切换图片能力的小部件。此组件支持多种属性配置来自定义外观表现形式: - 设置前后页边距(`previousMargin`, `nextMargin`) - 启用循环模式(`circular`) - 定义圆角半径(`radius`)等参数调整视觉效果 ```html <u-swiper :list="imageUrls" previousMargin="30" nextMargin="30" circular radius="5" ></u-swiper> ``` #### 自定义 SwiperCard 组件封装逻辑[^2] 当项目需求较为复杂或者希望进一步抽象公共部分时,则可以通过创建独立的 Vue SFC (Single File Component) 来实现更灵活的功能扩展。下面是一个简单的例子展示了如何声明并注册一个新的名为`swiperCard`的子组件: ```vue <template> <view> <swiperCard /> </view> </template> <script> import swiperCard from '@/components/swiperCard/swiperCard' export default { name: 'ParentComponent', components: { swiperCard }, } </script> ``` #### 数据准备与传递给子组件[^3] 为了让轮播图显示特定的内容列表,通常会在父级作用域内准备好相应的资源路径数组并通过props的方式传入到目标组件内部供其渲染展示之用。这里给出了一组静态图像URL作为示例说明: ```javascript data() { return { imageUrls: [ {url: '../../static/image1.jpg'}, {url: '../../static/image2.jpg'}, {url: '../../static/image3.jpg'} ] } }, // 将上述数据项绑定至模板内的对应位置... ``` #### 进一步美化指示样式[^4] 最后还可以考虑针对默认提供的分页导航做额外的设计优化工作,比如改变颜色、形状或是添加动画过渡特效等等,从而让整体界面更加美观大方。具体做法可参照官方文档或者其他开源项目的最佳实践案例来进行尝试探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嫣嫣细语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值