html下拉单选框

本文介绍如何使用HTML、CSS和JavaScript在网页中创建一个响应式的输入框,当用户聚焦或输入内容时,显示动态下拉选项。通过监听input事件,实现输入内容匹配并选择列表项,用户选择后更新输入框内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin:0;
            pading:0;

        }
        ul,li {
            list-style:none;
        }
        #ulDom {
            width: 100px;
            height: 100px;
            display: none;
        }
        #ulDom li {

        }

    </style>
</head>
<body>
<div>
    <input type="text" id="inputDom">
    <ul id="ulDom">
    </ul>
</div>
<script>
  let ulDom = document.getElementById('ulDom');
  let inputDom = document.getElementById('inputDom');
  let timer = null;
  inputDom.addEventListener('focus', function () {
    openSelect()
  })
  inputDom.addEventListener('input', function () {
    closeSelect();
    if(inputDom.value === ''){
     openSelect()
    }
  })

  ulDom.addEventListener('click', function (event) {
    console.log('0000')
    var e = event || window.event;
    var target = e.target || e.srcElement;
    console.log(target.innerHTML)
    inputDom.value = target.innerHTML;
    closeSelect()
  })
   inputDom.addEventListener('blur', function () {
    timer && clearTimeout(timer);
    timer = setTimeout(()=>{
      closeSelect();
    },300)

   })

  function openSelect() {
    ulDom.style.display = 'block';
  }

  function closeSelect() {
    ulDom.style.display = 'none';

  }

  var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  for (let i = 0; i < arr.length; i++) {
    const liDom = document.createElement('li')
    liDom.innerHTML= arr[i];
    ulDom.appendChild(liDom);
  }
</script>
</body>
</html>

### 创建 Vue 下拉单选框组件 在 Vue 中实现下拉单选框功能可以通过多种方式完成,既可以手动构建基础逻辑,也可以利用现有的 UI 库进行扩展。以下是基于 Vue 2 和 Vue 3 的两种方法来创建一个自定义的下拉单选框组件。 #### 方法一:基于 Vue 2 手动实现 通过 `w-single-input` 或类似的逻辑可以实现简单的下拉单选框功能[^1]: ```html <template> <div class="dropdown"> <button @click="toggleDropdown">{{ selected || '请选择' }}</button> <ul v-if="isOpen" class="options"> <li v-for="(option, index) in options" :key="index" @click="selectOption(option)"> {{ option }} </li> </ul> </div> </template> <script> export default { data() { return { isOpen: false, selected: null, options: ['选项A', '选项B', '选项C'] }; }, methods: { toggleDropdown() { this.isOpen = !this.isOpen; }, selectOption(option) { this.selected = option; this.isOpen = false; } } }; </script> <style scoped> .dropdown button { padding: 8px 16px; cursor: pointer; } .options { list-style-type: none; margin: 0; padding: 0; border: 1px solid #ccc; max-height: 150px; overflow-y: auto; } .options li { padding: 8px 16px; cursor: pointer; } .options li:hover { background-color: #f0f0f0; } </style> ``` 此代码片段展示了如何使用原生 HTML 和 CSS 构建一个可交互的下拉单选框。 --- #### 方法二:基于 Vue 3 使用 Element Plus 封装 如果希望更高效地开发并支持 TypeScript,则可以参考基于 Vue 3 和 Element Plus 的封装方案[^4]: ```vue <template> <el-select v-model="selectedValue" placeholder="请选择" style="width: 100%"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option> </el-select> </template> <script setup lang="ts"> import { ref } from 'vue'; const selectedValue = ref(''); const options = [ { value: 'option1', label: '选项 A' }, { value: 'option2', label: '选项 B' }, { value: 'option3', label: '选项 C' } ]; </script> ``` 上述代码展示了一个基于 Element Plus 的简单下拉单选框实现。它不仅提供了丰富的内置样式,还允许开发者轻松定制行为和外观。 --- #### 高级功能拓展 对于需要复杂功能(如搜索过滤、分组显示等),可以选择成熟的第三方库,例如 Vuetify、Ant Design Vue 或者 Quasar Framework[^2]。这些框架通常已经集成了高效的性能优化以及跨平台兼容性处理[^3]。 --- ### 总结 无论是从零开始还是借助现有工具链,在 Vue 生态中都有灵活的方式来满足项目需求。以上介绍了手写基本组件的方法以及依赖成熟框架快速搭建的方式,具体选择取决于项目的规模和技术栈偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值