vue修改元素样式

Vue 动态改变css样式的方法总结 在网页开发中,我们经常会遇到动态的改变某个元素样式的需求,在vue里如何实现呢?官网上其实写的很详细了,对象语法,数组语法等。我自己总结了在开发中,个人用的比较多的三种方式。 阅读详情

vue通过js动态修改元素的样式,如果是固定的几个样式,我常用的是绑定元素的calss,给不同的class写好需要的样式,js控制是否使用这个class。

但是最近遇到这么一个需求,文字可以让用户通过取色器选择不同的颜色,选择颜色后动态更新展示文字效果。
实现效果

这样获取到的颜色是一个很庞大的数据,根本不可能提前写好,也就是不能通过class的方式处理。那么怎样直接修改元素的style属性呢?

方法1—vue的v-bind指令

其实vue提供了绑定style属性的方法,并且和绑定class是写在一起的,但是,这么久以来我竟然一点印象也没有,也是很不可思议的一件事了。
这里给上vue绑定style的文档地址:https://cn.vuejs.org/v2/guide/class-and-style.html#对象语法-1
具体使用:

<template>
... 省略 ...
<el-row>
  <el-col :span="12">
    <el-form-item label="模板标题:" prop="titleName">
      <el-input size="small" placeholder="请输入标题" v-model="searchForm.titleName" style="width:300px;">
      </el-input>
    </el-form-item>
    
    <el-form-item label="标题颜色:">
      <!-- 取色器插件 -->
      <colorPicker v-model="titleColor"></colorPicker>
    </el-form-item>
  </el-col>
  <el-col :span="12">
    <el-form-item label="内容示例:" prop="" >
      <div style="width:300px;border:1px solid #bfcbd9;border-radius:4px;min-height:200px;padding:5px 7px;overflow: hidden;">
        <!-- v-bind缩写为":" -->
        <div :style="{color: titleColor}">{{searchForm.titleName}}</div>
      </div>
    </el-form-item>
  </el-col>
</el-row>
... 省略 ...
</template>
<script>
export default {
  data: () => {
    return {
      titleColor:'#000000',
      searchForm: {
        titleName: ''
      }
    }
  },
  methods: {}
}
</script>

使用v-bind绑定元素的style属性,js中连methods的部分都不用写了

方法2—js原生获取元素

这里的取色器插件可以绑定change事件,那么我们可以在取色器改变的时候取设置元素的style。
我首先想到的就是js原生的方法
具体使用:

<template>
... 省略 ...
<el-row>
  <el-col :span="12">
    <el-form-item label="模板标题:" prop="titleName">
      <el-input size="small" placeholder="请输入标题" v-model="searchForm.titleName" style="width:300px;">
      </el-input>
    </el-form-item>
    
    <el-form-item label="标题颜色:">
      <!-- 取色器绑定change事件 -->
      <colorPicker v-model="titleColor" @change="changeColor"></colorPicker>
    </el-form-item>
  </el-col>
  <el-col :span="12">
    <el-form-item label="内容示例:" prop="" >
      <div style="width:300px;border:1px solid #bfcbd9;border-radius:4px;min-height:200px;padding:5px 7px;overflow: hidden;">
        <!-- 给元素添加class,也可用id -->
        <div class="title-color">{{searchForm.titleName}}</div>
      </div>
    </el-form-item>
  </el-col>
</el-row>
... 省略 ...
</template>
<script>
export default {
  data: () => {
    return {
      titleColor:'#000000',
      searchForm: {
        titleName: ''
      }
    }
  },
  methods: {
    changeColor (val) {
      // 1. 这个取色器change事件直接获取的就是带"#"的十六进制颜色
      // 2. 如果用的是id,这里就换成js获取id的方法;如果vue中引入了jQuery,这里也可以用jQuery的方法
       document.getElementsByClassName('title-color')[0].style.color = val	
    }
  }
}
</script>

方法3 — vue的$refs属性获取元素

