• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > 自定义input[type=”file”]的样式

自定义input[type=”file”]的样式

作者:front_end_fan 字体:[增加 减小] 来源:互联网 时间:2017-09-04

本文主要包含file,样式等相关知识,front_end_fan希望在学习及工作中可以帮助到您

1. chrome:

2. firefox:

3. opera:

4. ie:

5. edge:

另外,当我们规定 input[type=”file”] 的高度,并把它的行高设置成与其高度相等后,chrome中难看的样式出现了:


“未选择任何文件”这一行并没有竖直居中。

似乎在 firefox 中好看一些,嗯,我比较喜欢用 firefox。但是这些浏览器中的表现不一致,我们必须做兼容处理。

思路:

1. 自定义与其中一个浏览器表现类似的样式,将其放在下层;

2. 将浏览器本身的表现出来的样式“隐藏掉”, opacity:  0; 置于上层,这样我们点击的才是 input[type=”file”] 响应的事件;

3. 选择文件或改变文件后,改变显示 file 的值。

代码:

<form action="" class="activityForm">
  <div class="file">
    <label for="file">文件:</label>
    <div class="userdefined-file">
      <input type="text" name="userdefinedFile" id="userdefinedFile" value="未选择任何文件">
      <button type="button">上传</button>
    </div>
    <input type="file" name="file" id="file">            
  </div>
</form>
.file {
  position: relative;
  height: 40px;
  line-height: 40px;
}
.file label {
  display: inline-block;
}
.userdefined-file {
  position: absolute;
  top: 0;
  left: 60px;
  z-index: 2;
  width: 300px;
  height: 40px;
  line-height: 40px;
  font-size: 0;  /*应对子元素为 inline-block 引起的外边距*/
}
.userdefined-file input[type="text"] {
  display: inline-block;
  vertical-align: middle;
  padding-right: 14px;
  padding-left: 14px;
  width: 220px;
  box-sizing: border-box;
  border: 1px solid #ccc;
  height: 40px;
  line-height: 40px;
  font-size: 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.userdefined-file button {
  display: inline-block;
  vertical-align: middle;
  width: 80px;
  text-align: center;
  height: 40px;
  line-height: 40px;
  font-size: 14px;
  background-color: #f54;
  border: none;
  color: #fff;
  cursor: pointer;
}
.file input[type="file"] {
  position: absolute;
  top: 0;
  left: 60px;
  z-index: 3;
  opacity: 0;
  width: 300px;
  height: 40px;
  line-height: 40px;
  cursor: pointer;
}
document.getElementById("file").onchange = function() {
    document.getElementById("userdefinedFile").value = document.getElementById("file").value;
}

这样处理后,就在各个浏览器中表现一致了:

1. 未选择任何文件时,在 chrome 中:

2. 在选择文件后,在 firefox 中:

 

  

您可能想查找下面的文章:

  • CSS美化 input type=file 兼容各个浏览器
  • 自定义input[type=”file”]的样式

相关文章

  • 2017-08-06怎样使div中的文字在div的底部显示实现样式
  • 2017-08-06IE8/9 使用text-overflow: ellipsis 做块元素超长内容变省略号的问题
  • 2017-08-06设计稿进行页面制作的流程和注意事项
  • 2017-08-06两种方法实现用CSS切割图片只取图片中一部分
  • 2017-08-06仿网易nec首页动画效果(实现原理+代码)
  • 2017-08-06网页添加CSS样式表的四种方法
  • 2017-08-06浏览器hack总结 详细的浏览器兼容性的快速解决方法
  • 2017-08-06CSS实现的灰色下拉菜单效果代码
  • 2017-08-06CSS实现水平居中的4种思路简要概述
  • 2017-08-06CSS position:absolute全面了解

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
    • 提升网页加载速度和体验以及图片优化的方法
    • 一句代码解决css ie8兼容性问题
    • FireFox正常 IE错位的绝对定位元素
    • 浅析CSS 属性之中经常出现的百分比
    • ie8 body overflow hidden 无效的解决方法
    • IE bug input 外层浮动的边距问题
    • ul li内容宽度的问题的解决方案
    • CSS 清除浮动方法大全
    • 纯css实现的下拉菜单只有边框底纹用到图片

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有