收藏
回答

动态修改page节点的样式【追加需求】?

老早以前发过类似的需求:动态修改page节点的样式

内容如下:

- 需求的场景描述(希望解决的问题)

wxss中可以直接修改包括page在内的节点的样式,但是wxml中没有page节点,所以page不能像其他节点那样动态修改样式,而且也没有什么api可以用

现在折中的方法是在page里加一个view模拟page,感觉多此一举啊


- 希望提供的能力

能有api可以动态修改page节点的样式

官方最近推出了page-meta组件来回应这个需求,但是这个组件是将部分可用的样式变成了一个一个独立的属性来设置,还是不够灵活

我这边追加两个建议需求

1、(这条删掉,有个page-style属性)page-meta组件可以和其他组件一样用下面这种方式来动态设置样式

<page-meta style="background: {{red?'red':'white'}};padding: {{pagePadding}}rpx;{{otherPageStyle}}">

2、增加类似 wx.setPageStyle (名字可以官方决定,我这个是建议)这样一个统一的api来设置page的样式

最后一次编辑于  2019-11-26
回答关注问题邀请回答
收藏

2 个回答

  • LastLeaf
    LastLeaf
    2019-11-26
    1. page-meta 有个 page-style 属性来这么做(可以用 WXML 数据绑定)。

    2. 我们考虑并没有提供这个调用。原因一是原则上界面尽量用定义式的方式来做;二是 wx 开头的调用是全局的,我们不太好区分开发者的意图到底是更改哪个页面的样式,有可能会改错。

    2019-11-26
    有用
    回复 10
    • 祺爸💎
      祺爸💎
      2019-11-26
      谢谢回复,page-style这个没注意看,漏掉了。话说为什么不直接用style?测试测试
      2019-11-26
      回复
    • LastLeaf
      LastLeaf
      2019-11-26回复祺爸💎
      这个节点语义上并不是“页面节点本身”,而是页面节点的一个代理一样的东西,所以没用 style 这个属性名。另一个原因是小程序的基础框架中“style”是由框架负责管理的“特殊属性”,无法被组件处理。
      2019-11-26
      1
      回复
    • Mr.Hope
      Mr.Hope
      2020-04-11
      现在有一批开发者包括我,正在准备适配夜间模式,而且我想做一个主题色。我有这种“全局改变page样式”的需求,所以能否考虑加一个`wx.setPageStyle ` API,统一改变全局的页面样式。
      2020-04-11
      回复
    • LastLeaf
      LastLeaf
      2020-04-14回复Mr.Hope
      如我在此层所述,请使用 page-meta 组件。
      2020-04-14
      回复
    • Mr.Hope
      Mr.Hope
      2020-05-18回复LastLeaf
      所以我需要在每个页面都加一个 ,然后每个页面都注册一个监听器,然后监听同一个事件是么?浪费内存,代码冗余好么,没有page-meta我套一个view也能实现,有什么区别?
      2020-05-18
      回复
    查看更多(5)
  • 青团社
    青团社
    2019-11-26

    插眼

    2019-11-26
    有用
    回复
登录 后发表内容
问题标签