我有一个小提琴来描述这个问题。 给定的 html
<input type="file" name="geoFile" class="file-drop" >
这反过来又生成以下影子 DOM 结构:
<input type="file" name="geoFile" class="file-drop">
#shadow-root (user-agent)
<input type="button" value="Choose File" pseudo="-webkit-file-upload-button">
#shadow-root (user-agent)
Choose File
</input>
</input>
如何设置第一个shadow-root
内按钮的display:none
?
我试过了
.file-drop {
width: 150px;
height: 150px;
border: 5px dashed darkgrey;
input[type='button'] {
display: none;
}
}
但按钮样式仍在显示。
若要选择该按钮,可以使用选择器 .file-drop::-webkit-file-upload-button
。
由于您使用的是 SASS,因此它将是:
更新的示例
.file-drop {
width: 150px;
height: 150px;
border: 5px dashed darkgrey;
&::-webkit-file-upload-button {
display: none;
}
}
正如您的问题所暗示的那样,这仅适用于-webkit
浏览器,因为每个浏览器都有自己的实现。
您不能设置影子 DOM 的样式。您可以获得相同的效果,隐藏input
并使用带有冥河的label
。
在这里,您的小提琴分叉如前所述。