js怎么设置select的样式,边框和三角的颜色

如题所述

select属于浏览器内置组件,标准CSS无法调整其样式。

你可以使用div来模拟select。

首先创建一个<div />来模拟下拉框。

<div class="mySelect"></div>

然后在里面加上显示选中值的<div />和模拟三角的<div />以及下拉列表<ul />

<div class="mySelect">
    <div class="mySelectValue"></div>
    <div class="mySelectDropdown"></div>
    <ul class="mySelectOptions"></ul>
</div>

你可以用CSS来设置自己喜欢的样式。

接下来就是用Javascript来控制模拟的下拉框了。(这里为了方便,使用了jQuery)

// 创建临时DOM,内容为模拟的下拉框(其中省略的部分为上面写的html代码)
var $mySelect = $('<div class="mySelect">...</div>');
// 把原来select有的样式复制到模拟的下拉框上
$mySelect.attr('class', $('#select').attr('class'));
$mySelect.attr('style', $('#select').attr('style'));
// 把原来select的选项复制到模拟的下拉框中
$('#select option').each(function () {
    var value = $(this).attr('value'),
        name  = $(this).html();
    $mySelect.find('.mySelectOptions').append('<li class="mySelectOption" data-id="' + value + '">' + name + '</li>');
});
// 在模拟下拉框中设置选中的值
$mySelect.find('.mySelectValue').html($('#select option:selected').html());
// 隐藏原有的select
$('#select').hide();
// 给模拟的下拉框绑定事件
$mySelect
    .on('click', function (e) {
        // 阻止点击事件向上冒泡
        e.stopImmediatePropagation();
        // 反转下拉列表的显示
        $('.mySelectOptions', this).toggle();
        // 给原有的select模拟点击事件
        $('#select').trigger('click');
    })
    .on('click', '.mySelectOption', function (e) {
        // 阻止点击事件向上冒泡
        e.stopImmediatePropagation();
        // 把选中的值显示到模拟的下拉框中
        $mySelect.find('.mySelectValue').html($(this).html());
        // 隐藏下拉列表
        $mySelect.find('.mySelectOptions').hide();
        // 把选中的值给到原来的select中
        $('#select').val($(this).data('id'));
        // 给原来的select模拟change事件
        $('#select').trigger('change');
    });
// 基本功能就到此了。其中可以缓存jQuery对象来优化,还能添加焦点事件,键盘事件等,按自己的需求慢慢修改吧。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-13
给点分,我可以发个现成的给你,兼容各个浏览器哦追问

css不要引图片

js怎么设置select的样式,边框和三角的颜色
select属于浏览器内置组件,标准CSS无法调整其样式。你可以使用div来模拟select。首先创建一个<div \/>来模拟下拉框。<div class="mySelect"><\/div>然后在里面加上显示选中值的<div \/>和模拟三角的<div \/>以及下拉列表<ul \/> <div class="mySelect"> <div class="mySelectValue"><\/div> ...

怎样用 CSS + JS 美化网页中的 select 下拉框
这个可以换种方式实现,首先select的样式每个浏览器都有其默认的样式,需要先去除这些默认样式,其次,select里面的样式诸如箭头,下拉框等等的样式,这里提供一种思路,就是在select的外层添加一个div,对这个div元素设置样式,select元素则是没样式,从而达到一种掩眼法的效果,实现方式如下:<!-- html 布...

js中怎么用select改变div背景颜色
要写select选中事件,根据选中改变背景或者CSS <script src="jquery.min.js"><\/script> <div id="div">这是一个文本框<\/div> <select name="" class="select"> <option>选择颜色<\/option> <option value="red">红色<\/option> <option value="green">绿色<\/option> <option value="yellow"...

select下拉选项option颜色
当然上面的链接里面是直接写div,你也可以用js检查select,生成出需要的div内容。

怎么去掉select边框和小三角,appearance用法
据我所知,select右边的小三角形是windows自带的样式框,你不可以修改,但框的颜色和背景可以修改,就是直接在代码中用内嵌的style控制border和background,如果你要修改不一样的select下拉框,那就用js写一个把。PS:这问题停留几周了没人理...

js 怎么动态设置 option 的selected 选项
通过for循环判断每个选项,一旦满足条件则设置其selected属性为true即可,关键代码:下面给出实例演示:1、HTML结构 2、javascript代码 3、设置效果:如图设置选中项为2,点击按钮后“赵云”即被选中。

如何改变SELECT下拉列表的样式
select { \/*Chrome和Firefox里面的边框是不一样的,所以复写了一下*\/ border: solid 1px #000; \/*很关键:将默认的select选择框样式清除*\/ appearance:none; -moz-appearance:none; -webkit-appearance:none; \/*在选择框的最右侧中间显示小箭头图片*\/ background: url("http:\/\/our...

怎样用css改变下拉框那个三角的样式
CSS设置不了select 那个三角形的样式的。、IE浏览器更是连select的边框什么的都不能设置,如果需要外观很好看的下拉框,建议用js+css实现,此时“小三角形就可以用图片代替”, 再对应鼠标的悬停,离开事件即可达到完美好看的效果。

怎么用js动态 设置select中的某个值为选中值
我们使用javascript实现js动态设置select中的某个值为选中值,操作如下:使用javascript实现:<!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"> <head> <meta ...

css3怎样去掉select中三角箭头的背景
用插件:select2.js 百度搜索那个名字即可,现在基本是最好用的下拉组件。原理就是将原来的select隐藏,用新的div构建一个下拉菜单,遮盖在原来的位置。自己做的话,可以试试在select上覆盖一个div层,用绝对定位。然后把select的透明度opacity写为0.01,不能为0,然后点击那个层,就相当与点击了那个...

相似回答