其他分享
首页 > 其他分享> > tab栏切换-模拟手机随着tab切换视口

tab栏切换-模拟手机随着tab切换视口

作者:互联网

案例分析:

我们可以模拟手机的tab切换,学习如何使用js制作网页的tab切换,即点击下面按钮,上面视口显示相应内容,,按钮的图片也随之改变.
image
image

那么我们具体怎么实现的呢?

首先,我们先整体将HTML结构写出来

1, 整个页面用class="contain"的div标识,contain分为上下结构,上面为view部分,下面是tabbar部分
2, 上面的view有四个表示页面class="viewcontent"的div
3, 下面的tabbar有四个表示按钮class="btn"的div
4, 下面表示按钮的div中又分别有一张图片和内容文字,与上面视口viewcontent相对应

<div class="content">
		<div class="view">
			<div class="viewconent">home</div>
			<div class="viewconent">car</div>
			<div class="viewconent">my</div>
			<div class="viewconent">set</div>
		</div>
		<div class="tabbar">
			<div class="btn">
				<span>home</span>
				<img src="./img/home2.webp" alt="">
			</div>
			<div class="btn">
				<span>car</span>
				<img src="./img/car1.webp" alt="">
			</div>
			<div class="btn">
				<span>my</span>
				<img src="./img/my1.webp" alt="">
			</div>
			<div class="btn">
				<span>set</span>
				<img src="./img/set1.webp" alt="">
			</div>
		</div>
	</div>

然后设置模拟手机设置CSS基本属性

<style>
		.content {
			width: 100px;	/*设置长*/
			height: 150px;	/*设置宽*/
			margin: 10px	/*设置外边距*/
			
		}
		.view {
			width: 100px;
			height: 100px;
		}
		.tabbar {
			width: 100px;
			height: 50px;
			display: flex;		/*将下面按钮条设置为弹性盒子,方便添加同一样式*/
			justify-content: flex-start;	/*主轴排列方式*/
			flex-wrap: nowrap;	/*不换行*/
		}
		.btn {
			width: 25%;	/*宽度为父盒子的25%,弹性盒子中相当于平均分*/
			background-color: gainsboro;
			cursor: pointer;	/*鼠标手势*/
		}
		.btn:first-child {
			background-color: skyblue;	/*为第一个按钮设置默认背景色*/
		}
		.viewconent {
			width: 100px;
			height: 100px;
			display: none;	/*默认所有视口全部隐藏*/
			text-align: center;/*文字水平居中*/
			padding-top: 20px;
			background-color: lightseagreen;
		}
		.viewconent:first-child {
			display: block;	/*设置第一个视口为默认视口*/
		}
		img {		/*设置按钮图片*/
			width: 20px;
			height: 20px;
			display: block;
		}
	</style>

然后添加JavaScript脚本

那么JavaScript将怎么设计呢?
1, 获取所有按钮,获取所有视口,他们应该是对应的.添加两个数组,第一个数组保存按钮默认图片地址,第二个数组保存点击按钮图片地址
2, 循环为所有按钮添加点击事件
3, 事件为点击之后,将所有的viewcontent的display设置为none
4, 点击按钮对应位置的视口的display转换为block
5, 所有的按钮图片设置为默认的图片地址
6, 点击按钮的图片地址对应改变

<script>
	var tabbarbtns = document.querySelectorAll(".tabbar .btn")
	var imgfirstarr=["./img/home1.webp","./img/car1.webp","./img/my1.webp","./img/set1.webp"]
	var imgsecondarr=["./img/home2.webp","./img/car2.webp","./img/my2.webp","./img/set2.webp"]
	tabbarbtns.forEach((el, index) => {
		// console.log(el)
		el.onclick = function() {
			tabbarbtns.forEach((el2) => {
				el2.style.backgroundColor = "gainsboro"
			})
			el.style.backgroundColor = "skyblue"
			//1.获取点击了第x个按钮index/el.indexof1()
			//2.把内容区域的所有的隐藏 把内容区域的第x个显示
			var viewconents = document.querySelectorAll(".viewconent")
			viewconents.forEach((el3) => {
				el3.style.display = "none"
			})
			viewconents[index].style.display = "block"
			// 清除所有图片添加的格式
			tabbarbtns.forEach((el,index)=>{
				el.children[1].src=imgfirstarr[index]
			})
			//通过点击改变按钮的图片src
			el.children[1].src=imgsecondarr[index];
		}
	})
</script>

标签:el,img,webp,视口,切换,tab,按钮,display
来源: https://www.cnblogs.com/xuawei/p/16479126.html