Vue获取DOM元素样式 && 样式更改

在 vue 中用 document 获取 dom 节点进行节点样式更改的时候有可能会出现 ‘style‘ is not definde的错误,这时候可以在 mounted 里用 $refs 来获取样式,并进行更改:

<template>
  <div style="display: block;" ref="abc">
    <!-- ... -->
  </div>
</template>
<script>
  export default {
    mounted () {
      console.log(this.$refs.abc.style.cssText)
    }
  }
</script>

结果是 display: block;
如果我们给一个div设定全屏背景图,就需要获取屏幕高度进行赋值:
<template>
  <div ref="nana">
    <!-- ... -->
  </div>
</template>

<script>
export default {
  mounted () {
   let w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
   let h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

    this.$refs.nana.style.height = h +‘px‘;

  }

}

</script>

 备注:有必要时需要在updated方法中设置

    updated () {
      let height = this.$refs.luckDraw.offsetHeight;
      this.$refs.luckDrawContainer.style.height= height+‘px‘;
    },
时间: 2024-08-25 18:02:02

Vue获取DOM元素样式 && 样式更改的相关文章

vue获取DOM元素并设置属性

这里我想到了2个方法: 方法一: 直接给相应的元素加id,然后再document.getElementById("id");获取,然后设置相应属性或样式 方法二: 使用ref,给相应的元素加ref=“name” 然后再this.$refs.name获取到该元素 注意:在获取相应元素之前,必须在mount钩子进行挂载,否则获取到的值为空,    如果是给子组件加id并修改自定义属性,则直接会加载改子组件对应的外层div上,并不会改变该子组件原本的自定义属性的值   如果给子组件加ref,

Vue 获取DOM元素ref

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

vue 获取dom元素

<template> <div style="display: block;" ref="abc"> <!-- ... --> </div> </template> <script> export default { mounted: function () { // 此处不能用beforeMounte console.log(this.$refs.abc.style.cssText) } }

【温故而知新-Javascript】为DOM元素设置样式

1. 使用样式表 可以通过document.styleSheets属性访问文档中可用的CSS样式表,它会返回一组对象集合,这些对象代表了与文档管理的各个样式表. 每个样式表 都由一个CSSStyleSheet 对象代表,它提供了一组属性和方法来操作文档里的样式. 1.1 获得样式表的基本信息 第一步是获得定义在文档中的样式表的一些基本信息. <!DOCTYPE html> <html lang="en"> <head> <meta charse

【使用 DOM】为DOM元素设置样式

1. 使用样式表 可以通过document.styleSheets属性访问文档中可用的CSS样式表,它会返回一组对象集合,这些对象代表了与文档管理的各个样式表. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>为DOM元素设置样式</title> <style title="core st

Dojo操作dom元素的样式

1.使用dom-style的set方法,可以直接设置dom元素的样式属性,这和使用dom元素的style属性效果一样. 2.使用dom-class的replace方法可以替换某个dom元素的样式,add方法可以为dom元素增加样式,remove方法可以移除dom元素的样式 require(["dojo/dom", "dojo/window", 'dojo/dom-style', 'dojo/topic', "dojo/dom-class", &q

Vue自定义指令获取DOM元素

我们知道,Vue.js的核心是数据驱动,当数据有所变化时,DOM就会被更新,比如: <span v-text="msg"></span> export default { data(){ return{ msg : 'oldMsg' } } methods : { changeMsg : function(){ this.msg = 'newMsg' } } } 当调用了changeMsg方法,msg被修改为 ' newMsg ' ,我们可以把这次修改理解为数据

Vue系列之 =&gt; ref获取DOM元素和组件

可以获取DOM元素,和组件中的数据,方法 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-eq

JS中获取 DOM 元素的绝对位置实例详解

在操作页面滚动和动画时经常会获取 DOM 元素的绝对位置,例如 本文 左侧的悬浮导航,当页面滚动到它以前会正常地渲染到文档流中,当页面滚动超过了它的位置,就会始终悬浮在左侧. 本文会详述各种获取 DOM 元素绝对位置 的方法以及对应的兼容性.关于如何获取 DOM 元素高度和滚动高度,请参考视口的宽高与滚动高度 一文. 概述 这些是本文涉及的 API 对应的文档和标准,供查阅: API 用途 文档 标准 offsetTop 相对定位容器的位置 MDN CSSOM View Module clien