猿问

Vue - 动态设置组件的宽度

我不知道如何动态设置组件的宽度。


我正在使用组件 'vue-burger-menu' -> https://github.com/mbj36/vue-burger-menu。


要设置宽度,需要将道具设置width为一个数字。按照下面的例子:


<Slide

      ref="slideToggle"

      disable-esc

      class="slideToggle"

      width="470"

      right

      :burger-icon="false"

      :cross-icon="false"

      disable-outside-click

    >

然后它设置一个辅助类bm-menu-width 到width. 我花了很长时间试图弄清楚如何动态设置道具的属性或动态更新样式。


例如我尝试设置:this.$refs.slideToggle.$attrs.width = 1000无济于事。


我无法将样式绑定到bm-menu类,因为它不可见。


如何设置宽度,以便单击它更改的按钮(根据下面的按钮示例)?


谢谢你的帮助!


setDrawWidth() {

        this.lineDrawWidth = "200px";

    }


守着一只汪
浏览 1433回答 2
2回答

jeck猫

您只需要:在道具之前使用的绑定:<Slide&nbsp; &nbsp; &nbsp; ref="slideToggle"&nbsp; &nbsp; &nbsp; disable-esc&nbsp; &nbsp; &nbsp; class="slideToggle"&nbsp; &nbsp; &nbsp; :width="width"&nbsp; &nbsp; &nbsp; right&nbsp; &nbsp; &nbsp; :burger-icon="false"&nbsp; &nbsp; &nbsp; :cross-icon="false"&nbsp; &nbsp; &nbsp; disable-outside-click>然后在你data的js部分:export default {&nbsp; &nbsp; &nbsp;data:() => ({&nbsp; &nbsp;width: '470'&nbsp; }),}现在你只需要改变width变量。例如:export default {&nbsp; &nbsp; &nbsp;data:() => ({&nbsp; &nbsp;width: '470'&nbsp; }),&nbsp; &nbsp; &nbsp;methods:{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; changeWidth(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.width = '1000';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp;}}您可以从文档中阅读有关绑定变量的更多信息:Vue Props

哔哔one

监听窗口宽度事件:data: () => ({&nbsp; width: 470})created() {&nbsp; window.addEventListener("resize", this.changeWidth);},destroyed() {&nbsp; window.removeEventListener("resize", this.changeWidth);},methods: {&nbsp; changeWidth(e) {&nbsp; &nbsp; const screenWidth = window.innerWidth;&nbsp; &nbsp; this.width = screenWidth&nbsp; }}并在组件中设置宽度Slide:<Slide&nbsp; &nbsp; &nbsp; ref="slideToggle"&nbsp; &nbsp; &nbsp; disable-esc&nbsp; &nbsp; &nbsp; class="slideToggle"&nbsp; &nbsp; &nbsp; :width="width"&nbsp; &nbsp; &nbsp; right&nbsp; &nbsp; &nbsp; :burger-icon="false"&nbsp; &nbsp; &nbsp; :cross-icon="false"&nbsp; &nbsp; &nbsp; disable-outside-click&nbsp; &nbsp; >
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答