lspriv / wx-calendar

微信小程序日历
MIT License
284 stars 46 forks source link

修改日历宽度出现问题, #88

Closed mapleeeeeee closed 10 months ago

mapleeeeeee commented 10 months ago

在某种使用场景下,日历不需要100vw宽度显示,在调试器里看了下css样式,源码宽度给的100vw。 修改css源码,把100vw改成了100%,宽度随父盒子变化,样式能修改成功。 但是切换月份,月份未改变,选中样式也未进行切换。

宽度修改问题

切换月份之后,使用bindchange方法打印参数,获取到的参数和点击的参数不一致,甚至会报错 1706689390359

lspriv commented 10 months ago

收到,明天有事,后天解决 给段代码模拟一下你这个场景,我去复现一下 bug 😄,(简单点就行,有左侧栏宽度,右侧日历宽度就好了) (按我原本的设计,就没考虑非视口宽度,原因是随意设置宽度的话太窄影响美观,切换月的判断也是按swiper滑动n个视口宽度计算的,所以月份未改变,后续的报错也是这个原因,未切换到正确的月份上,我可以放开这个视口宽度的限制)

mapleeeeeee commented 10 months ago

wxml `

左侧导航栏 日历盒子

`

wxss .wrap{ width: 100vw; height: 100vh; display: flex; } .nav{ width: 160rpx; height: 100%; background: pink; } .calendar-box{ flex: 1; background: orange; }

.json { "usingComponents": { "calendar": "@lspriv/wx-calendar" } }

以上代码为demo代码,。 如果出现页面元素挤压是没有修改日历宽度,我改了源码的宽度。 谢谢大佬了 1706837417556

lspriv commented 10 months ago

包@lspriv/wx-calendar@1.5.4-alpha.0已解决该问题

lspriv commented 10 months ago

包@lspriv/wx-calendar@1.5.4-alpha.0已解决该问题

[!NOTE] 自定义宽度需要注意以下几点(不需要改源码)

1. 直接设置组件绝对宽度

<calendar style="width: 300rpx;" />

2. 或者当日历组件宽度不是绝对值时

<view class="wrap">
  <view class="nav"></view>
  <view class="content">
    <calendar style="width: 100%;" />
  </view>
</view>

你需要给日历组件的父元素.content设置宽度如下(不要用flex-grow弹性伸缩了,初始化获取不到正确的自定义宽度)

.wrap {
  width: 100vw;
  display: flex;
}

.nav {
  width: 160rpx;
}

.content {
  width: calc(100% - 160rpx);
}
mapleeeeeee commented 10 months ago

大佬牛逼