和方法2一样,通过取色器的change事件获取修改的颜色,但是在获取元素的时候不用原生而用vue的实例属性$refs。
vue 文档中提到,当ref在普通的DOM元素上使用,引用指向的就是DOM元素,因此我们可以用这点来获取我们要的元素。

vue $refs的文档:https://cn.vuejs.org/v2/api/#vm-refs
vue ref的文档:https://cn.vuejs.org/v2/api/#ref
具体使用:

<template>
... 省略 ...
<el-row>
  <el-col :span="12">
    <el-form-item label="模板标题:" prop="titleName">
      <el-input size="small" placeholder="请输入标题" v-model="searchForm.titleName" style="width:300px;">
      </el-input>
    </el-form-item>
    
    <el-form-item label="标题颜色:">
      <colorPicker v-model="titleColor" @change="changeColor"></colorPicker>
    </el-form-item>
  </el-col>
  <el-col :span="12">
    <el-form-item label="内容示例:" prop="" >
      <div style="width:300px;border:1px solid #bfcbd9;border-radius:4px;min-height:200px;padding:5px 7px;overflow: hidden;">
        <!-- 使用ref给元素注册引用信息 -->
        <div ref="titleNameRef">{{searchForm.titleName}}</div>
      </div>
    </el-form-item>
  </el-col>
</el-row>
... 省略 ...
</template>
<script>
export default {
  data: () => {
    return {
      titleColor:'#000000',
      searchForm: {
        titleName: ''
      }
    }
  },
  methods: {
    changeColor (val) {
      // 通过$ref来获取
      this.$refs.titleNameRef.style.color = val	
    }
  }
}
</script>
Vue 添加水印(防篡改: 删除水印元素节点、修改水印元素的样式) 阅读详情

相关推荐

vue3 - 获取DOM元素并且修改元素样式示例源码,当点击一个元素(比如按钮、容器)需要用更改 style css 的样式(附带详细的功能示例及解决方案)

vue3获取元素并修改元素样式,vue3.0点击修改元素的css样式,vue3怎么修改元素css属性,vue3动态的改变样式,vue3中动态style(动态修改伪元素样式),Vue3获取DOM元素样式和样式更改示例,vue3通过ref获取dom元素并修改样式,Vue3中如何获取dom元素并修改样式,Vue3 动态修改dom样式,vue3获取dom元素节点并操作元素的样式,vue3.0 获取dom设置样式,Vue3获取DOM元素并修改属性的方法,vue3 怎么动态改变element内部dom元素的样式,vue

✅ 精选推荐文章 6086

vue动态改变元素样式详解

vue设置样式变量,以在vue中动态改变元素样式,包含动态改变class以及内联样式style等。实现vue动态控制页面样式。

蓑笠翁 1万+

《软件工程——实践者的研究方法》重难点复习笔记(第八章——理解需求)

