css结合JS实现一个漂亮的select下拉列表
时间:2017-03-27
本文章使用css和Js实现一个自定义的、漂亮的下拉列表,select下拉列表界面美观,可操作性强,需要的朋友可以参考一下本文章的源代码。
漂亮的下拉列表菜单:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
body{
margin: 0;
font: 16px/20px "宋体";
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.box{
width: 300px;
height: 40px;
margin: 0 auto;
border: 1px solid black;
}
.box .show{
background-color: red;
line-height: 30px;
padding: 5px;
}
.box .show-area{
color: white;
vertical-align: middle;
}
.box .show-select{
position: relative;
display: inline-block;
vertical-align: middle;
width: 200px;
height: 28px;
border: 1px solid #999;
background-color: white;
text-indent: 20px;
cursor: pointer;
}
.box .show-selectAdd{
color: #999;
}
.box .show-select i{
position: absolute;
height: 0;
width: 0;
top: 0;
right: 0;
margin-top: 12px;
margin-right: 5px;
border: 5px solid transparent;
border-top-color: black;
}
.box .show-selectAdd i{
border: 5px solid transparent;
border-bottom-color: black;
margin-top: 8px;
}
.box .list{
border: 1px solid #dfdfdf;
border-top: none;
display: none;
}
.box .list-in{
height: 30px;
line-height: 30px;
text-indent: 74px;
border-bottom: 1px solid #dfdfdf;
cursor: pointer;
}
.box .list-in:hover{
color: red;
}
</style>
<body>
<div class="box" id="box">
<div class="show">
<strong class="show-area">地址:</strong>
<span class="show-select">朝阳区<i></i></span>
</div>
<ul class="list">
<li class="list-in">朝阳区</li>
<li class="list-in">海淀区</li>
<li class="list-in">东城区</li>
<li class="list-in">西城区</li>
<li class="list-in">丰台区</li>
<li class="list-in">石景山区</li>
</ul>
</div>
<script>
var oBox = document.getElementById('box');
var oDiv = oBox.getElementsByTagName('div')[0];
var oShow = oDiv.getElementsByTagName('span')[0];
var oUl = oBox.getElementsByTagName('ul')[0];
var aLi = oUl.getElementsByTagName('li');
//简单思路
//[1]点击oDiv时,默认文字为黑色,三角向上,变成文字为#999,三角向下;简化为增加一个show-selectAdd类名;oUl从隐藏变成显示
oDiv.onclick = function(e){
//阻止冒泡
e = e || event;
if(e.stopPropagation){
e.stopPropagation();
}else{
e.cancelBubble = true;
}
oShow.className = 'show-select show-selectAdd';
oUl.style.display = 'block';
}
//[2]点击oUl的li时,oUl从隐藏变成显示,文字和三角恢复到黑色和向上的默认样式;并且文字内容变成当前点击的li的内容
for(var i = 0,len=aLi.length; i < len;i++){
aLi[i].onclick = function(){
oShow.innerHTML = this.innerHTML + '<i></i>';
}
}
//[3]点击box以外的其他部分时,oUl从隐藏变成显示,文字和三角恢复到黑色和向上的默认样式
document.onclick = function(){
this.getElementsByTagName('span')[0].className = 'show-select';
oUl.style.display = 'none';
}
</script>
</body>
</html>
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- Angular Service依赖注入的一个具体例子
- php学习day1
- 在Angular里使用rxjs的异步API - Observable
- 自动化监控Oracle表空间并发送报警
- Angular里的消息(Message)显示
- Angular应用内路由(In App Route)的最佳实践
- Angular应用的路由指令RouterLink
- ctfhub-信息泄泄露_备份文件下载
- Angular In-memory Web API使用介绍
- 攻防世界-php_rce
- 无法添加某个relationship给SAP CRM Product category的一个可能原因
- 记一次DataGuard SWITCHOVER_STATUS 状态为RESOLVABLE GAP的处理
- ABAP数据库表的元数据
- ctfshow-萌新赛
- VC++ libcurl FTP上传客户端程序