我正在使用jquery从文本文件填充下拉菜单,它工作正常。但在视觉上,我希望它看起来与众不同。
我的下拉列表是div。我想做的是让div本身可以点击,这样当你点击它时,会弹出下拉菜单选项。选择选项后,div的标签将设置为所选选项的文本。
是否有某种方法可以隐藏下拉菜单但仍可正常使用?
答案 0 :(得分:6)
如果我理解正确,你想要这个。 点击此处查看DEMO。
<强> HTML 强>
<div id="dd" class="wrapper-dropdown-2">Sign in with
<ul class="dropdown">
<li><a href="#"><i class="icon-twitter icon-large"></i>Twitter</a></li>
<li><a href="#"><i class="icon-github icon-large"></i>Github</a></li>
<li><a href="#"><i class="icon-facebook icon-large"></i>Facebook</a></li>
</ul>
</div>
<强> CSS 强>
*,*:after,*:before {
box-sizing: border-box;
}
.wrapper-dropdown-2 {
position: relative;
width: 200px;
margin: 0 auto;
padding: 10px 15px;
/* Styles */
background: #fff;
border-left: 5px solid grey;
cursor: pointer;
outline: none;
}
.wrapper-dropdown-2:after {
content: "";
width: 0;
height: 0;
position: absolute;
right: 16px;
top: 50%;
margin-top: -3px;
border-width: 6px 6px 0 6px;
border-style: solid;
border-color: grey transparent;
}
.wrapper-dropdown-2 .dropdown {
/* Size & position */
position: absolute;
top: 60%;
left: -45px;
right: 0px;
/* Styles */
background: white;
transition: all 0.3s ease-out;
list-style: none;
/* Hiding */
opacity: 0;
pointer-events: none;
}
.wrapper-dropdown-2 .dropdown li a {
display: block;
text-decoration: none;
color: #333;
border-left: 5px solid;
padding: 10px;
transition: all 0.3s ease-out;
}
.wrapper-dropdown-2 .dropdown li:nth-child(1) a {
border-left-color: #00ACED;
}
.wrapper-dropdown-2 .dropdown li:nth-child(2) a {
border-left-color: #4183C4;
}
.wrapper-dropdown-2 .dropdown li:nth-child(3) a {
border-left-color: #3B5998;
}
.wrapper-dropdown-2 .dropdown li i {
margin-right: 5px;
color: inherit;
vertical-align: middle;
}
/* Hover state */
.wrapper-dropdown-2 .dropdown li:hover a {
color: grey;
background-color: darkgrey;
}
.wrapper-dropdown-2.active:after {
border-width: 0 6px 6px 6px;
}
.wrapper-dropdown-2.active .dropdown {
opacity: 1;
pointer-events: auto;
}
<强>的JavaScript 强>
function DropDown(el) {
this.dd = el;
this.initEvents();
}
DropDown.prototype = {
initEvents : function() {
var obj = this;
obj.dd.on('click', function(event){
$(this).toggleClass('active');
event.stopPropagation();
});
}
}
$(function() {
var dd = new DropDown( $('#dd') );
$(document).click(function() {
$('.wrapper-dropdown-2').removeClass('active');
});
});
答案 1 :(得分:1)
这里看看:http://jsfiddle.net/4Zw32/
基本上你可以通过搜索选择了类的div来选择选择哪个div,你可以指定data属性来获得附加值。
<强>的CSS 强>
* { margin: 0; padding: 0; }
.sel {
color:white;
width: 250px;
min-height: 40px;
box-sizing: border-box;
background-color: #55E6FA;
overflow: hidden;
}
.txt { padding: 10px; }
.selected { background-color: #31A9B9; }
.hide { display: none; }
.sel .options div:hover { background-color: #31A9B9; }
.sel .options {
width: 250px;
background-color: #66f7FB;
}
.sel .options div {
transition: all 0.2s ease-out;
padding: 10px;
}
<强> Jquery的强>
var sel = $('.sel'),
txt = $('.txt'),
options = $('.options');
sel.click(function (e) {
e.stopPropagation();
options.show();
});
$('body').click(function (e) {
options.hide();
});
options.children('div').click(function (e) {
e.stopPropagation();
txt.text($(this).text());
$(this).addClass('selected').siblings('div').removeClass('selected');
options.hide();
});