如何通过组件的属性props设置样式

 我来答
ak...s@163.com
2017-08-11 · TA获得超过313个赞
知道答主
回答量:159
采纳率:0%
帮助的人:30.1万
展开全部
在该组件的内部添加了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.

第二种:
关于如何使用绑定方式来设置样式,可以参考:
http://cn.vuejs.org/guide/class-and-style.html#u5BF9_u8C61_u8BED_u6CD5-1
然后我设置的样式如下:
<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'
}
}
},

所以,最终选择第三种方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llzzcc66
2017-08-11 · 知道合伙人数码行家
llzzcc66
知道合伙人数码行家
采纳数:81385 获赞数:171497
公司运维员工

向TA提问 私信TA
展开全部
在该组件的内部添加了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.

第二种:
关于如何使用绑定方式来设置样式,可以参考:
http://cn.vuejs.org/guide/class-and-style.html#u5BF9_u8C61_u8BED_u6CD5-1
然后我设置的样式如下:
<div id="allmap" :style="{width: '100%', height: mapHeight + 'px'}"></div>

经过验证是OK的,可以正常显示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式