首页 > 其他分享 >搜索页面效果

搜索页面效果

时间:2022-08-26 10:11:16浏览次数:53  
标签:box font 效果 搜索 vw webkit 页面 display history

需求分析:

1.默认显示搜索历史记录,搜索记录倒序排列且去除重复值。

2.点击搜索后,显示搜索列表,历史记录隐藏。

3.搜索值变化时,列表隐藏。搜索值为空时,历史记录显示。

4.点击历史记录,进行相应的搜索。点击删除时清空搜索历史记录

完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" />
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        ul {
            list-style: none;
        }

        .container {
            padding: 0 4vw
        }

        .search {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: justify;
            -ms-flex-pack: justify;
            justify-content: space-between;
            margin-top: 5.067vw
        }

        .input-container {
            position: relative
        }

        .input-container span {
            position: absolute;
            /* top: 1.867vw; */
            width: 4.8vw;
            /* height: 4.8vw; */
        }

        .input-container .search-icon {
            left: 4.267vw;
            top: 1.967vw;
        }

        .input-container .search-icon svg,
        .input-container .cancel-icon svg {
            width: 4.8vw;
            height: auto;
        }

        .input-container .cancel-icon {
            right: 4.267vw;
            top: 2.1vw;

        }

        .search input {
            width: 82.4vw;
            height: 8.533vw;
            padding-left: 11.2vw;
            border-radius: 45.867vw;
            background: #f7f7f7;
            float: right;
            border: none;
            outline: medium;
            -webkit-box-sizing: border-box;
            box-sizing: border-box
        }

        .search button {
            font-size: 3.7vw;
            color: #444;
            background: none;
            border: none
        }

        .history {
            padding-bottom: 4.267vw;
            background: #fff;
            -webkit-box-shadow: 0 -1px rgba(0, 0, 0, .07843) inset;
            box-shadow: inset 0 -1px rgba(0, 0, 0, .07843)
        }

        .history .title {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: justify;
            -ms-flex-pack: justify;
            justify-content: space-between;
            margin: 3.733vw 0 5.333vw
        }

        .history .title span {
            color: #444;
            font-family: PingFang SC;
            font-weight: 700;
            font-size: 4.267vw
        }

        .history .title img {
            width: 4.4vw;
            height: auto;
        }

        .history .delete {
            width: 4.4vw;
            height: auto;
        }

        .history .delete svg {
            width: 4.4vw;
            height: auto;
        }

        span svg {
            width: 100%;
        }

        .history-list li {
            display: inline-block;
            padding: 1.067vw 3.2vw;
            color: #666;
            background: #f7f7f7;
            border-radius: 7.733vw;
            margin-bottom: 3.2vw
        }

        .all,
        .history-list li {
            text-align: center;
            font-family: PingFang SC;
            font-weight: 500;
            font-size: 3.733vw
        }

        .all {
            padding-top: 1.067vw;
            color: #999
        }

        /* 列表 */
        .item {
            padding: 3.2vw 4vw;
            margin-top: 4.8vw;
            background-color: #fff;
            border-radius: 2.133vw;
            -webkit-box-shadow: 0 0 1.067vw rgba(0, 0, 0, .12157);
            box-shadow: 0 0 1.067vw rgba(0, 0, 0, .12157)
        }

        .item a {
            display: block;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: justify;
            -ms-flex-pack: justify;
            justify-content: space-between;
            text-decoration: none;
        }

        .item .item-image {
            width: 25.6vw;
            height: 34.133vw;
            border-radius: 1.067vw;
        }

        .item-image img {
            width: 100%;
            height: 100%
        }

        .item .item-intro {
            float: right;
            width: 55.2vw;
            height: 34.133vw;
            -webkit-box-sizing: border-box;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
            -ms-flex-direction: column;
            flex-direction: column;
            -webkit-box-pack: justify;
            -ms-flex-pack: justify;
            justify-content: space-between;
            box-sizing: border-box
        }

        .intro-top .intro-title {
            color: #444;
            font-family: PingFang SC;
            font-weight: 700;
            font-size: 4.267vw
        }

        .intro-top .intro-type {
            padding-top: 3.2vw;
            color: #999;
            font-family: PingFang SC;
            font-weight: 500;
            font-size: 3.733vw
        }

        .price {
            -webkit-box-align: center;
            -ms-flex-align: center;
            align-items: center;
            color: #ed9027;
            font-family: PingFang SC;
            font-weight: 700;
            font-size: 4.267vw
        }

        button {
            border: none
        }

        .intro-bottom {
            color: #ed9027
        }

        .pre-order {
            float: right;
            margin-right: 4vw;
            width: 12.8vw;
            height: 6.4vw;
            border-radius: 3.2vw;
            background: #ed9027;
            font-size: 3.2vw;
            -webkit-box-align: center;
            -ms-flex-align: center;
            align-items: center;
            color: #fff
        }


        /* 搜索框去掉默认取消按钮 */
        input[type=search]::-webkit-search-cancel-button {
            -webkit-appearance: none;
        }

        /* ios自带搜索图标 */
        input[type="search"] {
            -webkit-appearance: none;
        }

        input::-webkit-search-cancel-button {
            display: none;
        }

        .attention {
            display: none;
            text-align: center;
            font-size: 3.2vw;
            margin-top: 4vw;
            padding-top: 1.067vw;
            color: #999;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="search">
            <div class="input-container">
                <input type="search" placeholder="请输入您要搜索的内容" onsearch="searchData()" class="search-val"
                    oninput="changeVal()">
                <span class="search-icon">
                    <svg t="1661304760463" class="icon" viewBox="0 0 1024 1024" version="1.1"
                        xmlns="http://www.w3.org/2000/svg" p-id="3718" width="200" height="200">
                        <path
                            d="M966.4 924.8l-230.4-227.2c60.8-67.2 96-156.8 96-256 0-217.6-176-390.4-390.4-390.4-217.6 0-390.4 176-390.4 390.4 0 217.6 176 390.4 390.4 390.4 99.2 0 188.8-35.2 256-96l230.4 227.2c9.6 9.6 28.8 9.6 38.4 0C979.2 950.4 979.2 934.4 966.4 924.8zM102.4 441.6c0-185.6 150.4-339.2 339.2-339.2s339.2 150.4 339.2 339.2c0 89.6-35.2 172.8-92.8 233.6-3.2 0-3.2 3.2-6.4 3.2-3.2 3.2-3.2 3.2-3.2 6.4-60.8 57.6-144 92.8-233.6 92.8C256 780.8 102.4 627.2 102.4 441.6z"
                            p-id="3719" fill="#8a8a8a"></path>
                    </svg>
                </span>
                <!-- <img class="search-icon"
                    src="../addons/hedawei_shopv2/template/mobile/default/static/images/hedawei/sear.png" alt=""> -->
                <!-- <img class="cancel-icon"
                    src="../addons/hedawei_shopv2/template/mobile/default/static/images/hedawei/cancel.png" alt=""> -->
                <span class="cancel-icon">
                    <svg t="1661305053945" class="icon" viewBox="0 0 1024 1024" version="1.1"
                        xmlns="http://www.w3.org/2000/svg" p-id="4672" width="200" height="200">
                        <path
                            d="M512 896c212.1 0 384-171.9 384-384S724.1 128 512 128 128 299.9 128 512s171.9 384 384 384z m-0.8-427.3l150.3-150.3 45.2 45.2L556.5 514l147.3 147.3-45.2 45.2-147.4-147.3-146 146L320 660l146-146-149.6-149.6 45.2-45.2 149.6 149.5z"
                            p-id="4673" fill="#8a8a8a"></path>
                    </svg>
                </span>
            </div>
            <button type="submit" class="cancel">取消</button>
        </div>
        <div class="list">
            <ul>
                <!-- <li class="item">
                    <a href="">
                        <div class="item-image">
                            <img src="" alt="">
                        </div>
                        <div class="item-intro">
                            <div class="intro-top">
                                <p class="intro-title">密室逃脱</p>
                                <p class="intro-type">悬疑 | 惊恐 </p>
                            </div>
                            <div class="intro-bottom">
                                <p>
                                    <span>¥198/人</span>
                                    <button class="pre-order">预定</button>
                                </p>
                            </div>
                        </div>
                    </a>
                </li> -->
            </ul>
        </div>
        <p class="attention">暂无数据</p>
        <div class="history">
            <div class="title">
                <p>历史记录</p>
                <span class="delete">
                    <svg t="1661304680168" class="icon" viewBox="0 0 1024 1024" version="1.1"
                        xmlns="http://www.w3.org/2000/svg" p-id="2624" width="200" height="200">
                        <path
                            d="M909.050991 169.476903l-217.554898 0 0-31.346939c0-39.5866-32.205493-71.792093-71.793116-71.792093L408.15591 66.337871c-39.5866 0-71.792093 32.205493-71.792093 71.792093l0 31.346939L113.349581 169.476903c-11.013845 0-19.942191 8.940626-19.942191 19.954471s8.928347 19.954471 19.942191 19.954471l84.264149 0 0 640.687918c0 60.479443 49.203632 109.683075 109.683075 109.683075l416.474366 0c60.479443 0 109.683075-49.203632 109.683075-109.683075L833.454246 209.385844l75.595722 0c11.012821 0 19.942191-8.940626 19.942191-19.954471S920.063813 169.476903 909.050991 169.476903zM376.2482 138.130987c0-17.593703 14.314007-31.907711 31.907711-31.907711l211.547067 0c17.593703 0 31.907711 14.314007 31.907711 31.907711l0 31.346939L376.2482 169.477926 376.2482 138.130987zM793.569864 850.074785c0 38.486546-31.312146 69.798692-69.798692 69.798692L307.297828 919.873478c-38.486546 0-69.798692-31.312146-69.798692-69.798692L237.499136 211.042577l556.070728 0L793.569864 850.074785z"
                            p-id="2625" fill="#8a8a8a"></path>
                        <path
                            d="M510.662539 861.276918c11.012821 0 19.954471-8.92937 19.954471-19.942191L530.61701 294.912753c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191L490.708068 841.334727C490.708068 852.347548 499.649717 861.276918 510.662539 861.276918z"
                            p-id="2626" fill="#8a8a8a"></path>
                        <path
                            d="M374.562814 801.449321c11.012821 0 19.954471-8.92937 19.954471-19.942191L394.517285 354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191l0 426.76678C354.608344 792.519951 363.549993 801.449321 374.562814 801.449321z"
                            p-id="2627" fill="#8a8a8a"></path>
                        <path
                            d="M649.832182 801.449321c11.012821 0 19.954471-8.92937 19.954471-19.942191L669.786653 354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191l0 426.76678C629.877711 792.519951 638.81936 801.449321 649.832182 801.449321z"
                            p-id="2628" fill="#8a8a8a"></path>
                    </svg>
                </span>
                <!-- <img src="../addons/hedawei_shopv2/template/mobile/default/static/images/hedawei/delete.png" alt=""
                    class="delete"> -->
            </div>
            <ul class="history-list">
                <!-- <li>测试数据11111</li> -->
            </ul>
            <p class="all">全部历史记录</p>

        </div>
    </div>
    <script type="text/javascript" src="../addons/hedawei_shopv2/static/js/dist/jquery/jquery-1.11.1.min.js"></script>
    <script>
        storage()
        // 历史记录本地存储
        let history = localStorage.getItem('history') || ''
        function searchData() {
            let temp = $('.search-val').val()
            if (temp) {
                history = history.length ? `${temp},${history}` : `${temp}`
                localStorage.setItem('history', history)
                storage()
                getData()
            }
            $('.history').css('display', 'none')
            // window.location.href=`http://hdong.com/app/index.php?i=36&c=entry&m=hedawei_shopv2&do=mobile&r=ssresult&search=${temp}`
            // window.location.href = "{php echo mobileUrl('ssresult')}&search=" + temp;
        }

        $('.delete').click(function () {
            localStorage.removeItem('history')
            $('.history-list').empty()
            history = []
        })
        // 搜索内容清空
        $('.cancel-icon').click(function () {
            // console.log($('.search-val').val(), 'val');
            $('.search-val').val('')
            $('.history').css('display', 'block')
            $('.list ul').css('display', 'none')
            $('.attention').css('display', 'none')

        })
        // 返回上一页
        $('.cancel').click(function () {
            window.history.go(-1)
        })
        function getData() {
            $.ajax({
                url: "{php echo mobileUrl('goodsall')}",
                type: 'get',
                dataType: 'json',
                data: {
                    words: $('.input-container input').val(),  //非必须 标题搜索
                    categoryid: '' //非必须  分类id搜索
                },
                success: function (data) {
                    // console.log(data)
                    // 动态添加元素
                    $('.list ul').html("");
                    if (!data.length) {
                        $('.attention').css('display', 'block')
                    } else {
                        $('.attention').css('display', 'none')
                        data.forEach(ele => {
                            $('.list ul').append(`
                            <li class="item">
                                <a href="{php echo mobileUrl('goods/detail')}&id=${ele.id}">
                                    <div class="item-image">
                                        <img src="${ele.thumb}" alt="">
                                    </div>
                                    <div class="item-intro">
                                        <div class="intro-top">
                                            <p class="intro-title">${ele.title}</p>
                                            <p class="intro-type">${ele.keywords} </p>
                                        </div>
                                        <div class="intro-bottom">
                                            <p>
                                                <span>¥${ele.marketprice}/人</span>
                                                <button class="pre-order" >预订</button>
                                            </p>
                                        </div>
                                    </div>
                                </a>
                            </li>`)
                        })
                    }
                }
            })
        }

        function changeVal() {
            let searchVal = $('.search-val').val()
            // console.log(searchVal, 'searchVal');
            if (searchVal == '') {
                // 输入值为空时,历史记录显示
                $('.history').css('display', 'block')
                $('.list ul').css('display', 'none')
                $('.attention').css('display', 'none')
            } else {
                $('.history').css('display', 'none')
                $('.list ul').css('display', 'block')
                $('.list ul').html("");
            }
        }
        function storage() {
            let currentHistory = localStorage.getItem('history') || ''
            $('.history-list').empty()
            if (currentHistory.length) {
                let tempResult = currentHistory.split(',')
                let tempResu = [...new Set(tempResult)]
                for (const item of tempResu) {
                    $('.history-list').append(`
                        <li>${item}</li>
                 `)
                }
            }
        }
        // 历史记录点击搜索
        $('.history-list').on('click', 'li', function () {
            let searchVal = $(this).html()
            $('.search-val').val(searchVal)
            $('.list ul').css('display', 'block')
            searchData()
        })

    </script>
</body>

</html>

  

标签:box,font,效果,搜索,vw,webkit,页面,display,history
From: https://www.cnblogs.com/cuipingzhao/p/16626637.html

相关文章

  • EasyPlayer.js集成时页面报错出现“X”,该如何解决?
    在上几期的文章中,我们介绍了关于EasyPlayer流媒体播放器最近更新的一些功能和细节优化,包括网页实时录像、ios端低延迟直播,以及如何删除或替换播放器loading样式等,感兴趣的......
  • EasyCVR修改设备通道信息保存图片时,页面一直加载如何优化?
    EasyCVR平台是我们支持协议最全面的视频平台,它能支持主流协议包括国标GB/T28181、RTMP、RTSP/Onvif协议,以及厂家的私有协议,如海康Ehome、海康SDK、大华SDK等。平台可拓展性......
  • 解决Vuex刷新页面数据没缓存的问题
    监听页面是否刷新,如果页面刷新了,将state对象存入到sessionStroage中。页面打开之后,判断sessionStorage中是否存在state对象,如果存在,则说明页面是被刷新过,将sessionStor......
  • 京东页面的响应式布局
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"c......
  • 98. 验证二叉搜索树
    98.验证二叉搜索树给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数。节点的右子......
  • 算法学习--广度优先搜索和深度优先搜索
    广度优先搜索BFS一、相关概念1.图的遍历:从图中某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有节点访问一次且仅访问一次二、算法流程首先访问起始顶点v;......
  • 使用{{}}展示或更新页面数据时出现闪烁问题:当网速比较慢时,会让用户先看到表达式{{msg}
    可使用以下方式解决:1、使用v-cloak指令,然后为其设置css样式display:none;即上述代码可修改为:但有时添加完毕后变量仍会显示(即闪烁问题没解决),这是因为v-cloak 的displa......
  • html页面如何弹警示框
    前言html页面中,可以通过添加<scripttype="text/javascript">alert("警告文本");</script>语句来弹出警示框;alert()用于显示带有一条指定消息和一个“确定”按钮的警告框......
  • 分布式搜索引擎01
    Mysql: 关系型数据库:数据在存储时数据和数据之间有一定的关联关系存储介质(存储位置):硬盘优点:不会导致数据丢失,有事务控制 缺点:执行消息低事务......
  • form表单 input回车刷新页面问题
    1原因是因为当form表单中只有一个input时,按下回车建会自动触发页面的提交功能,所以会产生刷新页面的行为解决方案:<el-form:model="queryData"ref='queryData'status......