js在input框获取焦点展开,失去焦点隐藏案例

  • Post author:
  • Post category:其他


js在input框获取焦点展开,失去焦点隐藏,点击内层固定,点击外层收缩事件案例:

<!DOCTYPE html>
<html>
<head>
    <title>动画</title>
    <style type="text/css">
        .page{
            width: 622px;
            padding: 10px 20px;
            border: 1px solid #eee;
        }
        .container {
            overflow: hidden;
        }
        .container > .options{
            transition: all .5s;
            max-height: 0;
            display: block;
        }
        .container > .content{
            max-height: 400px;
        }
        .container > .btn{
            /* color: #4C98F7; */
            /* cursor: pointer; */
            text-decoration: underline;
        }
        /* 搜索历史 */
        .line-one{
            text-overflow: ellipsis;
            white-space: nowrap;
            overflow: hidden;
        }
        .iblock{
            display: inline-block;
        }
        .hot-words-history{
            height: 24px;
            line-height: 16px;
            padding-bottom: 8px;
            border-bottom: 1px solid #e2e2e2; 
        }
        .hot-words-history p{
            font-size: 12px;
            line-height: 16px;
            color: #818284;
            font-weight: 600;
            padding-right: 20px;
            transition: all .1s;
        }
        .block{
            cursor: pointer;
            right: -577px;
            top: -30px;
            position: relative;
        }
        .icon{
            width: 20px;
        }
        /* 今日热搜 */
        .hot-search-title{
            font-weight: 600;
            font-size: 12px;
            line-height: 16px;
            height: 16px;
            color: #444;
            margin-bottom: 8px;
        }
        .hot-search-content span{
            width: auto;
            height: 30px;
            padding: 0 9px;
            font-size: 14px;
            border-radius: 4px;
            margin: 0 5px 10px;
            text-align: center;
            line-height: 30px;
            transition: all ease-in-out .2s;
            overflow: hidden;
            cursor: pointer;
            user-select: none;
            background: #f6f6f6;
            color: #444;
        }
        /* 大家都在搜 */
        .hot-search-title{
            font-weight: 600;
            font-size: 12px;
            line-height: 16px;
            height: 16px;
            color: #444;
            margin-bottom: 8px;
        }
    </style>
</head>
<body>
    <div class="page">
        <div class="container">
			<input type='text' id="search" />
            <div class="options ">
                <!-- 搜索历史 -->
                <div class="hot-words-history clearfix por">
                    <p class="line-one">
                        历史搜索:
                        <span class="iblock">风景</span>
                        <span class="iblock">片头</span>
                        <span class="iblock">城市</span>
                        <span class="iblock">背景</span>
                        <span class="iblock">pr</span>
                        <span class="iblock">风景</span>
                        <span class="iblock">片头</span>
                        <span class="iblock">城市</span>
                        <span class="iblock">背景</span>
                        <span class="iblock">pr</span>
                        <span class="iblock">风景</span>
                        <span class="iblock">片头</span>
                        <span class="iblock">城市</span>
                        <span class="iblock">背景</span>
                        <span class="iblock">pr</span>
                        <span class="iblock">风景</span>
                        <span class="iblock">片头</span>
                        <span class="iblock">城市</span>
                        <span class="iblock">背景</span>
                        <span class="iblock">pr</span>
                    </p>
                    <span class="block poa" title="删除记录">
                        <img class="icon" src="delete.svg" alt="">
                    </span>
                    
                </div>
                <!-- 盒子 -->
                <div class="hot-search-box">
                    <!-- 今日热搜 -->
                    <p class="hot-search-title">? 今日热搜推荐</p>
                    <div class="hot-search-content clearfix">
                        <span class="fl">风景</span>
                        <span class="fl">片头</span>
                        <span class="fl">城市</span>
                        <span class="fl">背景</span>
                        <span class="fl">pr</span>
                        <span class="fl">快闪</span>
                        <span class="fl">logo</span>
                        <span class="fl">4k</span>
                        <span class="fl">字幕</span>
                        <span class="fl">水墨</span>
                        <span class="fl">AE</span>
                        <span class="fl">图文</span>
                        <span class="fl">汽车</span>
                        <span class="fl">美食</span>
                        <span class="fl">特效</span>
                        <span class="fl">科技</span>
                        <span class="fl">粒子</span>
                        <span class="fl">航拍</span>
                        <span class="fl">党建</span>
                        <span class="fl">视频素材</span>
                        <span class="fl">美女</span>
                        <span class="fl">转场</span>
                        <span class="fl">商务</span>
                        <span class="fl">数据</span>
                        <span class="fl">绿幕</span>
                    </div>
                    <!-- 大家都在搜 -->
                    <p class="hot-search-title">? 大家都在搜</p>
                    <div class="hot-search-rank clearfix">
                        <div class="hot-search-rank-l fl">

                        </div>
                        <div class="hot-search-rank-r fr">

                        </div>
                    </div>
                </div>
                <div>选项3</div>
                <div>选项4</div>
                <div>选项5</div>
                <div>选项6</div>
                <div>选项7</div>
            </div>
        </div>
    </div>
</body>
<script type="text/javascript">
        var inputs = document.querySelector("#search");
        const optionsNode = document.querySelector(".container > .options");
        const containerNode = document.querySelector(".page");
        // input获取焦点
        inputs.onfocus = function () {
            optionsNode.classList.add("content");
        };
         // 判断是否点击
        //  optionsNode.onclick = function(){
            // optionsNode.classList.remove("content");
        // }
        // input失去焦点
        // inputs.onblur = function () {
        //     // optionsNode.classList.remove("content");
        // };

        document.addEventListener('mousedown', (e) => {
            let t = document.getElementsByClassName('options')[0] // 最外层元素
            if (!e.path.includes(t)) {
                // console.log('事件触发情况:触发')
                optionsNode.classList.remove("content");
            } else {
                // console.log('事件触发情况:未触发')
                
            }
        })

        // optionsNode.onmouseover  = function() {
        //     optionsNode.classList.add("content");
        //     // alert('移入');
        // }
        // containerNode.onmouseout  = function() {
        //     // alert('移出');
        //     optionsNode.classList.remove("content");
        // }
        window.addEventListener("wheel", function(e) { 
            let evt = e || window.event;  //考虑兼容性
            evt.preventDefault();
            if (evt.deltaY > 0) {  //在火狐中 向下滚动是3 谷歌是125
                optionsNode.classList.remove("content");
                // console.log("向下滚动");
            } else {           //在火狐中 向上滚动是-3 谷歌是-125
                // console.log("向上滚动");
            }
            //检查事件
            // console.log(evt.type, evt.deltaX, evt.deltaY, evt.deltaZ);  
        }, {
            passive: false
        });
            

</script>
</html>



版权声明:本文为qq_42217708原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。