小程序-如何实现一个view根据屏幕宽度来实现等宽高

本文介绍如何在小程序中让一个view的子元素按屏幕宽度的30%设置宽度和高度,通过调整布局和约束来实现等宽高效果。在iOS中此操作简单,但在小程序中需要设置特定的布局属性和约束。

提问:一个view上面放置3个子view,子view的宽度为屏幕宽度30%,高度和宽度一致?

在iOS中,so easy,所以我不说大笑

码农从来话不多,以代码说话

<view class='diffenceContent superBgColor'>
  <view class='subContent subBgColor'>1</view>
  <view class='subContent subBgColor'>2</view>
  <view class='subContent subBgColor'>3</view>
  <view class='subContent subBgColor'>4</view>
</view>
.diffenceContent {
  display: flex;
   /* flex-direction: column;   */
  flex-wrap: wrap;
  width: 100%;
  top: 20px;
  height: 200px;
  justify-content: space-between;

  /* align-items: stretch;  */
}

上面设置了子view的布局方式flex,并且可以换行,在主轴线上的对齐方式

重点来了,子view的大小怎么确定,约束(原谅我用了ios的概念)该怎么写?

width: 30%;
height: width;

no?height并没有起作用

width: 30%;
padding-bottom: 30%;  
height: 0;

设置其底部或者顶部内布局和宽度一致即可,同样是30%,并将默认高度清除

这里可能会有疑问:这个30%是怎么来的?请看下面

podding属性值

length规定以具体单位计的固定的上内边距值,比如像素、厘米等。默认值是 0px。
%定义基于父元素宽度的百分比上内边距
inherit规定应该从父元素继承上内边距。
遗留问题:
这里新发现的问题是这么设定,它的子视图显示会有问题(子视图会在其外面显示,可能是因为height:0的缘故吧)
在微信小程序实现 `scroll-view` 的度自适应,主要依赖于动态计算组件的度,并将其绑定到 `scroll-view` 的样式属性中。由于 `scroll-view` 必须显式设置度才能启用滚动功能,因此不能直接依赖其父容器的布局进行自适应[^1]。 ### 使用系统信息动态计算度 可以通过 `wx.getSystemInfoSync()` 获取设备的系统信息,从中提取 `windowHeight`(窗口度) `windowWidth`(窗口宽度)进行度计算。若页面中存在其他固定度的组件,需从总度中减去这些部分,以确保 `scroll-view` 占据剩余可用区域[^4]。 #### 示例代码: ```javascript Page({ data: { scrollHeight: 0 }, onLoad() { const systemInfo = wx.getSystemInfoSync(); const windowHeight = systemInfo.windowHeight; const windowWidth = systemInfo.windowWidth; // 假设顶部有固定度的 view(如 100rpx) const otherHeight = 100; // rpx const scrollHeight = windowHeight * 750 / windowWidth - otherHeight; this.setData({ scrollHeight: scrollHeight }); } }); ``` WXML 中使用方式: ```html <view class="header"></view> <scroll-view style="height: {{scrollHeight}}rpx" scroll-y="true"> <!-- 滚动内容 --> </scroll-view> ``` ### 嵌套在组件中的度自适应 在某些复杂布局中,如 `van-tabs` 中嵌套 `scroll-view`,需要确保 `scroll-view` 能够继承父组件的度。此时可以通过设置 `scroll-view` 的度为 `100%`,并结合父容器的度控制实现自适应[^3]。 #### 示例代码: ```html <van-tabs> <van-tab title="选项卡1"> <scroll-view style="height: 100vh;" scroll-y="true"> <!-- 滚动内容 --> </scroll-view> </van-tab> </van-tabs> ``` ### 多个视图嵌套时的度计算 当页面中存在多个固定度的视图时,`scroll-view` 需要占据剩余屏幕度。可以通过布局结构将固定度的组件与 `scroll-view` 并列放置,并通过计算动态设置度[^2]。 #### 示例结构: ```html <view class="container"> <view class="top-fixed"></view> <scroll-view class="scroll-content" style="height: {{scrollHeight}}rpx" scroll-y="true"> <!-- 滚动内容 --> </scroll-view> </view> ``` ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值