vue3 搜索框 相关搜索内容 搜索词变色

html 

<!-- 搜索框 -->
<div class="input">
    <input type="text" v-model="search_content" @input="replace_text(search_content)"
        @focus="search_show = true, replace_text(search_content)" @blur="search_show = false"
        :placeholder="search_placeholder">
    <div class="icon"
        @click="navigateTo({ path: '/home/searchDetails/' + (search_content ? search_content : search_placeholder) })">
        <i class="iconfont icon-search" style="color:#fff;font-size:20px"></i>
    </div>
    <!-- 搜索列表 -->
    <div class="search_ul" v-if="search_show">
        <div class="li" v-for="item, i in search_list" :key="i">
            <p v-html="item"></p>
        </div>
    </div>
</div>

js

/**搜索内容*/
const search_content = ref("")
/**搜索框默认值 根据最近搜索推荐*/
const search_placeholder = ref("vue")
/**是否显示搜索列表*/
const search_show = ref(false)
/**搜索推荐渲染列表*/
const search_list: any = ref([])
/**历史搜索*/
const search_history: any = ref([])
/**模拟后端返回的数据*/
const search_data = ref([
    "搜索内容",
    "搜索内容vue",
    "搜索内容vue2",
    "搜索内容vue3",
    "搜索内容vue2和vue3",
    "搜索内容vue3和Nuxt3",
])
/**
 * 修改搜索内容的文字颜色
 * @text 搜索内容
 */
function replace_text(text: string) {
    console.log("搜索内容:", text);
    /**判断搜索内容不为空展示推荐搜索*/
    if (text.trim() != "") {
        search_list.value = []
        search_data.value.forEach((item: any) => {
            /**替换搜索内容为标签添加样式*/
            search_list.value.push(`${item.replaceAll(text, "<span style='color:#c4302c;font-size:16px'>" + text + "</span>")}`)
        })
    } else {
        /**判断搜索历史是否为空*/
        if (search_history.value.length != 0) {
            /**不为空显示历史搜索*/
            search_list.value = search_history.value
        } else {
            /**为空显示推荐搜索*/
            search_list.value = [
                "推荐搜索内容",
                "前端页面怎么写",
                "怎么让搜索的字变成红色",
                "字变成红色的css怎么写",
            ]
        }
    }
}

scss样式 

