Vue

动态绑定 class 的几种实现方式 - Vue

2020-05-27  本文已影响0人  survivorsfyh

日常开发中难免会遇到动态渲染修改样式的需求出现,So 简单归纳如下三种实现方式,虽然还是学时的时候有所了解但事后很久不在接触,此次重新初识前端不久,哪里可以更优还请大佬多多指教!

方式一:通过Class 与 Style 绑定的方式

即三目运算的判断方式设置样式,也是 Vue 官方推荐的方式,具体 code 实现如下:

html 代码片段

<button 
    type="button" 
    :disabled="btnDisabledState" 
    :class="[btnDisabledState ? 'btnDisabledStyle' : 'btnStyle']"            
    @click="arcExamPaper">点击抽题</button>

js 代码片段

<script>
    import ProjectEnviroment from "../../expand/define/ProjectEnviroment";
    import YHHttpRequestManage from "../../expand/network/YHHttpRequestManage";
    import { Toast } from "vant";
    export default { // 随机抽提
        name : "YHArcExamPaper",
        data() {
            return {
                btnDisabledState: false, // 按钮状态 - 初始设置
            }
        },
        methods: {
            arcExamPaper : function () {
                var urlLink = ProjectEnviroment.HostLink + ProjectEnviroment.ExtractRandomExam + '?eaid=' + this.eaid + '&stid=' + this.stid + '&eeid=' + this.eeid;
                YHHttpRequestManage.GetHttpRequestDataWithDefault(urlLink, true, true, {
                    success : data => {
                        if (1 === data.resCode) { // 成功
                            Toast.clear();
                            console.log(data);

                            this.btnDisabledState = true; // 按钮状态 - 禁止按钮点击事件 - 抽题成功
                        } else { // 异常
                            Toast(data.errMsg);
                        }
                    }
                });
            },
        }
    }
</script>

css 代码片段

<style scoped>
    @import "../../expand/utilityClass/ThemeStyleConfig.css";

    .btnStyle { // Basic Style
        background-color: #7EC16A;
        color: #ffffff;
        border: none;
        outline: none;
        text-align: center;
        font-size: 18px;
        font-weight: bold;
        height: 40px;
        width: 150px;
    }

    .btnDisabledStyle { // Disabled Style
        background-color: #F4F5F6;
        color: #ffffff;
        border: none;
        outline: none;
        text-align: center;
        font-size: 18px;
        font-weight: bold;
        height: 40px;
        width: 150px;
    }
</style>

方式二:基础样式与动态样式同时存在

<div v-bind:class="[btnStyle ,btnDisabledState ? btnDisabledStyle : '']"></div>

方式三:通过将 html 元素设置 id 的方式

该方式应该算是一个较为老套的方式,预先将对应的组件设置 id 唯一属性;
随后在按钮 js 的点击事件中获取到当前元素后对其样式进行修改;
即 document.getElementById("组件预先设置的 id 值").style.color="#F4F5F6"


以上便是此次分享的全部内容,希望能对大家有所帮助!

上一篇 下一篇

猜你喜欢

热点阅读