前端下拉列表的实现

实现下拉列表

实现效果如图:

主要注意一下enevt事件,同时因为感觉select原生的样式不容易修改,因此自己写了一个下拉列表,便于修改样式。
直接上代码:

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

<head>
    <meta charset="UTF-8">
    <title>自定义下拉列表</title>
    <style> html, body { height: 100%; } .select { width: 200px; background: #ccc; font-size: 14px; position: relative; } .clearfix { /* 清楚浮动 */ content: ""; display: table; clear: both; } .select div { height: 30px; /* 这个貌似对span有效,但是对于input没有效果 */ line-height: 30px; } .select div span { /* 这里如果使用inline-block,inline-block会多一点间距,还是使用block+float来进行布局 */ display: block; text-align: center; float: left; font-size: 12px; width: 50px; } .select div input { width: 150px; display: block; float: left; /* 默认的input包含一些padding border */ box-sizing: border-box; /* 设置高度和外层div的高度一致,这样看起来才像是垂直居中显示 */ height: 30px; } .select ul { position: absolute; /* list-style-type: none; */ background: #aaa; /* 去掉默认的样式以及margin padding */ list-style: none; margin: 0; padding: 0; /* 如果设置了position,那么这里的100%可能是相对与html而言的,但是这里设置了select的position,所以这里的宽度是相对于select而言 */ /* width: 100%; */ width: 150px; box-sizing: border-box; /* 避免被遮住 */ z-index: 100; text-align: center; left: 50px; /* 默认是隐藏的 */ display: none; } .select ul li { line-height: 1.4rem; border-bottom: 1px solid #ccc; cursor: pointer; } .select ul li:hover { /* 悬浮的时候显示背景颜色 */ color: red; } </style>
</head>

<body onclick="closeLists()">
       <div class="select">
        <div class="clearfix">
            <span>事件类型</span>
            <input type="text" readonly onclick="showList()" id="Etype">
        </div>
        <ul id="lists">
            <li onclick="chooseParam()">爆炸事故</li>
            <li onclick="chooseParam()">火灾事故</li>
            <li onclick="chooseParam()">中毒事件</li>
            <li onclick="chooseParam()">坍塌事故</li>
        </ul>
    </div>
    <script> function showList() { document.getElementById("lists").style.display = "block"; // let ev = event || window.event; event.stopPropagation() } function chooseParam() { // console.log(event) document.getElementById("Etype").value = event.target.innerText; } function closeLists() { document.getElementById("lists").style.display = "none"; event.stopPropagation(); //阻止冒泡 } </script>
</body>

</html>
全部评论

相关推荐

11-28 17:48
中山大学 C++
点赞 评论 收藏
分享
头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务