zoaseo
To Infinity And Beyond
zoaseo
전체 방문자
오늘
어제
  • 분류 전체보기 (760)
    • 개발이 좋아서 (378)
      • SAP가 좋아서 (0)
      • Java가 좋아서 (42)
      • Spring이 좋아서 (50)
      • JPA가 좋아서 (0)
      • QueryDSL이 좋아서 (26)
      • Docker가 좋아서 (7)
      • Redis가 좋아서 (7)
      • AWS가 좋아서 (5)
      • CI/CD가 좋아서 (6)
      • Troubleshooting이 좋아서 (4)
      • Kotlin이 좋아서 (7)
      • SQL이 좋아서 (6)
      • HTTP가 좋아서 (21)
      • JavaScript가 좋아서 (30)
      • TypeScript가 좋아서 (6)
      • Vue가 좋아서 (21)
      • Flutter가 좋아서 (61)
      • React가 좋아서 (20)
      • Redux(React)가 좋아서 (2)
      • Angular가 좋아서 (22)
      • HTML이 좋아서 (9)
      • CSS가 좋아서 (15)
      • PHP가 좋아서 (9)
      • Illustrator가 좋아서 (2)
    • 노력이 좋아서 (169)
    • 결과물이 좋아서 (14)
    • 코딩연습이 좋아서 (168)
      • 이론이 좋아서 (62)
      • SQL이 좋아서 (90)
    • 유용한 사이트가 좋아서 (28)
    • Github (2)

인기 글

티스토리

hELLO · Designed By 정상우.
zoaseo

To Infinity And Beyond

개발이 좋아서/Vue가 좋아서

6장 class와 style 바인딩

2023. 9. 13. 13:29

1) class_binding

<template>
    <div>
        <div
            class="text"
            :class="[isActive ? 'active-class' : 'class', errorClass, classObject]"
        >
            텍스트 입니다.
        </div>
        <button v-on:click="toggle">toggle</button>
        <button v-on:click="hasError = !hasError">toggleError</button>
    </div>
</template>

<script>
import { computed } from '@vue/reactivity';
import { reactive, ref } from 'vue';

export default {
    setup() {
        const isActive = ref(true);
        const hasError = ref(false);

        // const classObject = reactive({
        //  active: true,
        //  'text-danger': true,
        // });

        const classObject = computed(() => {
            return {
                active: true && true,
                'text-danger': true && true,
                'text-blue': true,
            };
        });

        const activeClass = ref('active');
        const errorClass = ref('error');

        const toggle = () => {
            isActive.value = !isActive.value;
        };
        return { isActive, toggle, hasError, classObject, activeClass, errorClass };
    },
};
</script>

<style scoped>
.active {
    font-weight: 900;
}
.text-danger {
    color: red;
}
</style>

2) style_binding

<template>
    <div>
        <div :style="styleObject">
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Repudiandae enim
            nostrum molestiae earum nesciunt ad, totam perspiciatis consequuntur
            consectetur, quidem, cumque eveniet odit excepturi amet eum nisi veritatis
            similique veniam!
        </div>
        <button v-on:click="fontSize--">-</button>
        <button v-on:click="fontSize++">+</button>
    </div>
</template>

<script>
import { computed, reactive, ref } from 'vue';

export default {
    setup() {
        // const styleObject = reactive({
        //  color: 'red',
        //  fontSize: '13px',
        // });
        const fontSize = ref(13);
        const styleObject = computed(() => {
            return {
                color: 'red',
                fontSize: fontSize.value + 'px',
            };
        });
        return { styleObject, fontSize };
    },
};
</script>

<style lang="scss" scoped></style>

'개발이 좋아서 > Vue가 좋아서' 카테고리의 다른 글

8장 목록 렌더링(v-for)  (0) 2023.09.13
7장 조건부 렌더링(v-if, v-show)  (0) 2023.09.13
5장 Computed  (0) 2023.09.13
4장 반응형 기초(reactivity)  (0) 2023.09.13
3장 템플릿 문법  (0) 2023.09.13

    티스토리툴바