8项需求工程任务 inception 开始 8.1.1 identify stakeholders 定义:从软件开发中收益 例如:市场人员、销售经理、顾客、顾问、维护团队等(P139) 8.1.2 这个阶段的问题是context-free的。有三套(P140) 8.1.3 提到NFR(nonfunctional requirement)和QFD(quality

whooiif的博客 1806

Vue 通过style属性、class属性来动态修改CSS样式

vue使用v-bind绑定style属性或class属性,动态修改CSS样式。动态修改style,动态修改class。

weixin_43818307的博客 2万+

Altium Designer差分走线实战:从规则设置到阻抗匹配的完整流程

本文详细讲解了在Altium Designer中进行差分走线的完整实战流程,涵盖从原理图定义差分对、PCB布局管理、关键设计规则设置,到利用阻抗计算工具确定线宽与间距,以及布线技巧与等长处理等核心步骤。文章旨在帮助工程师掌握高速PCB设计中差分信号传输的关键技术,确保信号完整性并实现精确的阻抗匹配。

weixin_29163857的博客 250

OTN传送网实战指南:从光层到电层的完整架构解析(附配置示例)

本文深入解析OTN传送网从光层到电层的完整架构,涵盖关键组件、技术实现及配置示例。通过高速公路与光传送网的类比,详细介绍了光层超宽传输管道构建、电层业务调度核心引擎以及控制平面智能运维实战。附有典型组网方案与故障排查指南,助力网络工程师高效部署与维护OTN传送网。

tomato的博客 679

Vue中 ref 两种用法

vue 组件 ref 用法,给普通元素和组件添加

所行皆坦途 1万+

[VisionPro] CogPMAlignTool 工具详解

[VisionPro] [CogPMAlignTool] [模板匹配]

weixin_43163656的博客 1万+

vue3获取元素并修改元素样式

vue3获取元素并且修改样式

海风依旧 9207

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2205

树莓派4B串口舵机控制全攻略:从pigpio库安装到Python脚本调试

本文详细介绍了如何在树莓派4B上通过pigpio库和Python脚本实现串口舵机的精确控制。从硬件串口配置、pigpio库安装到舵机通信协议解析和Python脚本开发,提供了完整的解决方案和调试技巧,适用于机械臂控制等实际项目应用。

k8s6orchestrator的博客 426

vue中动态style(如何动态修改伪元素样式)

vue中如何动态修改伪元素样式 vue项目中我们可以通过行内样式进行动态修改样式,大家都会就举栗子了 如何动态修改伪元素样式? 1.css中如何用变量 声明css变量的时候,变量名前面要加两根连词线(–)。 变量名大小写敏感,–header-color和–Header-Color是两个不同变量。 var()函数用于读取变量。 var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。 第二个参数不处理内部的逗号或空格,都视作参数的一部分。 <style> b

qq_44827891的博客 1万+

多物理场耦合仿真-主题032-电磁-流体耦合

电磁-流体耦合,即磁流体动力学(MHD, Magnetohydrodynamics),是研究导电流体在电磁场中运动规律的学科,涉及电磁场与流体力学的深度耦合。本主题系统阐述磁流体动力学的基本理论、控制方程和数值方法。首先介绍MHD的基本概念和物理基础,包括导电流体的性质、电磁场基本方程;然后详细推导MHD控制方程组,包括连续性方程、动量方程、能量方程和电磁场方程;接着讨论MHD流动的特征参数,如Hartmann数、磁雷诺数、相互作用参数等;最后通过六个典型工程案例展示MHD分析的实际应用,包括电磁泵、磁流体

2401_87715305的博客 419

vue通过js修改元素的样式

1 给元素定义ref 属性 &lt;el-button ref="btnClick" class="list_button" " @click="openClose"&gt;&lt;/el-button&gt;  2 通过js 方法修改元素的样式   修改较多样式时可使用cssText function openClose() { this.isCollapse = !t...

Frankenstein_的博客 1万+

038、OIS 光学防抖原理与调试:陀螺仪数据融合、Lens Shift OIS 的闭环控制

本文分享了OIS光学防抖系统的调试经验和关键技术要点。作者通过一个"呼吸感"Bug案例,揭示了陀螺仪数据融合和闭环控制的重要性。系统介绍了OIS的三个关键层次:传感器层(陀螺仪特性)、控制层(复合算法)和执行层(闭环控制)。重点讲解了陀螺仪数据融合的互补滤波实现、Lens Shift闭环控制的PID优化策略(包括积分抗饱和和微分滤波),以及前馈补偿的应用。最后总结了调试中的关键问题:数据同步、霍尔校准、温度补偿和性能评估方法,并给出实用建议:平衡算法复杂度与性能、预留带宽余量、重视产线校准等。文章强调OIS

sundong_81的博客 249

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

vue获取dom元素与修改样式详解

vue中如何获取dom元素呢? 步骤详解 在标签上加上ref属性 如 : 在js中通过refs便可以获取dom如:this.refs便可以获取dom 如:this.refs便可以获取dom如:this.refs.refDemo 修改对应的样式名 如:this.$refs.refDemo.style.backgroundColor="#108ee9" 还不会? 请看代码例子 <tem...

dreamStart_Lin的博客 7201

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Vue 之 获取并修改元素样式(比如案例取色器的实现)

Vue 之 获取并修改元素样式(经典案例取色器)一、利用原生 js二、利用 Vue的 `v-bind` 指令和 `ref` 属性 一、利用原生 js 利用相关dom api 取到元素(如果你的项目中引入了 jQuery,也可以使用 jq 的 api ),这里使用的是原生的; 注: 如果你使用的是单个样式修改的是带中横线的样式属性(如 margin-top),那么代码中的样式需要修改成驼峰格式的(如 marginTop );多个样式的写法可使用模板字符串(反引号),使用模板字符串的写法不用将中横线的样式属性

zhuang的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

vue3通过ref获取dom元素并修改样式

vue3通过ref获取dom元素并修改样式 vue3获取dom元素和vue2类似,都是通过ref来获取,请看以下示例: ①元素中通过ref获取元素boxOneRef ②state中创建boxOneRef属性 ③重新创建变量boxOneProxy,并赋值为state.boxOneRef,使之成为state.boxOneRef的代理对象(因为state.boxOneRef属于proxy对象,必须通过代理对象来修改其内部属性) <template> <div class="page rela

博哥的二进制世界 1万+

关于vue框架中scoped元素对样式修改的影响

确定模块的情况下,无法修改样式的可能原因:scoped; 解决方法:去掉scoped或添加钩子函数

weixin_58585830的博客 353

vue移除伪元素_vue中动态style(动态修改伪元素样式)

如何动态修改伪元素样式?1.css中如何用变量声明css变量的时候,变量名前面要加两根连词线(–)。变量名大小写敏感,–header-color和–Header-Color是两个不同变量。var()函数用于读取变量。var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。第二个参数不处理内部的逗号或空格,都视作参数的一部分body {--highlight-co...

weixin_36383252的博客 1589

Vue获取DOM元素修改样式失效

在vue文件中,是不太希望你直接获取DOM元素的,所以通过获取DOM元素修改样式可能会因为优先级的原因而失效。

weixin_55955132的博客 420

vue 动态的修改元素样式

需要为元素配置ref属性 <template> <!-- 普通的HTML元素 --> <div class="id_container" ref='id_container'> <!-- element-ui框架的元素 --> <el-button type='text' ref="elButton">el按钮</...

ioszhanghui的博客 5998

vue中父元素修改子元素中的样式

父组件改子组件的样式

m0_59638694的博客 1196

vue3 通过ref获取dom元素并修改style样式

// html <div class="ans-item" v-for="(item1,index1) in item.answer" :key="index1"> <div class="item"> <div class="circle" :ref="setItemRef">{{anslist[index1]}}</div> <div class="content"&gt.

wx479的博客 1万+

Vue中修改v-html中的元素样式引发的问题

今天在vue项目中遇到了一个问题,无论怎么修改v-html中元素的样式都不能生效,记录一下: 查看了下vue的API文档,v-html中有如下一段话: 在单文件组件里,scoped的样式不会应用在v-html内部,因为那部分 HTML 没有被 Vue 的模板编译器处理。如果你希望针对v-html的内容设置带作用域的 CSS,你可以替换为CSS Modules或用一个额外的全局...

Dysons的专栏 735

editor修改样式 vue_vue修改富文本中的元素样式

富文本编辑器目前应用很广泛,而有时候我们想要对其中的一些元素的样式进行修改,就会遇到问题。首先,直接修改是不可行的,因为是用v-html标签进行渲染的,无法直接获取到。在修改的时候,一般是按标签进行修改,当然,也可以按class和id等,这就需要依赖到富文本的源码,看是用的什么id和class。比如对p标签进行修改样式。方法1:在updated周期进行修改。updated() {$('.descB...

weixin_39955351的博客 1580
下一篇: 用vue 自定义指令解决表格td内容元素设置z-index不生效问题
BAtodl
博客等级 码龄7年 3粉丝 9原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值