[保姆级教程]uniapp自定义标签页切换组件

在这里插入图片描述


导文

unaipp自带的标签页和ui设计相差太大,直接修改组件比手写一个还麻烦,下面手写一个。

样式

在这里插入图片描述
先用scroll-view做一个滑动,不然多的话滑动不了。

	<scroll-view class="scroll-view_H" scroll-x="true" @scroll="scroll" scroll-left="120">
				<span class="checkDetails-nav-item action">
					体重
				</span>
				<span class="checkDetails-nav-item">
					餐食
				</span>
				<span class="checkDetails-nav-item">
					喝水
				</span>
				<span class="checkDetails-nav-item">
					睡眠
				</span>
				<span class="checkDetails-nav-item">
					运动
				</span>
			</scroll-view>

然后实现默认样式,和标签页点击样式。

.scroll-view_H {
			white-space: nowrap;
			width: 100%;
			background: #fff;
		}

		.scroll-view-item {
			height: 300rpx;
			line-height: 300rpx;
			text-align: center;
			font-size: 36rpx;
		}

		.scroll-view-item_H {
			display: inline-block;
			width: 100%;
			height: 300rpx;
			line-height: 300rpx;
			text-align: center;
			font-size: 36rpx;
		}

		.checkDetails-nav-item {
			font-size: 16px;
			font-weight: 500;
			letter-spacing: 0px;
			line-height: 30px;
			color: rgba(75, 89, 105, 1);
			text-align: left;
			vertical-align: top;
			background: #fff;
			padding: 0px 30px;

		}

		.action {
			font-size: 18px;
			font-weight: 700;
			letter-spacing: 0px;
			line-height: 25.2px;
			color: rgba(12, 16, 25, 1);
			position: relative;
		}

		.action::after {
			content: '';
			position: absolute;
			background-image: url(../../static/checkDetails/action.png);
			background-size: 100%;
			background-repeat: no-repeat;
			width: 28px;
			height: 10px;
			top: 18px;
			left: 34px;
		}

改成动态列表

在这里插入图片描述
循环自定义的teb组件就好

		<scroll-view class="scroll-view_H" scroll-x="true" @scroll="scroll" scroll-left="120">
				<span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item" :class="{ 'action': navCurrent == item.value }">
					{{ item.text }}
				</span>
			</scroll-view>

在data中定义列表,和当前展示的页面值

	data() {
		return {
			navCurrent: 'weight',
			navList: [{
				text: '体重',
				value: 'weight'
			}, {
				text: '餐食',
				value: 'food'
			}, {
				text: '喝水',
				value: 'drink'
			}, {
				text: '睡眠',
				value: 'sleep'
			}, {
				text: '运动',
				value: 'sport'
			}],
		}
	},

加上切换页面效果。

切换点击效果

在这里插入图片描述
加上一个handleSwitch点击事件

<span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item"
					:class="{ 'action': navCurrent == item.value }" ="handleSwitch(item)">
					{{ item.text }}
				</span>

切换navCurrent 值就好

handleSwitch(item){
			this.navCurrent = item.value
		}

加上点击自动滑动scroll-view

先把scroll-left改成动态的,在handleSwitch方法中添加index索引值传过去

<scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollValue">
				<span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item"
					:class="{ 'action': navCurrent == item.value }" @click="handleSwitch(item, index)">
					{{ item.text }}
				</span>
			</scroll-view>

使用index索引值,判断滑动位置

handleSwitch(item,index) {
			this.navCurrent = item.value
			this.scrollValue = index * 100
		}

加上切换组件效果

在这里插入图片描述
在这里插入图片描述
先创建好组件,一般放在components里面
在这里插入图片描述
在父页面中引入组件,在template里面写组件

	<view class="checkDetails">
		<view class="checkDetails-nav">
			<scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollValue">
				<span v-for="(item, index) in navList" :key="index" class="checkDetails-nav-item"
					:class="{ 'action': navCurrent == item.value }" @click="handleSwitch(item, index)">
					{{ item.text }}
				</span>
			</scroll-view>
		</view>
		<drinkPage v-if="navCurrent == 'drink'"></drinkPage>
		<foodPage v-if="navCurrent == 'food'"></foodPage>
		<sleepPage v-if="navCurrent == 'sleep'"></sleepPage>
		<sportPage v-if="navCurrent == 'sport'"></sportPage>
		<weightPage v-if="navCurrent == 'weight'"></weightPage>

	</view>
</template>

<script>

别忘了用import 引入和components注册组件名哦

import drinkPage from './components/drinkPage/index.vue'
import foodPage from './components/foodPage/index.vue'
import sleepPage from './components/sleepPage/index.vue'
import sportPage from './components/sportPage/index.vue'
import weightPage from './components/weightPage/index.vue'

export default {
	components: {
		drinkPage,
		foodPage,
		sleepPage,
		sportPage,
		weightPage
	},

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个简单的JavaWeb登陆注册面的教程,希望能对你有所帮助。 1、创建一个JavaWeb项目 在Eclipse中,选择File -> New -> Dynamic Web Project,输入项目名称,选择Target runtime为Apache Tomcat,点击Finish创建一个JavaWeb项目。 2、创建一个登陆面 在WebContent目录下新建一个login.html文件,输入以下代码: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登陆面</title> </head> <body> <h1>登陆</h1> <form action="login" method="post"> <label>用户名:</label><input type="text" name="username"><br> <label>密码:</label><input type="password" name="password"><br> <input type="submit" value="登陆"> </form> </body> </html> ``` 3、创建一个Servlet处理登陆操作 在src目录下新建一个包,例如com.example.servlet。在该包下新建一个LoginServlet类,继承HttpServlet类,实现doPost方法。doPost方法会接收来自登陆面的POST请求,并处理用户登陆操作: ``` package com.example.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; public LoginServlet() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); // 这里可以添加验证用户名和密码的代码 // 如果用户名和密码正确,跳转到欢迎面 response.sendRedirect("welcome.jsp"); } } ``` 4、创建一个欢迎面 在WebContent目录下新建一个welcome.jsp文件,输入以下代码: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>欢迎面</title> </head> <body> <h1>欢迎</h1> <p>登陆成功!</p> </body> </html> ``` 5、创建一个注册面 在WebContent目录下新建一个register.html文件,输入以下代码: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>注册面</title> </head> <body> <h1>注册</h1> <form action="register" method="post"> <label>用户名:</label><input type="text" name="username"><br> <label>密码:</label><input type="password" name="password"><br> <input type="submit" value="注册"> </form> </body> </html> ``` 6、创建一个Servlet处理注册操作 在src目录下新建一个RegisterServlet类,继承HttpServlet类,实现doPost方法。doPost方法会接收来自注册面的POST请求,并处理用户注册操作: ``` package com.example.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/register") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; public RegisterServlet() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); // 这里可以添加保存用户信息的代码 // 注册成功,跳转到登陆面 response.sendRedirect("login.html"); } } ``` 7、测试 在Eclipse中启动Tomcat服务器,访问http://localhost:8080/项目名/login.html可以看到登陆面,访问http://localhost:8080/项目名/register.html可以看到注册面。输入用户名和密码,点击登陆按钮,如果用户名和密码正确,会跳转到欢迎面。 以上就是一个简单的JavaWeb登陆注册面的教程,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

奶糖 肥晨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值