我是CSS的新手,希望有人可以帮助我。
我正在尝试将简单的自定义样式应用于文件上传按钮(作为 HTML表单的一部分)以使其显示类似于我页面上的其他按钮,并获得类似的跨浏览器外观。
到目前为止,我有以下内容按预期工作。 我现在唯一的问题是我希望按钮占据其父div的全宽(在我的情况下,这将跨越页面的9/12('col-9'))。
我尝试将width: 100%;
添加到CSS中,但此按钮不再起作用。
我的HTML:
<div class="col-3 frmCaption">Attachments:</div>
<div class="col-9">
<div class="customUpload btnUpload btnM">
<span>Upload files</span>
<input type="file" class="upload" />
</div>
</div>
我的CSS:
.btnDefault, .btnUpload {
background-color: #FFFFFF;
border: 1px solid #CCCCCC;
color: #333333;
cursor: pointer;
font-weight: 400;
display: inline-block;
padding: 6px 12px;
text-align: center;
text-decoration: none;
vertical-align: middle;
}
.btnDefault:focus, .btnDefault:hover, .btnUpload:focus, .btnUpload:hover {
background-color: #E6E6E6;
}
.btnM {
border-radius: 4px;
font-size: 14px;
padding: 6px 12px;
}
.customUpload {
overflow: hidden;
position: relative;
}
.customUpload input.upload {
cursor: pointer;
margin: 0;
opacity: 0;
filter: alpha(opacity=0);
padding: 0;
position: absolute;
right: 0;
top: 0;
}
答案 0 :(得分:3)
要设置输入元素的样式,您需要实际设置其label
元素的样式。
来自MDN,
HTML Label Element()表示用户界面中项目的标题。通过将控制元素放在元素内部或使用for属性,它可以与控件关联。这种控制称为标签元素的标记控制。
因此,每当您点击label
时,附加的输入都会被触发。
因此,只需将输入元素包装在标签而不是div中,然后根据需要进行拉伸。这将解决您的问题。
.btnDefault,
.btnUpload {
background-color: #FFFFFF;
border: 1px solid #CCCCCC;
color: #333333;
cursor: pointer;
font-weight: 400;
display: inline-block;
padding: 6px 12px;
text-align: center;
text-decoration: none;
vertical-align: middle;
}
.btnDefault:focus,
.btnDefault:hover,
.btnUpload:focus,
.btnUpload:hover {
background-color: #E6E6E6;
}
.btnM {
border-radius: 4px;
font-size: 14px;
padding: 6px 12px;
}
.customUpload {
overflow: hidden;
position: relative;
display: block;
}
.customUpload input.upload {
cursor: pointer;
margin: 0;
opacity: 0;
filter: alpha(opacity=0);
padding: 0;
position: absolute;
right: 0;
top: 0;
}
<div class="col-3 frmCaption">Attachments:</div>
<div class="col-9">
<label class="customUpload btnUpload btnM"> <span>Upload files</span>
<input type="file" class="upload" />
</label>
</div>
<强> Working Fiddle 强>
答案 1 :(得分:1)
您还需要将width属性应用于包含<div>
的内容。一旦div具有完整的大小,那么只有内部的按钮可以具有全宽。
为简单起见,我已对html进行了更改,您可以将其移至适当的类。
<div class="col-3 frmCaption">Attachments:</div>
<div class="col-9">
<div class="customUpload btnUpload btnM" style="width:100%;">
<span>Upload files</span>
<input type="file" class="upload" style="width:100%;"/>
</div>
</div>
或者您可以使用此CSS并将其添加到div和文件上传中,
.fullwidth
{
width : 100%;
}
<div class="col-3 frmCaption">Attachments:</div>
<div class="col-9">
<div class="customUpload btnUpload btnM fullwidth">
<span>Upload files</span>
<input type="file" class="upload fullwidth"/>
</div>
</div>
答案 2 :(得分:0)
使按钮取12个cols(当你使用12 col系统时),因为这是可用的cils的最大数量,这样elemts将占用它所包含的div的大小