input type="file"のCSSが効かない
type属性値のfileはCSSが効かない
フォームに画像アップロード用の<input type="file">にCSSが反映されなかった時のメモ。
デフォルトのスタイル
<input type="file" name="user_photo" >
デフォルトでの表示
デフォルトのスタイルを変更する
デフォルトのスタイルを変更するには、input属性にdisplay: none;を与えて非表示にする。
フォームコントロールのラベルを<label>でマークアップして関連性を示してスタイルを設定する。
HTML
<div class="file_upload">
<label>
アップロード
<input type="file" name="user_photo">
</label>
</div>
SCSS
.file_upload label {
input[type="file"] {
display: none;
}
padding: 2px 6px;
background-color: #0081cc;
color: #FFF;
display: inline-block;
border-radius: 3px;
font-size: 1.2rem;
cursor: pointer;
&:hover {
background-color: #009de1;
}
}
表示イメージ