浅尝模拟下拉框select
前言
本文主要模拟下拉框select控件
详情请戳参考页面:梦幻西游手游武神坛
模拟select主要实现目标
- 1.点击下拉框区域,下拉列表没显示则显示,有显示则收起来,下拉箭头样式有所改变;
- 2.鼠标hover下拉列表上面有对应的交互;
- 3.点击选择下拉列表的值,收起下拉列表,并且在下拉框区域显示选中的值;
- 4.有多个下拉框的时候,点击其它下拉框区域,其它兄弟下拉框没收起的先收起,同时展开当前下拉菜单;
- 5.点击窗口空白处,有下拉菜单没收起来的也收起来。
实现步骤
以下是实现的html代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | < div class = "select-wrap j-select-area" > < div class = "select-text list-hide" id = "videoPeriodTxt" >第一赛季</ div > < ul class = "select-item" id = "videoPeriod" > < li data-type = "video-period" data-value = "1" >第一赛季</ li > < li data-type = "video-period" data-value = "2" >第二赛季</ li > </ ul > </ div > < div class = "select-wrap j-select-area" > < div class = "select-text list-hide" >组别</ div > < ul class = "select-item" > < li data-type = "video-group" data-value = "" >组别</ li > < li data-type = "video-group" data-value = "1" >甲组</ li > < li data-type = "video-group" data-value = "2" >乙组</ li > < li data-type = "video-group" data-value = "3" >丙组</ li > </ ul > </ div > |
以下是css样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | .select-wrap{ width : 108px ; height : 38px ; line-height : 38px ; float : left ; margin : 0 5px ; font-family : "Microsoft YaHei" ; text-align : left ; color : #eccc6b ; cursor : pointer ; position : relative ; user-select: none ;//设置元素和子元素的文本都不可选 -moz-user-select: none ; -webkit-user-select: none ; z-index : 9999 ; .select-text{ text-indent :. 2em ; background : url (../img/select.jpg) #35363a ; height : 38px ; &.list- hide { background-position : 0 0 ;//下拉框隐藏时箭头向下 } &.list- show { background-position : 0 -38px ;//下拉框显示时箭头向下 } } .select-item{ z-index : 9999 ; position : absolute ; width : 100% ; left : -1px ; top : 38px ; border : 1px solid #eccc6b ; display : none ; li{ height : 38px ; text-indent : 1.2em ; background : #35363a ; &:hover{ background : #eccc6b ; color : #fff ; } } } } |
以下是js代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | var changeSelectFun = function (){ $( '.j-select-area' ).click( function (e){ var $e = $(e.target), $ this = $( this ), $sltlist = $ this .children( '.select-item' ), $siblingsltlist=$ this .siblings().children( ".select-item" ); //阻止事件冒泡兼容IE e.stopPropagation() ? e.stopPropagation() : (e.cancelBubble = true ); //点击区域是下拉框 if ($e.is( '.select-text' )){ //其它兄弟下拉框没收起来就收起来 if ($siblingsltlist.is( ":visible" )){$siblingsltlist.slideUp(200).prev().removeClass( 'list-show' )}; if ($sltlist.is( ":visible" )){ $sltlist.slideUp(200).prev().removeClass( 'list-show' ) } else { $sltlist.slideDown(200).prev().addClass( 'list-show' ); } } //点击区域是下拉列表,则进行选值以及收起下拉列表 if ($e.is( 'li[data-value]' )){ $sltlist.slideUp(200).prev().removeClass( 'list-show' ); $ this .children( '.select-text' ).html($e.html()); //do something } }) //点击区域是窗口,要收起有显示的下拉框 $(document).bind( 'click' , function (){ var $sltlistall = $( '.select-item' ); if ($sltlistall.is( ":visible" )){ $sltlistall.slideUp(200).prev().removeClass( 'list-show' ); } }) } changeSelectFun(); |
感谢收看~
手机阅读请扫描下方二维码:
上一篇: 模仿网易新闻首页的滑屏切换
下一篇:关于ajax异步获取服务器信息乱码情况
12345678

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
12345678

expr 918486854 + 922810125
12345678
|expr 833570398 + 853245570
12345678

12345678

12345678

1

1

1

1

1

1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1