吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1224|回复: 9
收起左侧

[求助] web前端flex的问题

[复制链接]
cqwcns 发表于 2021-10-17 14:55
微信小程序,我希望构建一个页面(main),分为标题(header)和内容(content)两大部分。
标题固定不变的,内容是滚动的(scroll-view)。


首先通过main通过height: 100vh定义了页面高度,然后content通过flex:1定义了自动填充高度。


但content会被内容撑高,scroll-view不能滚动,导致变成了整个页面的滚动。


也尝试过在scroll-view外面套一个view来flex:1,但仍然无效。


求各位指教,谢谢。


WXML代码:
[HTML] 纯文本查看 复制代码
<view class="main">

  <view class="header">
    标题
  </view>

  <view class="content">
    <scroll-view scroll-y>
      <view>内容1</view>
      <view>内容2</view>
      <view>内容3</view>
      <view>内容4</view>
      <view>内容5</view>
      <view>内容6</view>
      <view>内容7</view>
      <view>内容8</view>
      <view>内容9</view>
      <view>内容10</view>
    </scroll-view>
  </view>

</view>


WXSS样式代码:
[CSS] 纯文本查看 复制代码
.main {
  height: 100vh;
  display: flex;
  flex-direction: column;
}

.header {
  padding: 50px;
  background-color: bisque;
}

.content {
  /* flex: 1; */
  background-color: chartreuse;
}

.content view {
  border: 1px sienna solid;
  height: 100px;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

荭颜祸水 发表于 2021-10-17 15:09
content高度固定即可,把cobtent高度百分百
kof21411 发表于 2021-10-17 15:14
 楼主| cqwcns 发表于 2021-10-17 16:22
荭颜祸水 发表于 2021-10-17 15:09
content高度固定即可,把cobtent高度百分百

问题在于我希望content是填充屏幕剩余高度,而不是固定高度。
 楼主| cqwcns 发表于 2021-10-17 16:22
kof21411 发表于 2021-10-17 15:14
如果content要用flex: 1,那么header要给一个高度

没用,试过了。
wang0 发表于 2021-10-17 17:22
给content添加height: 0;
卢潇杰 发表于 2021-10-17 19:06
看楼主的意思,是希望内容滚动,头部固定吗,那flex:1不用设置的,给scroll-view设置高度height:(100vh - 头部的高度) ,内容就可以滚动了
塞北孤舟 发表于 2021-10-17 19:42
一、scroll-view必须给高度,要么固定,要么最大,比如:max-height:80vh;或者height:80vh;这个时候内容过多是会滚动的;有背景色也可以给最小高度min-height:80vh;
二、不使用scroll-view,用view设置高度和overflow-y: auto;一样可以达到效果,头部固定用position: fixed;    top: 0;
ps:这种设计没必要用flex布局,正常的流式布局就行,用flex反而有点别扭,
ps2:scroll-view不是这种效果的最佳实现,更加适合轮播图,和页面内组件左右切换

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 热心回复!

查看全部评分

 楼主| cqwcns 发表于 2021-10-17 21:01
谢谢各位,脑洞打开了。
 楼主| cqwcns 发表于 2021-10-17 21:09
谢谢各位,感觉8楼的方法好。需求实现了。

[HTML] 纯文本查看 复制代码
<view class="main">
 
 <view class="header">
   标题
 </view>

 <view class="content" style="overflow-y: auto;">

     <view>内容1</view>
     <view>内容2</view>
     <view>内容3</view>
     <view>内容4</view>
     <view>内容5</view>
     <view>内容6</view>
     <view>内容7</view>
     <view>内容8</view>
     <view>内容9</view>
     <view>内容10</view>

 </view>

</view>


[CSS] 纯文本查看 复制代码
.main {
  height: 100vh;
  display: flex;
  flex-direction: column;
}
 
.header {
  padding: 50px;
  background-color: bisque;
}
 
.content {
  flex: 1;
  background-color: chartreuse;
}
 
.content view {
  border: 1px sienna solid;
  height: 100px;
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表