teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足の追加。

2016/05/14 09:25

投稿

kei344
kei344

スコア69625

answer CHANGED
@@ -32,4 +32,51 @@
32
32
  .location_checkbox:checked + img {
33
33
  border: 1px solid red;
34
34
  }
35
+ ```
36
+
37
+ ---
38
+
39
+ **追記(蛇足):JavaScriptでやるならこうする**
40
+ HTMLは上記回答と同じ。
41
+
42
+ **[動くサンプル](https://jsfiddle.net/3w7qksz2/)**
43
+
44
+ ```JavaScript
45
+ $(function() {
46
+ // 画像だけでなくチェックボックスもクリックを拾いたいのでlabelにイベントを設置
47
+ $( '.image_box label' ).click( function() {
48
+ var $this = $( this );
49
+ // チェックボックスの状態を確認してチェックされている際はラベルにクラスを付ける
50
+ if( $this.find( '.location_checkbox' ).prop( 'checked' ) ){
51
+ $this.addClass( 'checked' );
52
+ } else {
53
+ $this.removeClass( 'checked' );
54
+
55
+ }
56
+ });
57
+ });
58
+ ```
59
+ ```CSS
60
+ .image_box label {
61
+ display: inline-block;
62
+ min-height: 50px;
63
+ min-width: 50px;
64
+ position: relative;
65
+ }
66
+ /* チェックボックスの位置 */
67
+ .image_box .location_checkbox {
68
+ position: absolute;
69
+ top: 12px;
70
+ right: 12px;
71
+ transform: scale( 1 );
72
+ cursor: pointer;
73
+ }
74
+ .image_box img.thumbnail {
75
+ border: 4px solid rgba( 0, 0, 0, 0 );
76
+ box-sizing: border-box;
77
+ }
78
+ /* チェックが入っていると枠を表示する */
79
+ .image_box .checked img.thumbnail { /* ラベルにクラスを付けているため書き順が変わっています。 */
80
+ border-color: blue;
81
+ }
35
82
  ```