获取元素样式并将其分配给 vue.js 中的另一个元素

Posted

技术标签:

【中文标题】获取元素样式并将其分配给 vue.js 中的另一个元素【英文标题】:get element style and assign it to another element in vue.js 【发布时间】:2018-01-05 23:54:53 【问题描述】:

我正在使用 VUE.js 2

这是我的 DOM:

<aside :style="height : height()" class="col-sm-4 col-md-3 col-lg-3">...</aside>

<main class="col-sm-8 col-md-9 col-lg-9" ref="userPanelMainContents">...</main>

这是我的脚本:

export default 
    data() 
        return 
    ,
    methods: 
        height () 
            return this.$refs.userPanelMainContents ? this.$refs.userPanelMainContents.offsetHeight + 'px' : '0px'
        
    

我想获取 userPanelMainContents 高度并将其分配给旁边的标签。 我该怎么做?!!!

【问题讨论】:

【参考方案1】:

尝试返回一个数据属性而不是使用返回高度的方法,然后你可以使用mounted函数设置高度。

像这样:

<aside :style=" height: height " class="col-sm-4 col-md-3 col-lg-3">...</aside>

<main class="col-sm-8 col-md-9 col-lg-9" ref="userPanelMainContents">...</main>


export default 
    data() 
        return 
            height: '0px'
        
    ,
    mounted () 
        this.height = this.$refs.userPanelMainContents[0].style.height;
    

已编辑:将计算属性更改为数据属性,并在调用挂载事件时设置它。

它将使用不同的语法,因为我不能在 codepen 上使用 .vue 文件,但这里是工作代码。

https://codepen.io/michael_coder/pen/qXbxXW

【讨论】:

渲染函数中的错误:“TypeError:无法读取未定义的属性'userPanelMainContents'” 我会为你编辑和修复它。我认为正在发生的事情是在计算之后创建了参考。 我使用 *.vue 文件和 webpack。这种结构有可能造成这种情况吗? 全部编译到 es2015。这不应该导致问题。我一直在使用 *.vue 和 webpack。 不幸的是没有字!!

以上是关于获取元素样式并将其分配给 vue.js 中的另一个元素的主要内容,如果未能解决你的问题,请参考以下文章

如何获取当前目录并将其分配给linux中的变量[关闭]

如何从小部件的函数返回值,并将其传递给 Tkinter,Python 中的另一个小部件的函数

如何使用 selenium webdriver C# 获取元素样式属性的值

从对象获取属性值并将其分配给javascript中的变量

如何从widget的函数返回值,并将其传递给Tkinter,Python中的另一个小部件的函数

如何从文本框中获取值并将其分配给 Xcode 中的整数变量?