首页前端开发HTMLHTML中文件上传时使用的元素的样式自定义

HTML中文件上传时使用的元素的样式自定义

时间2024-01-27 13:54:03发布访客分类HTML浏览659
导读:收集整理的这篇文章主要介绍了HTML中文件上传时使用的<input type="file">元素的样式自定义,觉得挺不错的,现在分享给大家,也给大家做个参考。 Web页面中,在需要上传文件时基本都会用到<inpu...
收集整理的这篇文章主要介绍了HTML中文件上传时使用的input type="file"> 元素的样式自定义,觉得挺不错的,现在分享给大家,也给大家做个参考。

Web页面中,在需要上传文件时基本都会用到input tyPE="file"> 元素,它的默认样式:

chrome下:

IE下:

不管是上面哪种,样式都比较简单,和很多网页的风格都不太协调。

根据用户的需求,设计风格,改变其显示样式的场合就比较多了。

如果,要像下面一样做一个bootstrap风格的上传按钮该如何实现。

搭建上传按钮所需的基本元素


复制代码代码如下: span> span> 上传/span> input type="file"> /span>

效果(chrome):

现在看到的分两行显示。

外围之所以没有换成div,是因为在IE7-浏览器中,只要不是设成inline,它的宽度全都会撑开到能撑到的宽度。如果设成inline,那元素的宽度就无法调整,所以这里用span然后设成inline-block能解决这样的问题。

增加样式将两行变成一行


复制代码代码如下: span"> span> 上传/span> input type="file"> /span>

css:


复制代码代码如下: .fileinput-button { posITion: relative; display: inline-block; } .fileinput-button input{ position: absolute; right: 0px; top: 0px; }

效果:

默认是没有浅蓝色边框,只有鼠标去点击后,才会显示,这里显示出来是为了看得清楚。

通过将外围的span设成display:relative,将input设成display:absolute的方式让他们都脱离文档流。

通过将input限定在外围的span中进行绝对定位的方式让本来两行显示的变成一行显示。

实际上这里已经overflow了,真正的宽度是“上传”文字的宽度,修改fileinput-button样式增加overflow: hidden


复制代码代码如下: .fileinput-button { position: relative; display: inline-block; overflow: hidden; }

效果:

很有意思,能看到上边后右边的蓝色边框了吧,其实就是把左边和下边的溢出部分给隐藏了。

这时候用鼠标去点击“上传”两个字实际上是点在input上,能够显示“打开”对话框,因为显示层级上input要比“上传”更靠近用户。

注意input定位中的right,为什么不用left定位。

当我们改成left后。

效果(chrome):

效果(IE):

在chrome下input元素中的选择按钮露出来,但是没关系,可以通过后面的设透明的方式把它透明掉。

但是在IE下确是会把输入框露出来,关键是鼠标移到输入框上时,指针会变成输入状态,这个就很没法处理了。

通过right的定位方式把输入框移到左边去的方式,可以在IE下回避出现鼠标指针变成输入态的情况。

透明input元素

css:


复制代码代码如下: .fileinput-button { position: relative; display: inline-block; overflow: hidden; } .fileinput-button input{ position: absolute; left: 0px; top: 0px; opacity: 0; -ms-filter: 'alpha(opacity=0)'; }

效果:

input完全不见了踪影,点击“上传”依然有效。

可以支持ie8+。

引入bootstrap,并添加按钮样式

head中增加外部css和js的引用。


复制代码代码如下: link rel="stylesheet" href="bootstrap/bootstrap.css"> link rel="stylesheet" href="bootstrap/bootstrap-theme.css"> script src="bootstrap/jquery-1.10.2.js"> /script> script src="bootstrap/bootstrap.js"> /script>

增加按钮样式。


复制代码代码如下: span> span> 上传/span> input type="file"> /span>

效果:

解决大小问题

如果为fileinput-button样式增加width:100px,将外围的span设成宽100px,会发现点击下部是没有反应的,原因就是input是默认大小,无法覆盖下部。

可以通过为input设置一个很大的字号将其撑大的方式来解决覆盖问题,这里就设个200px。


复制代码代码如下: .fileinput-button input{ position:absolute; right: 0px; top:0px; opacity: 0; -ms-filter: 'alpha(opacity=0)'; font-Size: 200px; }

这样就能解决覆盖问题。

完成。

参考:jQuery-File-Upload

如果是要兼容IE7-可以参考jQuery-File-Upload中的写法。

代码:

XML/HTML Code复制内容到剪贴板
  1. !DOCTYPE html>   
  2. html>   
  3. head>   
  4.     title> /title>   
  5.     meta http-equiv="Content-Type" content="text/html; charset=utf-8">   
  6.     link rel="stylesheet" href="bootstrap/bootstrap.css">   
  7.     link rel="stylesheet" href="bootstrap/bootstrap-theme.css">   
  8.     script src="bootstrap/jquery-1.10.2.js"> /script>   
  9.     script src="bootstrap/bootstrap.js"> /script>   
  10.     style>   
  11.         .fileinput-button {   
  12.             position: relative;   
  13.             display: inline-block;   
  14.             overflow: hidden;   
  15.         }   
  16.         .fileinput-button input{   
  17.             position:absolute;   
  18.             right: 0px;   
  19.             top: 0px;   
  20.             opacity: 0;   
  21.             -ms-filter: 'alpha(opacity=0)';   
  22.             font-size: 200px;   
  23.         }   
  24.     /style>   
  25. /head>   
  26. body style="padding: 10px">   
  27.     div align="center">   
  28.         span class="BTn btn-success fileinput-button">   
  29.             span> 上传/span>   
  30.             input type="file">   
  31.         /span>   
  32.     /div>   
  33. /body>   
  34. /html>   

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

fileinputtype

若转载请注明出处: HTML中文件上传时使用的元素的样式自定义
本文地址: https://pptw.com/jishu/588286.html
HTML 隐藏滚动条和去除滚动条的方法 Html/Css(新手入门第一篇必看攻略)

游客 回复需填写必要信息