IE8改变文件选择按钮的默认样式

我们知道如果使用原生HTML的file组件时,其默认效果是这样的:

这个效果看起来实在是太丑了,那么我们能不能更改一下它的呈现形式呢? 答案是可以的.

我们知道label标签的作用是:当用户点击label标签中的文本时,就会触发label标签for属性中指定的控件(for属性指定了控件id),例如

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<label for="username">用户名</label>
<input id="username" type="text">
</body>
</html>

这个时候,我们点击"用户名"三个字时,就会让input输入框获得焦点,

同理,如果我们把label的for属性指定成input 的id 那么我们是不是就能唤醒文件上传功能了?答案是肯定的

 

既然<input type='file'/>的功能label也能做,那么我们将input隐藏,给label写样式就好了,隐藏input也不会影响其它元素的布局,因为它不在文档流中继续占据位置. 代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    input[type='file'] {
    display: none;
    }

    label {
    padding: 3px;
    background-color: black;
    color: #ffffff;
    cursor: pointer;
    font-size: 12px;
    }
    </style>
</head>
<body>
<label for="upload">上传文件</label>
<input id="upload" type="file">
</body>
</html>

 

另外,强调一个基本的知识点,行内元素仅仅不支持垂直方向的margin,而padding不管是哪个方向,它都是支持的,所以我们不用将label设置成 display:inline-block 因为在这里我们是通过设置padding 让文字在label中水平垂直居中的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值