我在这里问OP的同一个问题,我厌倦了听人说它不能完成。
世界上最流行的网站之一就是一个完美的例子:Facebook。
在其注册页面(索引页,如果你没有登录)存在下拉出生当天,出生月份,出生年份和性别框。
我已经看到每个'spoofing'下拉框代替div
s的例子,但这不是在这里玩。至少不完全。下拉框完全是跨浏览器的,并且在每个平台上看起来都一样。
这里的,这不是一个div证明,这是IE8在Windows 7:
http://users.on.net/mbywaters/fb.jpg
任何HTML元素都可以在浏览器的视口一样,外面被显示。
显然有一些CSS元素在使用。在Chrome中,您可以填充选择框并提供边框。这并不适用于IE浏览器,所以他们提供了一个div周围,只有存在IE箱:自己
http://users.on.net/mbywaters/fb2.jpg
玩这种形式,你会看到它的行为是完全一样的真正的下拉盒子应该有表现。
我已经辞职自己的事实,必须有一些JavaScript代码调用隐藏选择元素的下拉列表下拉显示。我没有时间来遍历Facebook的JavaScript来搞清楚,但这绝对有办法。
编辑:
看来我的回答有点不成熟。
当我试图做到这一点,我不得不仿效IE8与IE7这个小美女,我忘了我有包括:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
IE8完全显示的垫子,因为它会显示在铬。所以Facebook没有做任何棘手的事情。
所以IE7是问题,我猜。不过,我创建了适合IE7,IE8,Chrome和Firefox 3.6.15(我测试过的唯一一款)的解决方案。
这里是图像:
http://users.on.net/mbywaters/arrow.png
下面是代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<script type="text/javascript" src="jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="jquery-ui-1.8.10.custom.min.js"></script>
<style type="text/css">
.hidden{
padding:5px;
display:inline;
border:1px solid #888888;
font-family:Verdana;
font-size:10pt;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
$('.hidden').focus(function(){
$(this).css('border', '1px solid #73a6fd');
}).blur(function(){
$(this).css('border', '1px solid #888888');
});
});
</script>
<!--[if IE 7]>
<style type="text/css">
.regselectdiv{
position:relative;
display:inline;
padding:5px;
padding-left:6px;
border:0px;
border:1px solid #888888;
float:left;
margin-right:7px;
}
.selectwrap{
position:relative;
border:0px;
overflow:hidden;
}
.arrow{
position:absolute;
width:15px;
height:16px;
background:url('arrow.png');
margin-left:-17px;
border:1px solid #707070;
}
.border{
display:none;
position:absolute;
width:15px;
height:16px;
border:1px solid #3c7fb1;
background:none;
margin-left:-17px;
}
.selectwrap:hover .arrow{
visibility:hidden;
}
.selectwrap:hover .border{
display:inline;
}
.hidden{
margin-top:-2px;
margin-left:-2px;
line-height:5px;
padding:0px;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
$('.hidden').wrap('<div class="regselectdiv"><div class="selectwrap">');
$('.border, .selectwrap').live('mouseleave', function(){
$('.arrow').show();
});
$('.hidden').focus(function(){
$(this).parent().parent().css('border', '1px solid #73a6fd');
}).blur(function(){
$(this).parent().parent().css('border', '1px solid #888888');
});
$('.selectwrap').each(function() {
wrapper($(this));
});
function wrapper(x) {
var arrow = "<div class='border'></div><div class='arrow'></div>";
x.append(arrow);
var height = x.find('select').height();
var width = x.find('select').width();
x.width(width+2);
x.height(height);
}
});
</script>
<![endif]-->
</head>
<body>
<select class='hidden'>
<option>Month:</option>
<option>Jan</option>
</select>
<select class='hidden'>
<option>Day:</option>
<option>1</option>
</select>
<select class='hidden'>
<option>Year:</option>
<option>2011</option>
</select>
</body>
</html>