前端Vue项目:旅游App-city:搜索框search和标签页Tabs

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端Vue项目:旅游App-city:搜索框search和标签页Tabs相关的知识,希望对你有一定的参考价值。

文章目录

目标

过程与代码

搜索框

初步

在Vant文档中找到搜索框:Search搜索


按照文档要求引入(如果以插件的形式安装vant就不用这样引入,详情见文档)

我们需要的是有搜索和取消功能的搜索框:

看懂代码后改写:

<template>
    <div class="city top-page">
        <!-- show-action:显示 “取消”  -->
        <van-search v-model="value" show-action placeholder="请输入搜索关键词" @search="onSearch" @cancel="onCancel" />
    </div>
</template>

<script setup>
import  ref  from 'vue';
import  showToast  from 'vant';

const value = ref('');
const onSearch = (val) => showToast(val);
const onCancel = () => showToast('取消');


</script>

<style lang="less" scoped>

</style>

效果:

自己实现取消功能

vant帮我们封装好了取消的功能。我们也可以通过route自己实现。

const onCancel = () => 
    // showToast('取消');
    cancelClick()


const route=useRoute()
function cancelClick()
    route.back()

样式修改

我们有细微的样式需要修改,比如:

  • 搜索框要圆
  • 搜索符号颜色

关于搜索框变圆:添加shape="round"


关于搜索符号的颜色:F12一下

--van-search-left-icon-color

由于一个项目里的颜色一般都会统一,因此,我们可以全局设置--van-search-left-icon-color

在common.css中:

:root 
    /* 主题颜色 */
    --primary-color: #ff9854;
    /* 所有搜索框,有!important才会显示 */
    --van-search-left-icon-color:var(--primary-color) !important;

标签页

vant的标签页Tab:


看懂代码后改写:

步骤跟搜索框的差不多,详见总代码。

效果

总代码

修改的文件

common.css

通过全局修改来修改vant库的样式:

:root 
    /* 主题颜色 */
    --primary-color: #ff9854;
    /* 所有搜索框,有!important才会显示 */
    --van-search-left-icon-color: var(--primary-color) !important;
    /* 所有bottom下划线  */
    --van-tabs-bottom-bar-color: var(--primary-color) !important;


body 
    font-size: 14px;


/* 隐藏TabBar的类 */
.top-page 
    /* 占满整个屏幕 */
    height: 100vh;
    /* 有position,z-index才生效
     这里如果是absolute则不生效,可能与TabBar组件相关样式有关 */
    position: relative;
    /* TabBar的z-index默认1 */
    z-index: 9;
    /* 背景色挡住TabBar */
    background-color: #fff;
    /* y轴方向溢出:滚动条 */
    overflow-y: auto;

city.vue

<template>
    <div class="city top-page">
        <!-- show-action:显示 “取消”  -->
        <van-search shape="round" v-model="value" show-action placeholder="城市/区域/位置" @search="onSearch"
            @cancel="onCancel" />
        <van-tabs v-model:active="TabActive">
            <van-tab title="国内·港澳台">内容 1</van-tab>
            <van-tab title="海外">内容 2</van-tab>
        </van-tabs>
    </div>
</template>

<script setup>
import  ref  from 'vue';
import  showToast  from 'vant';
import  useRoute  from 'vue-router';

const value = ref('');
const TabActive = ref(0);
const onSearch = (val) => showToast(val);
const onCancel = () => 
    showToast('取消');
    // cancelClick()


// const route=useRoute()
// function cancelClick()
//     route.back()
// 
</script>

<style lang="less" scoped>

</style>

main.js

引入新的组件。在原有的基础上添加Tab, Tabs, Search即可。

以上是关于前端Vue项目:旅游App-city:搜索框search和标签页Tabs的主要内容,如果未能解决你的问题,请参考以下文章

前端Vue项目:旅游App-city:固定tab栏内容中显示数据

前端Vue项目:旅游App-city:隐藏TabBar的2种方法

前端Vue项目:旅游App-(17)home:页面滚动显示搜索栏节流时间同步

前端Vue3+Vant4项目:旅游App-项目总结与预览(已开源)

前端Vue项目:旅游App-(22)detail:房屋信息房屋设施插槽

前端Vue项目:旅游App-(14)home+search:搜索按钮及其路由跳转分组数据的网络请求request数据存储store和动态显示