当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > css美化input file按钮的方法

CSS样式表
CSS教程:制作网页中常用的5个CSS属性
网页制作理论:精确还原设计稿
CSS教程:Firefox浏览器下margin-top问题
CSS教程:li标记在IE下产生间距
CSS实例教程:CSS制作虚线的2种方法
CSS教程:网页中英文字体的设置
根据IE版本不同调用不同CSS样式文件
CSS网页布局:tbody标签与thead和tfoot标签
网页制作技巧:CSS网页布局中文排版心得
网页制作CSS教程:自适应圆角
Css Hack:Pixel Perfect
OOcss教程:认识OOCSS和简单应用OOCSS
网页制作教程:面向对象的CSS应用
CSS写法:不同组合间的优先级及浏览器的支持性
CSS sprite实例教程:li:hover修改密码
利用负边距技术制作自适应宽度布局的网页
WEBJX收集漂亮的大背景网页设计实例
使用一张或两张图片创建大背景网站
CSS教程:CSS选择符的用法和实例
CSS实例:a:hover伪类在IE6下的问题

CSS样式表 中的 css美化input file按钮的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 166 ::
收藏到网摘: n/a

我们在做表单的情况下,input、textarea、button的样式比较容易定义,select和input file的样式难以定义。
input file在系统默认下的外观:

我们最多通过定义input的border来改变系统默认的外观:


如果要让浏览按钮更漂亮一点,我们想定义它的背景颜色,甚至想用背景图片来代替,通过css定义input flie还真是办不到的。偶然看到一篇文章:input file 文件选择框美化 作者是把系统默认的按钮设置透明度为0,再定义一个label标签样式,来覆盖透明掉的按钮。

按照作者的方法,我也试验了一下,代码如下:

<!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 http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>input file的另类做法</title>
<style type="text/css">
<!--
* { font-size:12px}
body { margin:0}
.line { position:relative; float:left; padding:8px 0}
.line span { float:left}
input { border:1px solid #888; vertical-align:middle}
.file { position:absolute; left:90px; top:8px; display:none;filter:alpha(opacity=0);opacity:0}
.file1 { padding:2px 10px; display:block; float:left; background:#FF66CC; color:#fff; z-index:1; margin-left:5px; vertical-align:middle; cursor: pointer}
.inputstyle { width:150px; border:1px solid #888; z-index:99}
-->
</style>
</head>
<body>
<div class="line"> <span>
  <label>上传文件:</label>
  <input name="" type="text" id="viewfile" onmouseout="document.getElementById('upload').style.display='none';" class="inputstyle" />
  </span>
  <label for="unload" onmouseover="document.getElementById('upload').style.display='block';" class="file1">浏览...</label>
  <input type="file" onchange="document.getElementById('viewfile').value=this.value;this.style.display='none';" class="file" id="upload" />
</div>
</body>
</html>

效果:虽然多了很多标签,但这种偷梁换柱的做法还是值得研究。有没有更好、更科学的作法还有待发掘。