怎样用 CSS + JS 美化网页中的 select 下拉框

如题所述

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

<!-- html 布局 -->
<div id="selectStyle">
 <select id="select">
  <option>option 1</option>
  <option>option 2</option>
  <option>option 3</option>
  <option>option 4</option>
  <option>option 5</option>
 </select>
</div>

首先要去掉 #select 的默认样式:

/* 去掉默认样式,设置新的样式 */
#select{
display:block;
width:100%;
height:100%;
box-sizing:border-box;
background:none;
border:1px solid #222;
outline:none;
-webkit-appearance:none;
padding:0 5px;
line-height:inherit;
color:inherit;
cursor:default;
font-size:14px;
position:relative;
z-index:3;
}
#select option{
color:#222;
}
#select option:hover{
color:#fff;
}
#select option:checked{
background:#535353;
color:#fff; 
}

然后在外层div#selectStyle设置自定义样式

#selectStyle{
display:block;
margin:0 auto;
overflow:hidden;
height:30px;
width:240px;
border-radius:0;
background:#535353 url("箭头图片地址") right center no-repeat;
background-size:auto 80%;
color:#fff;
line-height:2;
/* 如果不想加图片,
   则可以设置一个自己的三角形样式,
   如下的自定义方式,
   见代码1 */
position:relative;
z-index:1;
}
/* 代码1 */
#selectStyle:before{
position:absolute;
z-index:1;
top:50%;
right:10px;
margin-top:-2.5px;
display:block;
width:0;
height:0;
border-style:solid;
border-width:5px 5px 0 5px;
border-color:#fff transparent transparent transparent;
content:"";
}
/* 代码1 */
#selectStyle:after{
position:absolute;
z-index:1;
top:50%;
right:10px;
margin-top:-3.5px;
display:block;
width:0;
height:0;
border-style:solid;
border-width:5px 5px 0 5px;
border-color:#535353 transparent transparent transparent;
content:"";
}

以上就是自定义select样式的方法;

同时也可以完全不要select这个元素使用div+css来自定义一个跟select一样效果的下拉框(需要Javascript辅助)。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-30

1、首先我们来看一下效果图,横向下拉菜单。

2、接下来我们看一下w3c的菜单,和小编的菜单对比一下。两者内容相同,但w3c的菜单不支持下拉,缺乏动态效果,显得死板。选中效果也不明显。不过他的网页是框架式结构,菜单相对来说还是导向性很明确的。而且将信息分成几大块,每大块有分为几小块,这样的排版很整齐,也简洁。

3、代码分析,这是代码中唯一的一点js,作用是更改下面菜单的class,配合样式表(CSS)可以达到动态效果,比如下拉菜单的下拉功能、选中显示,都是这样做到的。可以说,整个菜单主要部分都是DIV+CSS。而不是JS

4、这是所有的css部分,通过css的继承属性,来让代码达到利用率最大化。通过子类覆盖父类的属性,来让总属性利用率增加,但缺点是代码结构模糊,对新手来说难度较大。

5、接下来是HTML,这里给出两段结构,也就是两列下拉菜单,其他的格式是一样的,就不在全部截图了。链接我涂掉了,百度经验不让带链接。菜单链接你做的肯定跟我不一样,看链接也没用。如图,那个id:nav十分重要,不能丢!!它相当于整个div容器,虽然标签不是div,但思想一样。

6、最后再来看一下效果图吧!

本回答被网友采纳

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

怎样用 CSS + JS 美化网页中的 select 下拉框?
1、首先我们来看一下效果图,横向下拉菜单。2、接下来我们看一下w3c的菜单,和小编的菜单对比一下。两者内容相同,但w3c的菜单不支持下拉,缺乏动态效果,显得死板。选中效果也不明显。不过他的网页是框架式结构,菜单相对来说还是导向性很明确的。而且将信息分成几大块,每大块有分为几小块,这样的排版...

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

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

用css改变下拉框样式
解析:例一:<select name=select size="1" class="page_speeder_1165166956"> <option value="2" selected>yesky<\/option> <option value="1">redidea<\/option> <\/select> 查一下手册,还有好多项可以设置.例二:<> <head> <style> .box { border: 1px solid #C0C0C0;width: 182...

如何改变SELECT下拉列表的样式
用下列CSS就可以解决,原理是将浏览器默认的下拉框样式清除,然后应用上自己的,再附一张向右对齐小箭头的图片即可。select { \/*Chrome和Firefox里面的边框是不一样的,所以复写了一下*\/ border: solid 1px #000; \/*很关键:将默认的select选择框样式清除*\/ appearance:none; -moz-appearance...

下拉列表css(下拉列表内容怎么设置)
CSS网页下拉列表大小怎么调整1、找到下拉菜单的css属性,调节width属性值,越大就越宽。2、浏览器当前列表页面按F12进入调试模式。点击有个箭头图标查看页面元素-划到下来列表你要修改样式的位置-会显示当前样式的class名与相关属性设置的数值信息。插件bootstrap-select如果有引用的CSS文件去里搜索找到的CLASS...

如何用CSS美化输入框的方法
一般的美化工作可以直接通过使用CSS完成,方法也十分简单,如下:1、首先制作一张输入框的背景图,如上图所示。2、添加按钮的Html代码:<input type=button class=Selectbg3、然后用css代码将它定义:<stylebody{font-size:12px; }.Selectbg{border:none;width:150px; height:20px; background-...

CSS怎么去掉select的下拉箭头样式
css是无法去掉默认select的下拉箭头的,除非自己用div+js+css实现自定义select控件。1、定义html中的select标签 <form> <a class="btn-select" id="btn_select"> <span class="cur-select">请选择<\/span> <select> <option>选项一<\/option> <option>选项二<\/option> <option>选项三<\/option> ...

CSS怎么去掉select的下拉箭头样式
select一直是html里的怪胎,很多属性不受css控制的,所以才会出现很多div+css的下拉插件,如果项目需要 非要用元素select的话,可以在select上做一个小小的遮罩,通过定位到下拉箭头,挡住后面的箭头就行了。纯手打,望采纳!

相似回答