728x90
이미지는 src 밑에 assets에 넣는다
<img>에 넣는법
src에 있는 이미지 사져올때 경로는 ./부터 쓴다
<img src="./assets/room0.jpg">
모달창=
탭,햄버거메뉴,서브메뉴,툴팁,이미지슬라이드....
동적인UI만드는법착:
1 UI의 현재 상태를 데이터로 저장해둠
e
export default {
name: 'App',
data(){ //여기가 데이터 보관함
return {
모달창열림 : false,
이미지 : ["http://localhost:8081/img/room0.e2d4696b.jpg",'http://localhost:8081/img/room1.0d438c5a.jpg','http://localhost:8081/img/room2.d330e978.jpg'],
신고수 : [0,0,0],
메뉴들 : ['Home','Shop','About'],
products : ['역삼동원룸','천호동원룸','마포구원룸'],
products2 : [50,'가격은아무거나',100],
}
},
여기서 모달창 열림을 false로 생성했다 숫자 1로 해도되구 내 맘대로하면된다
2.데이터에 따라 UI가 어떻게 보일지 작성
<div class="black-bg" v-if="모달창열림 == true">
<div class="white-bg">
<h4>상세페이지임</h4>
<p>상세페이지 내용임</p>
<button @click="모달창열림 = false">닫기</button>
</div>
</div>
v-if="조건식"
<div v-for="(i,v) in products" :key="i">
<img :src="이미지[v]" class="room-img">
<h4 @click="모달창열림= true"> {{i}}</h4>
<p>{{products2[v]}} 만원</p> <!--데이터 보관함에 자료 이름으로 불러온다 {price1 : 60}-->
<button @click="increase(v)">허위매물신고</button><span> {{신고수[v]}}</span>
</div>
전체코드
<template>
<div class="black-bg" v-if="모달창열림 == true">
<div class="white-bg">
<h4>상세페이지임</h4>
<p>상세페이지 내용임</p>
<button @click="모달창열림 = false">닫기</button>
</div>
</div>
<div class="menu">
<a v-for="작명 in 메뉴들" :key="작명" >{{ 작명 }}</a>
<a v-for="작명 in 3" :key="작명" >{{ 작명 }}</a>
<a v-for="(a,i) in 메뉴들" :key="i" >{{ i }}</a>
</div>
<div v-for="(i,v) in products" :key="i">
<img :src="이미지[v]" class="room-img">
<h4 @click="모달창열림= true"> {{i}}</h4>
<p>{{products2[v]}} 만원</p> <!--데이터 보관함에 자료 이름으로 불러온다 {price1 : 60}-->
<button @click="increase(v)">허위매물신고</button><span> {{신고수[v]}}</span>
</div>
</template>
<script>
export default {
name: 'App',
data(){ //여기가 데이터 보관함
return {
모달창열림 : false,
이미지 : ["http://localhost:8081/img/room0.e2d4696b.jpg",'http://localhost:8081/img/room1.0d438c5a.jpg','http://localhost:8081/img/room2.d330e978.jpg'],
신고수 : [0,0,0],
메뉴들 : ['Home','Shop','About'],
products : ['역삼동원룸','천호동원룸','마포구원룸'],
products2 : [50,'가격은아무거나',100],
}
},
methods : {
increase(v){
//신고수 += 1; 함수안에서 데이터를 사용할떈 반드시 this.데이터명 을 써야한다.이것은 오류
this.신고수[v] += 1;
}
},
components: {
}
}
</script>
<style>
body{
margin : 0;
}
div{
box-sizing: border-box;
}
/* 모달창 디자인 */
.black-bg{
width:100%; height: 100%;
background: rgba(0, 0, 0, 0.5);
position : fixed; padding:20px;
}
.white-bg{
width: 100%; background: white;
border-radius: 8px;
padding: 20px;
}
/* 모달창디자인 */
.room-img{
width : 100%;
margin: 40px;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
.menu{
background : darkslateblue;
padding: 15px;
border-radius : 5px;
}
.menu a{
color: white;
padding: 10px;
}
</style>
Vue에서 Data를
React에서는 state(상태)라고 부른다
UI의 상태를 저장하는 공간이기도 해서 그렇다.
'VUE > VUE연습' 카테고리의 다른 글
실제 데이터를 박아넣어 상품목록을 만들자 (import / export) (0) | 2023.08.15 |
---|---|
Vue 이벤트 핸들러로 click 감지하기 (허위매물 신고버튼 만들기) (0) | 2023.08.14 |
리액트보다 100배 쉬운 Vue 반복문 v-for (0) | 2023.08.14 |
HTML에 데이터 꽂아넣는 Vue 데이터바인딩 문법 (0) | 2023.08.14 |
VUE 설치 및 개발환경 설정하기 및 설명 (0) | 2023.08.14 |