我试图根据我的个人喜好设置文件上传按钮的样式,但是如果没有JS,我找不到任何真正可靠的方法来实现此目的。我确实找到了与此主题有关的另外两个问题,但是那里的答案要么涉及JavaScript,要么建议使用Quirksmode的方法。
我使用Quirksmode方法的主要问题是文件按钮仍将具有浏览器定义的尺寸,因此它不会自动调整为位于其下方的按钮。我已经基于它编写了一些代码,但是它只会占用文件按钮通常会占用的空间,因此它根本不会像我想要的那样填满父div。
HTML:
<div class="myLabel">
<input type="file"/>
<span>My Label</span>
</div>
CSS:
.myLabel {
position: relative;
}
.myLabel input {
position: absolute;
z-index: 2;
opacity: 0;
width: 100%;
height: 100%;
}
演示了这种方法是多么有缺陷。在Chrome中,单击!!
第二个演示按钮下方的按钮将始终打开文件对话框,但是在所有其他浏览器中,文件按钮也不会占用按钮的正确区域。
是否有更可靠的方式来设置文件上传按钮的样式,而不使用任何JavaScript,并且最好使用尽可能少的“
hacky”编码(因为hack通常会带来其他问题,例如小提琴中的问题)?
我发布这个是因为(令我惊讶)没有其他地方可以推荐这个。
有一种非常简单的方法来执行此操作,而不会限制您使用浏览器定义的输入尺寸。只需<label>
在隐藏文件上传按钮周围使用标记即可。与通过webkit的内置样式1]允许的样式相比,这提供了更大的样式自由。
制作label标签的确切目的是将其上的所有单击事件定向到子输入[2],因此使用该标签,您将不再需要任何JavaScript即可将click事件定向到输入按钮。您将使用类似以下的内容:
label.myLabel input[type="file"] {
position:absolute;
top: -1000px;
}
/***** Example custom styling *****/
.myLabel {
border: 2px solid #AAA;
border-radius: 4px;
padding: 2px 5px;
margin: 2px;
background: #DDD;
display: inline-block;
}
.myLabel:hover {
background: #CCC;
}
.myLabel:active {
background: #CCF;
}
.myLabel :invalid + span {
color: #A44;
}
.myLabel :valid + span {
color: #4A4;
}
<label class="myLabel">
<input type="file" required/>
<span>My Label</span>
</label>
我使用了固定的位置来隐藏输入,以使其即使在较旧版本的Internet Explorer(模拟IE8-拒绝在a
visibility:hidden
或display:none
文件输入中使用)中也能正常工作。我已经在模拟IE7及更高版本中进行了测试,并且效果很好。
<button>
s内部<label>
标签,因此您必须自己定义按钮的样式。对我来说,这是这种方法的唯一缺点。for
定义了属性,则其值将用于触发输入,其输入与上id
的for
属性相同<label>
。本文向大家介绍跨浏览器拖放HTML文件上传?,包括了跨浏览器拖放HTML文件上传?的使用技巧和注意事项,需要的朋友参考一下 对于跨浏览器的HTML File Uploader,请使用FileDrop。它几乎可以在所有现代Web浏览器上使用。 根据官方规范- FileDrop是一个独立的跨浏览器,用于HTML5,旧版,AJAX,拖放,JavaScript文件上传
问题内容: 您如何确定用户是否按下浏览器中的“后退”按钮? 您如何使用系统在单页Web应用程序内强制使用页内后退按钮? 到底为什么浏览器后退按钮不触发自己的事件!? 问题答案: (注意:根据Sharky的反馈,我提供了用于检测退格的代码) 因此,我经常在SO上看到这些问题,并且最近遇到了我自己控制后退按钮功能的问题。在为我的应用程序寻找最佳解决方案(带哈希导航的单页)几天后,我提出了一个简单的,跨
在Chrome浏览器插件里,对网页实现自动上传文件的问题。 页面里的上传按钮 插件里的js代码 这样能唤起上传文件选择弹框,再手动选择文件是没问题。 但是想实现自动化,不要人工干预,有什么办法? 模拟 输入、点击 操作没有问题,这个上传整不会了。
问题内容: 我试图获取传递给JOptionPane的自定义按钮返回的值。但是,我通过的按钮根本不返回任何值。仅当按下退出按钮时,才返回-1的值。我需要这样做,因为我正在更改启用或禁用的按钮的属性。我假设我需要按钮以某种方式将某些信息返回给JOptionPane。任何想法? Nb这与我以前的问题有关-JOptionPane灰色输出一个按钮 我尝试像您说的那样设置按钮的值,但是它们从不返回OK或CAN
本文向大家介绍如何自定义radio按钮的样式相关面试题,主要包含被问及如何自定义radio按钮的样式时的应答技巧和注意事项,需要的朋友参考一下 选择器 input[type=“radio”] 现在几乎不用原生的radio,一是原生样式改成设计稿的样子太浪费时间,二是不同浏览器对于原生radio的展示还不一样。 基于状态驱动的思想,用自定义按钮或其他元素来替代radio,很容易实现,也能保证浏览器兼
我正在开发一个客户端音乐播放器,并正在寻找一种方法来保存与mp3数据完整的播放列表。 localStorage localStorage的5mb限制排除了该选项。我想知道还有什么其他选项。 DataURIs我读过DataURIs,例如,在使用data:URI时,有没有办法指定建议的文件名?和跨浏览器另存为。txt,但不建议默认文件名,尤其是缺乏IE支持,这些都是破坏交易的因素。 IndexedDB