uni-app u-swiper 自定义 选中样式

uni-app u-swiper 自定义 选中样式

第一步:修改uview组件中的源码 /uni_modules/uview-ui/components/u-swiper/u-swiper.vue

current : 是当前轮播图的索引,只需要将当前索引和数组的索引做一下区分

			<swiper-item
				class="u-swiper__wrapper__item"
				v-for="(item, index) in list"
				:key="index"
			>
			<-- 通过current 将当前索引和数组索引区别开,添加isactive选中样式 -->
				<view
					:class="current == index ? 'u-swiper__wrapper__item__wrapper_isactive':'u-swiper__wrapper__item__wrapper'"
					:style="[itemStyle(index)]"
				>
					<!-- 在nvue中,image图片的宽度默认为屏幕宽度,需要通过flex:1撑开,另外必须设置高度才能显示图片 -->
					<image
						class="u-swiper__wrapper__item__wrapper__image"
						v-if="getItemType(item) === 'image'"
						:src="getSource(item)"
						:mode="imgMode"
						@tap="clickHandler(index)"
						:style="{
							height: $u.addUnit(height),
							borderRadius: $u.addUnit(radius)
						}"
					></image>
					<video
						class="u-swiper__wrapper__item__wrapper__video"
						v-if="getItemType(item) === 'video'"
						:id="`video-${index}`"
						:enable-progress-gesture="false"
						:src="getSource(item)"
						:poster="getPoster(item)"
						:title="showTitle && $u.test.object(item) && item.title ? item.title : ''"
						:style="{
							height: $u.addUnit(height)
						}"
						controls
						@tap="clickHandler(index)"
					></video>
					<text
						v-if="showTitle && $u.test.object(item) && item.title && $u.test.image(getSource(item))"
						class="u-swiper__wrapper__item__wrapper__title u-line-1"
					>{{ item.title }}</text>
					
				</view>
			</swiper-item>

复制一份原始的css样式就好
在这里插入图片描述

第二步: 自定义组件使用

组件photoDetail.vue需要用到 复制粘贴即可

template 部分
			<-- template 部分 -->
			<view class="detailList">
				<u-swiper :current="currenttop" :autoplay="false" previousMargin="120" next-margin="147" height="120"
				:list="params.detailFileUrlList" @change="changeCurrent"></u-swiper>
			</view>

js部分
		//js部分
		changeCurrent(row) {
				this.currenttop = row.current
		},
css部分
	//css部分
	.detailList {
		.u-swiper__wrapper__item__wrapper {
			border: none;
		}

		.u-swiper__wrapper__item__wrapper_isactive {
			border: 2px solid #D9D9D9 !important;
		}
	}

完成: 最终效果

在这里插入图片描述

u-swiper 是一个 Vue.js 组件,用于创建漂亮的滑块轮播图。您可以使用它来展示图片、文字、视频等内容。 要自定义 u-swiper 的内容,您需要先了解它的结构。u-swiper 由一个或多个 u-swiper-slide 组件组成,每个 u-swiper-slide 表示一个轮播项。默认情况下,u-swiper-slide 只能包含一个图片或视频。但是,您可以在 u-swiper-slide 中添加任意 HTML 内容,以实现自定义样式和布局。 下面是一个简单的示例,展示如何在 u-swiper-slide 中添加自定义内容: ```html <template> <div class="u-swiper"> <u-swiper-slide> <div class="my-custom-content"> <h2>这是一个自定义标题</h2> <p>这是自定义的文本内容,可以包含任意 HTML 标签。</p> <button>自定义按钮</button> </div> </u-swiper-slide> <u-swiper-slide> <img src="https://placehold.it/800x400" alt="Slide 2"> </u-swiper-slide> <u-swiper-slide> <img src="https://placehold.it/800x400" alt="Slide 3"> </u-swiper-slide> </div> </template> <script> import { USwiper, USwiperSlide } from 'u-swiper'; export default { components: { USwiper, USwiperSlide } }; </script> <style scoped> .my-custom-content { background-color: #f1f1f1; padding: 20px; text-align: center; } </style> ``` 在上面的示例中,我们在第一个 u-swiper-slide 中添加了一个自定义的 div 元素,它包含一个标题、一段文本和一个按钮。我们还为这个 div 元素添加了一些自定义样式,以使它看起来与其他轮播项不同。 当您运行以上代码时,您会看到第一个轮播项中的自定义内容已经生效了。您可以通过添加更多自定义 HTML 内容来创建更丰富的轮播项。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值