去掉或者修改 input、select 等表单的【默认样式 】

隐藏input等表单的默认样式的背景:

textarea,select,input{-webkit-appearance: none; -moz-appearance: none; -o-appearance: none; appearance: none;}

让div看起来像按钮:

div
{
appearance:button;
-moz-appearance:button; /* Firefox */
-webkit-appearance:button; /* Safari 和 Chrome */
}

使用css打造自定义select(非模拟)实现原理及样式

点评:使用appearance:none去除select的默认样式,配合使用gradient、background-size,background-position,拼出自定义的样式,大家可以发挥想象力做出绚丽的select 实现原理很简单: 
1,使用appearance:none去除select的默认样式; 
2,配合使用gradient、background-size,background-position,拼出自定义的样式 
我定义的样式和浏览器默认给出的样式没多大差别,主要是简单实现一下,大家可以发挥想象力做出绚丽的select。

实现css如下

  代码如下:

  select{ 
margin: 0; 
padding: 0; 
outline: none; 
height: 25px; 
line-height: 25px; 
width: 120px; 
border: rgb(191, 204, 220) 1px solid; 
border-radius: 3px; 
display: inline-block; 
font: normal 12px/25px "微软雅黑", "SimSun", "宋体", "Arial"; 
background-size: 5px 5px,5px 5px,25px 25px,1px 25px; 
 
background-image: repeating-linear-gradient(225deg,rgb(105,123,149) 0%,rgb(105,123,149) 50%,transparent 50%,transparent 100%), 
repeating-linear-gradient(135deg,rgb(105,123,149) 0%,rgb(105,123,149) 50%,transparent 50%,transparent 100%), 
linear-gradient( #FFFFFF 0%,#F8F9Fd, #EFFAFA 100%), 
repeating-linear-gradient( rgb(191, 204, 220) 0%,rgb(191, 204, 220) 100%); 
background-repeat: no-repeat; 
background-position: 101px 10px,106px 10px,right top,92px top; 
-webkit-appearance: none

更改select样式有如下几种方法:

(1)如果只是为了去掉select的下拉箭头的话,可以用css样式clip:rect(x x x x )来吧select的下拉箭头部分直接截取

掉。但是这种方法存在的问题就是,如果设置了select的border的话,截取就会把border也截去,很是不美观。

(2)还有一种方式应该是css2.0时候用的非常多的,就是利用div+css来模拟select的界面,这种方式的优点就是可

以制作出各种各样非常漂亮的select下拉框,但是缺点就是需要用javascript来实现select的实际功能。

(3)如果在CSS3 下要做一个稍微漂亮一点的select就相对容易了,因为CSS3下增加了border-image属性,可以设

置边框的图片,而且这个属性对于select来说是有很大的用处的,比如下面的这个样式的select:

是不是比系统自带的select样式漂亮很多啊,而且也可以制作各种漂亮的样式,而不需要使用javascript来模拟

select的功能,是不是很好啊!

在使用这种方法来修改select的界面之前需要了解一下border-image.

语法:border-image:url  area type

参数:url        表示的是图片的路径

area     表示的是图片显示的区域,下面用一张图来解释比较方便(懒得画,贴了张别人的图)

例如  border-image: url("bord3.png") 10 15 20 25用图来表示就是下面的这张图了

这个东西有人说是叫九宫格,我也不太清楚是个什么东西,只是用来方便border-image的理解罢了。

不过也需要提醒一句的是虽然border-image: url("bord3.png") 10 15 20 25;的默认单位都是像素px,

但是在实际的使用中是不能带px的,可以使用百分比

type        表示的就是一些图片显示的样式 有三个值:     stretch拉伸(默认值)repeat(重复) round(平铺)

表示的有两个方向:水平和垂直(顺序不要颠倒)。

eg:  border-image: url("bord3.png") 10 15 20 25 stretch stretch;表示的是水平和垂直方向都为拉伸

关于border-image的理解我也有文章做介绍。

具体实现方法:

提供一张用于border-image的图片bord3.png

<select  id=‘sel‘>

<option>选项一</option> <option>选项二</option><option>选项三</option>

</select>

#sel{

-webkit-border-radius:5px ; -moz-border-radius:5px;

border-width:0px 21px 0px 5px;

-webkit-border-image:url("bord3.png") 0 21 0 5;  -moz-border-image:url("bord3.png") 0 21 0 5px;

}

(4)还有一种方法也可以修改select的样式,但是仍然保留select的功能。其实这种方法也是很巧妙的,他的原理就是

在一个链接里加入一个select下拉列表,然后设置select为透明即可,将select以透明的形式放在链接中,在点击链接

的同时就触发了select的点击。

实现方式:

<a href="javascript:void(0)"  class="selOuter">

<select  class="sel">

<option >选项一</option><option>选项二</option>

</select>

</a>

.selOuter{position:relative;width:100px;height:35px;background:url("bord3.png");display:inline-block;}

.selOuter select{top:0px;left:0px;position:absolute;width:100px;height:35px;opacity:0;}

这里必不可少的就是设置外层链接a样式position:relative;因为只有外层设置了relative之后,里层的select才能以外层为基准去定位,而不是以body来定位。select必须设置的是position:absolute;top:0px;left:0px;主要的目的还是让select填充满

链接的整个区域,设置display:inline-block的目的是为了设置它的宽度,否则在非标准的状态下是不能给行内元素设置宽度和高度的。

时间: 2024-10-09 08:38:05

去掉或者修改 input、select 等表单的【默认样式 】的相关文章

前端开发入门到实战:css实现修改浏览器自动填充表单的默认样式

当表单中存在input[password]的时候,采用submit方式提交.就会触发浏览器自动填充表单.比如chrome自动填充后,淡×××输入框代替了背景样式,看起来有些怪异. ?那么如何通过css实现取消浏览器自动填充表单的默认样式呢? 解决方法一: 当input文本框是纯色背景的,可以对input:-webkit-autofill使用足够大的纯色内阴影来覆盖input输入框的×××背景:如: input:-webkit-autofill { -webkit-box-shadow: 0 0

web前端入门到实战:css实现修改浏览器自动填充表单的默认样式

当表单中存在input[password]的时候,采用submit方式提交.就会触发浏览器自动填充表单.比如chrome自动填充后,淡慌色输入框代替了背景样式,看起来有些怪异. 那么如何通过css实现取消浏览器自动填充表单的默认样式呢? 解决方法一: 当input文本框是纯色背景的,可以对input:-webkit-autofill使用足够大的纯色内阴影来覆盖input输入框的慌色背景:如: web前端开发学习Q-q-u-n: 767273102 ,分享学习的方法和需要注意的小细节,不停更新最新

css - 表单元素默认样式美化 - 单选框

单选框 HTML代码 样式 .radio input{ visibility: hidden;}.radio label{ position: relative;}.radio label:after{ content: "";/*必须设置*/ display: inline-block; width: 20px; height: 20px; border: 1px solid #5dbd5d; position: absolute; top: 0px; left: -32px; bo

html表单输入框css样式美化特效源代码下载

html表单输入框css样式美化源代码,响应鼠标动作 原文:html表单输入框css样式美化特效源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463335926784.htm 源代码截图:

关于去除input type=&#39;file&#39;改变组件的默认样式换成自己需要的样式的解决方案

在工作中时常会遇到如需要上传功能的按钮,而不像需要系统默认的样式时候,可以采取以下的解决方案: <img onclick="getElementById('file').click()" style="cursor:pointer;" title="点击添加图片" alt="点击添加图片" src="sc.png"><!--用来替换按钮的图片 --> <input type=&

HTML 5 服务器发送事件、Input 类型、表单元素、表单属性

HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新. Server-Sent 事件 - 单向消息传递 Server-Sent 事件指的是网页自动获取来自服务器的更新. 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新.通过服务器发送事件,更新能够自动到达. 例子:Facebook/Twitter 更新.估价更新.新的博文.赛事结果等. 浏览器支持 所有主流浏览器均支持服务器发送事件,除了 Internet Explorer. 接收 Server

.NET开源工作流RoadFlow-Bug修改-1.8.2表单验证时ueditor编辑非空验证无效

RoadFlow生成的表单,Ueditor编辑器不能进行非空验证的BUG修改: 1.修改控制器:WorkFlowFormDesignerController红框处: 2.修改js文件:Scripts/roadui.init.js 3.修改文件:Scripts/FlowRun/Forms/common.js 在这个Case后面增加: case "flow_html": if (filedshow == 0) { $control.html(initValue); } else if (f

jquery attr处理checkbox / select 等表单元素时的坑

先上html结构 <body> <form action=""> <input type="checkbox" id="checkedAll">全选/全不选<br> <input type="checkbox" name="items" value="足球">足球 <input type="checkbox&qu

前端html表单与css样式

h2 { background-color: green } 1,from标签 from标签的功能是向服务器传输数据,实现用户交互的重要标签. from标签的具体使用: input标签使用示例: <from action="" method="post"> <p>姓名:<input type="text" name="names"> </p> <p>用户名:<i