LoginSignup
21
17

More than 5 years have passed since last update.

ラジオボックスのボタンを画像にする

Last updated at Posted at 2017-12-01

先日上がってきたデザインに対して、これどうやって実現するの?とめちゃくちゃ困って、フロントエンドエンジニアさんに聞いて解決した話です.

ラジオボタンを画像にする

<html>
<head>
<link rel="stylesheet" type="text/css" href="./static/css/main.css">
</head>

<body>
<input type="radio" id="check1" name="check" />
<label for="check1"></label>

<input type="radio" id="check2" name="check"/>
<label for="check2"></label>

<input type="radio" id="check3" name="check"/>
<label for="check3"></label>

<input type="radio" id="check4" name="check"/>
<label for="check4"></label>

</body>
</html>
input[type="radio"]{
    display: none;
}
input[type="radio"] + label {
    position: relative;
    margin:10px;
    display: inline-block;
    background-image:url("../img/present.png");
    background-repeat: no-repeat;
    background-size:contain;
    width: 100px;
    height:100px;
}
input[type="radio"]:checked + label {
    background-image:url("../img/win.png");
    background-repeat: no-repeat;
    background-size:contain;
    width: 100px;
    height:100px;
}

(若干CSSが冗長)

結果

Dec-01-2017 22-39-48.gif
いらすとや

ポイント

隣接セレクタといって、 +で結合するとある要素の直後の要素に対して、CSSを当てることができる.
また、> は子セレクタといって子要素にあてることができる.

<div>
<p>子セレクタに適用</p>
</div>
<p>隣接セレクタに適用</p>
<p>どちらでもないから色がかわらない</p>
div + p {
    color :#808000;
}
div > p {
    color :#800000;
}

結果

スクリーンショット 2017-12-01 23.05.26.png

終わり

できたー!って出したcheckboxの使用例の画像がよくなくて、それそもそもradioボタンじゃなくてよくない?ってなってるかもしれないですが、htmlで出るラジオボタンより、もうちょっとおしゃれな感じのラジオボタンの画像にしたかったのです:frowning2:
以上、無駄にjsを使わないで簡単にラジオボックスのボタンを画像にする方法でした!

21
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
17