首页 > 其他分享 >移动端弹性布局

移动端弹性布局

时间:2023-10-09 11:47:29浏览次数:22  
标签:100% 布局 高度 弹性 height 适应 自动 position 移动

前言

在PC端中,子容器高度超出父容器高度,通常使用 overflow:auto 可出现滚动条拖动显示溢出的内容
而移动web开发中,由于浏览器厂商的系统不同、版本不同,会有部分机型不支持弹性滚动

image

上图如果在PC端中,我们可以利用 position:fixed 和 overflow:auto 进行简单的布局实现我们需要的效果,而在手机端遇到的问题如下

ios4 和 android2.2 以下不支持 position:fixed
ios 和 android2.3 以下不支持 overflow:auto
ios4 和 android 不支持 overflow-scrolling
最严重的结果是:滚动区域内容无法拖动

对于 ios4 和 android2.2 以下不支持 position:fixed 的问题,有2种布局方法可以替代。

方案一:定义页面整体高度(body,html)为100%,然后使用 position:absolute 布局

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>内容弹性滚动</title>
  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
  <meta name="keywords" content="关键字"/>
  <meta name="description" content="描述"/>
  <style type="text/css">
    body, html {
      margin: 0;
      height: 100%;  //整体高度100%
    }

    .header, .footer {
      background-color: greenyellow;
      text-align: center;
      line-height: 40px;
      height: 40px;
      position: absolute; //采用position: absolute布局方式
      width: 100%;
    }

    .header {
      top: 0;
    }

    .footer {
      bottom: 0;
    }

    .main {
      position: absolute;
      z-index: 1;
      top: 40px;
      bottom: 40px;
      width: 100%;
      overflow: auto;
    }
  </style>
</head>
<body>
<div class="wrap">
  <div class="header">页面头部(固定在顶部)</div>
  <div class="main">
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
  </div>
  <div class="footer">页面底部(固定在底部)</div>
</div>
</body>
</html>

image

方案二:定义页面整体高度(body,html)为100%,然后使用 display:flex 布局

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>内容弹性滚动</title>
  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
  <meta name="keywords" content="关键字"/>
  <meta name="description" content="描述"/>
  <style type="text/css">
    body, html {
      margin: 0;
      height: 100%; //页面高度设置100%显示
    }

    .wrap {
      display: flex;
      flex-direction: column;  //flex布局
      width: 100%;
      height: 100%;
    }

    .header, .footer {
      background-color: greenyellow;
      text-align: center;
      line-height: 40px;
      height: 40px;
      width: 100%;
    }

    .main {
      flex: 1;
      width: 100%;
      overflow: auto;
    }
  </style>
</head>
<body>
<div class="wrap">
  <div class="header">页面头部(固定在顶部)</div>
  <div class="main">
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
    <p>高度自动适应</p>
  </div>
  <div class="footer">页面底部(固定在底部)</div>
</div>
</body>
</html>

标签:100%,布局,高度,弹性,height,适应,自动,position,移动
From: https://www.cnblogs.com/songxia/p/17751308.html

相关文章

  • 以实现资源池化弹性管理、企业应用集 中管理、统一安全认证和授权等管理
    使用提供的用户名密码,登录提供的OpenStack私有云平台,在当前租户下,使用CentOS7.9镜像,创建两台云主机,云主机类型使用4vCPU/12G/100G_50G类型。当前租户下默认存在一张网卡,自行创建第二张网卡并连接至controller和compute节点(第二张网卡的网段为192.168.X.0/24,X为工位......
  • 视频直播源码,标题居中,底部按钮为三个时居中布局
    视频直播源码,标题居中,底部按钮为三个时居中布局更改底部按钮默认大写的设置 <stylename="CustomAlertDialog"parent="@style/Theme.AppCompat.Light.Dialog.Alert">    <itemname="buttonBarButtonStyle">@style/CustomAlertDialogButton</item><......
  • 【稳定性】稳定性建设之弹性设计
    背景随着业务的快速变化和技术的不断发展,系统面临着诸多挑战,例如流量峰值、依赖服务故障、硬件故障、网络中断、软件缺陷等,这些因素都可能影响到系统的正常运行。在这种背景下,弹性设计(ResilienceDesign)应运而生。弹性设计是一种系统的设计和构建方法,系统的设计原则应该本着不信......
  • 『PyQt5-Qt Designer篇』| 08 Qt Designer中容器布局和绝对布局的使用
    (08QtDesigner中容器布局和绝对布局的使用)1容器布局1.1设计容器布局先拖入一个容器Frame容器,然后拖入几个控件:把拖入的控件拖入容器中:选中容器,右键-布局-栅格布局:1.2保存文件并执行保存为test007_ConFra.ui,并生成test007_ConFra.py:#-*-coding:utf-8-*-#......
  • 将最近的提交移动到Git的新分支
    内容来自DOChttps://q.houxu6.top/?s=将最近的提交移动到Git的新分支如何将主分支上的最近提交移动到新分支,并将主分支重置为这些提交之前的状态?例如,从以下状态:masterA-B-C-D-E变成这样:newbranchC-D-E/masterA-B移动到现有分......
  • Go 项目代码布局
    Go项目代码布局目录Go项目代码布局一、Go语言“创世项目”结构1.1src目录结构三个特点二、Go项目布局演进2.1演进一:Go1.4版本删除pkg这一中间层目录并引入internal目录2.2演进二:Go1.6版本增加vendor目录2.3演进三:Go1.13版本引入go.mod和go.sum三、现在Go......
  • 基于亚马逊云科技Amazon EC2云服务器,以高弹性和安全性自建堡垒机
    背景 在很多企业的实际应用场景中,特别是金融类的客户,大部分的应用都是部署在私有子网中,如何能够让客户的开发人员和运维人员从本地的数据中心中安全的访问云上资源,堡垒机是一个很好的选择。传统堡垒机的核心实现原理是基于SSH协议的安全连接,通常运用SSH(SecureShell)协议实现数据的......
  • maestro 移动ui 自动化测试框架
    maestro是一个移动ui自动化测试框架,基于yaml定义就可以快速的实现移动ui的测试,支持ios,android,reactnatice,fluttermaestro安装简单,就是一个二进制文件说明对于需要进行移动端自动化测试的团队maestro是一个很值得使用的工具参考资料https://github.com/mobile-dev-inc/ma......
  • Android入门教程 | UI布局之RelativeLayout 相对布局
    RelativeLayout简述RelativeLayout继承于android.widget.ViewGroup,按照子元素之间的位置关系完成布局,作为Android系统五大布局中最灵活也是最常用的一种布局方式,非常适合于一些比较复杂的界面设计。RelativeLayout和LinearLayout类似,都是ViewGroup,能“容纳”多个子view。R......
  • 移动端应用安全加固
    Android移动应用安全加固致力于成为业界移动应用安全专家,为移动数据安全保驾护航!安全加固刻不容缓目前移动领域已经出现了相当部分的安全问题,新的恶意软件层出不穷,同时,企业对敏感数据保密性意识日益提高,作为移动开发者,有责任对最终用户的隐私和安全承担更多责任。另一方面,APP被篡......