美文网首页
模拟下拉菜单

模拟下拉菜单

作者: 升龙无涯 | 来源:发表于2021-08-28 09:19 被阅读0次

效果图如下:


模拟下拉菜单

html结构代码:

<style>
input,ul{
    list-style-type: none;
    padding: 0;
    margin: 0;
    width:200px;
    border:1px solid #000;
    outline:none;
}
input{
    padding-left:6px;
    width: 194px;
}
</style>
<input type="text" name="keywords">

js逻辑代码:

// 定义每个li中的文本内容数组
var arr = ['vue','react','angular'];
// 获取标签
var keywordsInput = document.querySelector('[name="keywords"]');
// 获取焦点的时候,出现下拉框 - 创建ul列表显示
keywordsInput.addEventListener('click',focus)
function focus(){
    // 将原先的ul删除掉
    // 当前文本框后面的标签如果是ul且类名是select就删除
    if(this.nextElementSibling.tagName === 'UL' && this.nextElementSibling.className === 'select'){
        this.parentElement.removeChild(this.nextElementSibling)
    }
    // 创建ul标签
    var ul = document.createElement('ul')
    // 设置类名,方便后面识别
    ul.className = 'select';
    // 根据数组创建li,将li放到ul中
    arr.forEach(function(item){
        var li = document.createElement('li')
        li.innerText = item;
        ul.appendChild(li)
        // 给所有li绑定单击事件,点击将当前li的内容放在input中
        li.addEventListener('click',click)
    })
    // 将ul作为当前文本框的下一个兄弟标签
    this.parentElement.insertBefore(ul,this.nextElementSibling)
}
// li的单击事件
function click(){
    keywordsInput.value = this.innerText
}
// 给input绑定失去焦点事件,让ul消失
keywordsInput.addEventListener('blur',blur)
function blur(){
    // 延迟100毫秒让ul消失,因为点击li的时候li的点击事件会跟输入框的失去焦点事件同时出发,如果将ul消失了,li就点击不中了,为了能让li点击事件先触发,就在输入框的失去焦点事件中让ul延迟消失
    setTimeout(function(){
        keywordsInput.nextElementSibling.parentElement.removeChild(keywordsInput.nextElementSibling)
    },100)
}

相关文章

  • Vue中判断点击是否在组件外

    自己使用div模拟select,有如下需求: 组件获得焦点时,自动弹出下拉菜单 鼠标点击下拉菜单时,下拉菜单不能收...

  • 模拟下拉菜单

    效果图如下: html结构代码: js逻辑代码:

  • web前端html实例-select下拉菜单美化代码

    自带的select下拉菜单美观度实在不怎么样,并且不容易美化,当然我们可以模拟实现select下拉菜单,但是代码稍...

  • 第十九谈:下拉菜单

    本节课我们来开始学习 Bootstrap 的提供的下拉菜单组件。 一.下拉菜单 下拉菜单组件依赖于 Popper....

  • 简易下拉菜单

    今天做了一个简易的下拉菜单: 页面头部一个下拉菜单,鼠标滑过下拉菜单下方显示一个菜单项列表,且下拉菜单的背景图片切...

  • html 使用ul、li 模拟 select 下拉菜单

    手头上有个项目,需要用到select。用了以后咋感觉这么........索性,自己用ul、li,模拟了一个sele...

  • Bootstrap - 菜单2

    下拉菜单(对齐方式) 实现右对齐方法: Bootstrap框架中下拉菜单默认是左对齐,如果你想让下拉菜单相对于父容...

  • 2019-04-11 下拉菜单(2)

    如需使用下拉菜单,只需要在 class.dropdown内加上下拉菜单即可。下面的实例演示了基本的下拉菜单:可以使...

  • 【Excel篇】自动更新下拉菜单

    前面,分享过单元格通过下拉菜单完成快速输入,这限于下拉菜单固定不变的情况。如果遇到下拉菜单变更的情况则需要...

  • css学习 第五天

    CSS 下拉菜单 使用 CSS 创建一个鼠标移动上去后显示下拉菜单的效果。 基本下拉菜单 当鼠标移动到指定元素上时...

网友评论

      本文标题:模拟下拉菜单

      本文链接:https://www.haomeiwen.com/subject/ashbiltx.html