/**搜索框*/
/**定义主题颜色*/
$color: #c4302c;
.input {
    width: 234px;
    height: 32px;
    border: 2px solid $color;
    border-radius: 120px;
    position: relative;
    /**搜索列表*/
    .search_ul {
        position: absolute;
        left: 50%;
        bottom: -200px;
        transform: translateX(-50%);
        background-color: #fff;
        box-shadow: 0px 2px 20px 0px #EBEB
        width: 235px;
        height: 190px;
        overflow: hidden;
        border-radius: 10px;
        text-align: left;
        padding: 10px 0;
        .li {
            width: 100%;
            font-size: 16px;
            color: #909399;
            cursor: pointer;
            height: 30px;
            background-color: #fff;
            p {
                padding: 5px 10px;
                font-size: 16px;
                &:hover {
                    background-color: #f0f
                }
            }
        }
    }
    input {
        position: absolute;
        top: 50%;
        left: 10px;
        transform: translateY(-50%);
        width: 70%;
        height: 90%;
        border: none;
        outline: none;
    }
    .icon {
        cursor: pointer;
        position: absolute;
        top: 50%;
        right: 0;
        transform: translate(1px, -50%);
        width: 44px;
        height: 30px;
        border-radius: 15px;
        background: $color;
        display: flex;
        justify-content: center;
        align-items: center;
    }

效果

搜索内容是写死的,搜索列表数据由后端返回,前端进行循环处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/470580.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【爬虫】web自动化和接口自动化

专栏文章索引&#xff1a;爬虫 目录 一、介绍 二、推荐 1.接口自动化 2.Web自动化 一、介绍 爬虫技术一般可以分为两种类型&#xff1a;接口自动化和web自动化。下面是它们的简要介绍&#xff1a; 1.接口自动化 接口自动化技术的主要目的是通过模拟HTTP请求来实现自动化…

CSS 三大特性 详细讲解

CSS 三大特性及代码解释 层叠性 当相同选择器设置相同样式且发生冲突时&#xff0c;此时后者的样式会覆盖&#xff08;层叠&#xff09;前者冲突样式。CSS的层叠性就是用于解决样式冲突问题。 Input&#xff1a; <style>div {color: red;}div { color: blue; <!-…

第3章 物联网关键技术

物联网的核心是把物联到网上。物联网的系统架构自下而上分别是&#xff1a;底层——利用RFID等无线通信技术、传感器、二维码等随时随地获取物体的信息&#xff0c;感知世界的感知层主要完成信息的采集、转换和收集&#xff0c;中间层——用来传输数据的网络传输层&#xff0c;…

基础-笔试题6

1、tcp/udp是属于哪一层&#xff1f;tcp/udp有何优缺点&#xff1f; tcp /udp属于运输层 TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。 与 TCP 不同&#xff0c; UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较…

基于nodejs+vue班级管理系统的设计与实现-flask-django-python-php

随着电子技术的普及和快速发展&#xff0c;线上管理系统被广泛的使用&#xff0c;有很多事业单位和商业机构都在实现电子信息化管理&#xff0c;班级管理系统也不例外&#xff0c;由比较传统的人工管理转向了电子化、信息化、系统化的管理。随着互联网技术的高速发展&#xff0…

【QT实现下载功能】通过request请求下载并保存到本地

想要做一个带有向http请求并获得内容功能的软件&#xff0c;通过寻找网上的示例&#xff0c;了解了想要实现这个功能&#xff0c;主要有几个部分要点&#xff1a; 1.联网&#xff08;要勾选添加QNetwork库&#xff09; 2.向http请求内容&#xff08;发request&#xff09; 3.获…

蓝桥杯刷题|04普及-真题

[蓝桥杯 2018 省 B] 螺旋折线 题目描述 如图所示的螺旋折线经过平面上所有整点恰好一次。 对于整点 (X,Y)&#xff0c;我们定义它到原点的距离 dis(X,Y) 是从原点到(X,Y) 的螺旋折线段的长度。 例如 dis(0,1)3&#xff0c;dis(−2,−1)9。 给出整点坐标 (X,Y)&#xff0c;你…

CentOS 7.9 常用环境配置

文章目录 环境准备安装docker安装Java安装maven安装git安装MYSQL安装Redis安装RabbitMq安装minio 环境准备 操作系统版本为centos 7.9&#xff0c;内核版本需要在3.10以上 sudo uname -rsudo cat /etc/redhat-release1.确认环境好后&#xff0c;安装工具包并设置仓库 sudo yum…

Android14音频进阶:AudioFlinger究竟如何混音?(六十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程

原文链接&#xff1a;最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598050&idx5&sn70fd3f5946d581ad9c1363295b130ef5&chksmfa823e05cdf5b713baf9cf1381bfb2455ad675a0b21e194bef8b76f35d6aa77…

轻巧的elasticsearch可视化工具

一、概述 常见的ES可视化工具有&#xff1a; kibanaelasticsearch-headElasticHDDejavucerebroelasticview 一、安装elasticview 在众多ES可视化龚居中&#xff0c;elasticview是一款比较轻量简洁&#xff0c;兼容性较好&#xff0c;可以兼容多个ES版本&#xff0c;不但可以进…

PySpark案例实战

一、前言介绍 二、基础准备 # 导包 from pyspark import SparkConf,SparkContext #创建SparkConf类对象 confSparkConf().setMaster("local[*]").setAppName("test_spark_app") #基于SparkXConf类对象创建SparkContext对象 scSparkContext(confconf) #打印…

PCL 极大似然估计法拟合平面

目录 一、算法原理1、极大似然估计2、拟合过程3、参考文献二、代码实现三、结果展示一、算法原理 1、极大似然估计 在以最小二乘法为基础的估计算法中, 所有的参数都是确定值;而实际上,测量数据与未知参数都具有一定的随机性。这就导致了最小二乘法估计质量的缺陷以及对白噪…

整型数组按个位值排序 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定一个非空数组(列表)&#xff0c;其元素数据类型为整型&#xff0c;请按照数组元素十进制最低位从小到大进行排序&#xff0c;十进制最低位相同的元素&#xf…

机器学习——编程实现从零构造训练集的决策树

自己搭建一棵决策树【长文预警】 忙了一个周末就写到了“构建决策树”这一步&#xff0c;还没有考虑划分测试集、验证集、“缺失值、连续值”&#xff0c;预剪枝、后剪枝的部分&#xff0c;后面再补吧&#xff08;挖坑&#xff09; 第二节内容&#xff1a;验证集划分\k折交叉…

线性代数基础概念和在AI中的应用

基本概念 线性代数是数学的一个分支&#xff0c;专注于向量、向量空间&#xff08;也称为线性空间&#xff09;、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …

Jackson 2.x 系列【2】生成器 JsonGenerator

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…

期权波动率是什么?怎么计算?

期权波动率 历史波动率&#xff1a;基于历史行情计算出来的历史波动率 我们现在站在现实时点B回顾过去&#xff0c;从A到B这段时间的历史行情我们是知道的&#xff0c;但是基于过去一段时间&#xff0c;标的价格的历史数据计算出来的波动率&#xff0c;就是历史波动率&#x…

分布式搜索引擎elasticsearch专栏二

上一篇的传送门&#xff1a; 分布式搜索引擎elasticsearch专栏一-CSDN博客 这一篇博文主要讲解elasticsearch的数据搜索功能。下面会分别使用DSL和RestClient实现搜索。 1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsea…

Mac nvm install failed python: not found

报错 $>./configure --prefix/Users/xxx/.nvm/versions/node/v12.22.12 < ./configure: line 3: exec: python: not found nvm: install v12.22.12 failed!解决方法 到 App 文件夹&#xff0c;并且打开 cd /System/Applications/Utilities/ open .记得改完 Rosetta 之…
最新文章