Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 반복줄이기
- React.js
- typescript
- 공통컴포넌트
- React Native
- JS console
- utilty type
- NonNullable
- 성능최적화
- 리액트
- javascript
- 개발콘텐츠
- 제네릭
- 타입좁히기
- reactjs
- Chart.js
- 폰트적용하기
- 레이아웃쪼개기
- 커스텀
- CSS
- const 단언문
- click and drag
- 타입스크립트
- react
- returnType
- 티스토리꾸미기
- 2022
- TSDoc
- 누구나 자료구조와 알고리즘
- vue.js
Archives
- Today
- Total
몽땅뚝딱 개발자
[Vue.js] 체크박스 선택 시 효과주기 본문
◽ 개요
<input>의 id 속성과 <label>의 for 속성의 value를 같은 값으로 연결하면, <label> 클릭 시 체크박스가 "clicked" 상태가 된다.
아래 코드와 같다.
<!-- 이렇게 id와 for에 같은 값을 할당하여 서로 연결할 수 있다. -->
<input type=“checkbox” id=“test” />
<label for=“test”>클릭</label>
나의 경우 아래와 같이 이미지를 클릭할 때 해당 이미지의 체크박스가 클릭되도록 만들었다.
그리고 이미지를 클릭하면 <img> 태그에 노란색 선을 추가해서 클릭한 효과를 주도록 했다.
◽ 적용 순서
1. v-model로 데이터를 연결하고, 클릭 시 해당 체크박스의 value는 prodArr에 차례대로 들어간다.
2. prodArr을 검사하는 ‘checked’ 메소드를 통해 prodArr에 해당 value가 있는지 검사한다.
3. :class=“checked(item.name)”에서 return 값에 따라 checked 속성이 동적으로 할당된다.
📄 HTML
// v-for로 아래와 같이 체크박스를 뿌려준다.
// v-model로 prodArr이라는 변수에 클릭할 때 마다 value를 바인딩한다.
<div v-for="item in checklist">
<input type=“checkbox”
:id=“item.no”
v-model=“prodArr”
:value=“item.name”
:class=“checked(item.name)”
/>
<label :for=“item.no”>
<img :src=“item.image_name”>
</label>
</div>
📄 Script
data() {
return {
// v-model로 연결한 선택한 상품 배열
prodArr: []
}
},
methods: {
checked(target) {
// prodArr에 해당 값이 포함되어있는지 확인하여 checked라는 클래스를 동적으로 부여한다.
const index = this.prodArr.indexOf(target)
return index >= 0 ? { checked: true } : { checked: false }
}
}
📄 CSS
/*
인접한 형제요소인 label의 하위요소인 img 태그에 접근한다.
체크된 경우 이미지에 border를 준다.
*/
input.checked + label > img {
border: 4px solid rgb(255, 242, 65);
box-sizing: border-box;
}
개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.
'Development > Vue.js' 카테고리의 다른 글
[Vue.js] Vue.js에서 Sass(SCSS) 사용하기 (0) | 2021.12.06 |
---|---|
[Vue.js] 디렉티브(Directive) - (1) (0) | 2021.11.30 |
[Vue.js] checkbox, radio, select 값 가져오기 / 기본값 설정 (0) | 2021.11.17 |
[Vue.js] json 파일 읽어오기 (0) | 2021.11.17 |
[Vue.js] Local Storage로 입력정보 유지 (1) | 2021.11.13 |
Comments