Vue系列: 如何通过组件的属性props设置样式

比如我们要在vue中显示百度地图,然后将相关的代码包装成组件,然后需要由外部来设置组件的高度,关于props的介绍,可以参考:

所以我在该组件的内部添加了mapHeight属性,如下:
props:{
    // 地图在该视图上的高度
    mapHeight:{
      type: Number,
      default: 200
    }
}

然后要在地图的div中通过样式设置该div的高度,,可以有以下三种方式:
第一种:
<div id="allmap" style="width: 100%; height: {{mapHeight}}px"></div>

使用这种方式在chrome中没问题,但是如果打开chrome的控制台就会发现vue给出如下警告,也就是在ie中会有问题。
vue.common.js?e881:1019 [Vue warn]: style="width: 100%; height: {{mapHeight}}px": interpolation in "style" attribute will cause the attribute to be discarded in Internet Explorer. Use v-bind:style instead.

第二种:
关于如何使用绑定方式来设置样式,可以参考:
然后我设置的样式如下:
 <div id="allmap" :style="{width: '100%', height: mapHeight + 'px'}"></div>
经过验证是OK的,可以正常显示。

第三种:
但是根据vue中的官方说法,
使用样式对象的方式更好
 <div id="allmap" v-bind:style="mapStyle"></div>

同时在data属性中添加如下属性:
data: function() {
    return {
      mapStyle:  {
        width: '100%',
        height: this.mapHeight + 'px' 
      }
    }
  },

所以,最终选择第三种方式。






posted @   拿走不谢  阅读(28810)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2015-08-13 C#脚本引擎 CS-Script 之(三)——如何部署
点击右上角即可分享
微信分享提示