swiper居中且左右不留白

swiper在不循环的情况下居中,同时左右不留白

主要适用于有多个swiper需要切换,如发展历程中每个年份对应不同swiper,点击年份需要切换对应swiper

swiper居中左右不留白

在这里插入图片描述

<div class="brand01-top" data-aos="fade-up">
	<div class="swiper-container brand01-topswiper">
		<div class="swiper-wrapper">
			<div class="swiper-slide">
				<h3>2020</h3>
				<strong></strong>
			</div>
			<div class="swiper-slide">
				<h3>2022</h3>
				<strong></strong>
			</div>
			<div class="swiper-slide">
				<h3>2020</h3>
				<strong></strong>
			</div>
			<div class="swiper-slide">
				<h3>2020</h3>
				<strong></strong>
			</div>
			<div class="swiper-slide">
				<h3>2020</h3>
				<strong></strong>
			</div>
			<div class="swiper-slide">
				<h3>2020</h3>
				<strong></strong>
			</div>
		</div>
	</div>
	
</div>
<ul class="brand01-bot"  data-aos="fade-up">
	<li>
		<div class="swiper-container brand0101-botswiper">
			<div class="swiper-wrapper">
				<a href="javascript:;" class="swiper-slide">
					<div class="imgbox"><img src="images/brtand01.jpg"/></div>
				</a>
				<a href="javascript:;" class="swiper-slide">
					<div class="imgbox"><img src="images/brtand01.jpg"/></div>
				</a>
			</div>
		</div>
		<script>
			var brand0101botSwiper = new Swiper('.brand0101-botswiper', {
				observer: true,
				observeParents: true,
				loop:true,
				speed: 1000,
				slidesPerView:2,
				spaceBetween:50,
				autoplay: {
					delay:3000,
					stopOnLastSlide: false,
					disableOnInteraction: false,
				},
			});
		</script>
	</li>
	<li>
		<div class="swiper-container brand0102-botswiper">
			<div class="swiper-wrapper">
				<a href="javascript:;" class="swiper-slide">
					<div class="imgbox"><img src="images/brtand01.jpg"/></div>
				</a>
				<a href="javascript:;" class="swiper-slide">
					<div class="imgbox"><img src="images/brtand01.jpg"/></div>
				</a>
			</div>
		</div>
		<script>
			var brand0102botSwiper = new Swiper('.brand0102-botswiper', {
				observer: true,
				observeParents: true,
				loop:true,
				speed: 1000,
				slidesPerView:2,
				spaceBetween:50,
				autoplay: {
					delay:3000,
					stopOnLastSlide: false,
					disableOnInteraction: false,
				},
			});
		</script>
	</li>
</ul>
<script>
	var brand01topSwiper = new Swiper('.brand01-topswiper', {
		observer: true,
		observeParents: true,
		speed: 1000,
		spaceBetween:100,
		slideToClickedSlide: true,
		slidesPerView : 5,
		centeredSlides : true,
		 on: {
			init() {
				// 初始化设置为第一个
				this.setTranslate(0)
			},
			transitionStart() {
				// 如果是第一张或者第二张就不居中
				if (this.activeIndex == 0 || this.activeIndex == 1) {
					this.setTranslate(0)
				}
				// 最后一张或者两张不动
				if (this.activeIndex == this.slides.length - 2 || this.activeIndex == this.slides.length - 1) {
					let slideW = (this.width / 5).toFixed(5) //每个轮播的宽度
					let keepW = slideW * (this.slides.length - 5) //需要设置的setTranslate的宽度
					this.setTranslate(-keepW)
				}
			}
		},
	});
	$(".brand01-top .swiper-slide").click(function(){
		var index = $(this).index();
		$(".brand01-bot li").eq(index).fadeIn().siblings().hide();
	})
</script>
### 如何配置 Swiper 组件实现居中对齐效果 为了实现 Swiper居中显示效果,可以参考 OpenHarmony 和其他框架中的最佳实践。以下是具体方法: #### 1. 使用 `justify-content` 或者类似的 CSS 属性 如果子组件的卡片大小一致,则可以通过简单的样式调整来实现居中对齐。例如,在 OpenHarmony 中,可以使用 Flexbox 布局[^1]。 ```css .swiper-container { display: flex; justify-content: center; /* 将内容水平居中 */ } ``` 这种情况下,所有的子组件会自动居中排列,并左右两侧会有相等的空间暴露出来[^2]。 #### 2. 动态计算偏移量 当子组件的卡片大小一致时,仅靠布局属性可能无法满足需求。此时需要动态计算每张卡片相对于父容器的位置偏移量。这通常涉及以下几个方面: - 获取当前活动卡片的实际宽度。 - 调整其位置使其位于屏幕中心。 在 JavaScript 或 TypeScript 中,可以通过事件监听器捕获滑动动作并实时更新 DOM 元素的样式[^3]。 #### 3. 设置 swiper 容器的高度为自适应 为了让整个 swiper 结构能够灵活响应同尺寸的内容项,建议将其高度设为自动调整模式。下面是一个基于微信小程序样式的例子: ```css .swp { width: 750rpx; height: auto; } .swp .item { display: flex; } .item image { margin: auto; /* 自动填充剩余空间以达到垂直方向上的居中 */ width: 100%; height: 100%; } ``` 以上代码片段展示了如何让图片或其他媒体文件在其父节点内部保持正中央定位的同时还能随窗口缩放而变化比例。 #### 4. 参考实际案例学习更多技巧 除了上述技术要点外,《OpenHarmony实战开发》系列文章还提供了关于此主题更深入探讨的机会[^4]。这些资源可以帮助开发者进一步理解复杂场景下应该如何优化用户体验以及提升性能表现等方面的知识点。 ```python def calculate_offset(card_width, container_width): """ 计算单个卡牌应该移动的距离 """ offset = (container_width - card_width) / 2 return max(offset, 0) # Example usage of the function within a loop that processes each slide. for index in range(len(slides)): current_card = slides[index] new_position = calculate_offset(current_card.width, screen_dimensions['width']) apply_transform(new_position) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值