一个前端样式样式既要又要的问题

查看 45|回复 5
作者:wencan   
网页是 SPA  
祖先元素样式:min-height:100%
这样,PC 下大部分场景,可以刚好拉伸主要部分占满屏幕; mobile 大部分场景下,祖先元素自动超出 100%的高度
这点之前一直工作得很好  
但特例出现了
一个场景,需要祖先元素高度刚好 100%,不能再多,也不能更少
如果子元素内容太少,填充高度,不能减少祖先元素的高度
如果子元素内容太多,展示垂直滚动条,不能增加祖先元素的高度  
chatgpt 和 claude 给的方案:flex-grow: 1;  overflow-y: auto;。实际试过了,不行。其中一个例子放下面了,大家可以试着改下  
也想到了两个可行方案:  
[ol]
  • 当需要这个特例时,发个事件通知祖先元素加上:max-height:100%;当不需要时,再发个事件……  
  • 将这个特例作为一个单独的 url/页面,换一个 height 固定为 100%的祖先元素……  
    [/ol]
    求教,有没有更好的方案  
    下面是 claude 给的一个不可行的例子  
       
       
            html, body {
                height: 100%;
                margin: 0;
                padding: 0;
            }
            .container {
                display: flex;
                min-height: 100%;
                flex-direction: column;
            }
            .content {
                flex: 1;
                overflow-y: auto; /* 内容超出时显示垂直滚动条 */
                display: flex;
                flex-direction: column;
            }
            .text-wrapper {
                flex-shrink: 0; /* 防止内容被压缩 */
                overflow-y: auto; /* 文本内容超出时显示滚动条 */
            }
       

       
            头部应该保持不动
            
                
                    这是一段测试文本。这里可以添加很长很长的文本,
                    当文本内容超过容器高度时,会自动出现垂直滚动条。
                    同时,容器高度会保持在 100%,不会被限制。
                    (重复文本以模拟长内容)
                
            
       

  • jackple   
    简单粗暴点可以在子元素设置 height: calc(100vh - 22px);
    wencan
    OP
      
    @jackple
    想过这个方法
    一来祖先元素的子元素分布在不同的文件
    二来窗口会 resize
    jackple   
    跟其他子元素已经无关了吧, 不是只管当前这个子元素就可以了么? 不是很明白你的场景了 @wencan
    jackple   
    而且跟 resize 有什么关系呢
    wencan
    OP
      
    @jackple 你那个例子中,22px 就是其它子元素的高度吧?
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部