响应式页面布局处理-一篇打尽

纯pc端响应式

pc端平常用到的响应式布局 大致就如下三种,当然也会有其他方法,欢迎评论区补充

  • 将div height、width设置成100%
  • flex布局

flex布局主要是将flex-wrap: wrap,

最后,你可以通过给子元素设置 flex 属性来控制它们的大小和扩展方式,flex 属性是 flex-grow, flex-shrink 和 flex-basis

  • grid布局

Grid 布局即网格布局,是一个二维的布局方式,由纵横相交的两组网格线形成的框架性布局结构,能够同时处理行与列

对于响应式页面可以由下面例子使用(配合媒体查询)

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div class="container">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
  <style>
    .container{
      width: 100%;
      height: 100%;
      box-sizing:border-box;
      padding: 20px 40px;
      display: grid;
      align-items: start;
      column-gap: 20px;
      row-gap: 20px;
      grid-template-columns: repeat(6, 1fr);
      flex-wrap: wrap;
      overflow-y: auto;
      .item{
        border: 1px solid black;
        height: 220px;
        min-width: 60px;
      }
    }
    @media screen and (max-width: 1000px) {
      .container{ 
        grid-template-columns: repeat(5, 1fr);
    }
}
  </style>
</body>
</html>

2.移动端h5兼容pc端

这个没有别的方法了,只有媒体查询写两套样式代码

h5移动端:

使用em和rem 相对单位,木墙项目大多使用第三方插件实现,但他们的原理其实是类似的:

引入javascript脚本来实现font-size很屏幕之间的计算 ,就是拿到视口的

宽度 根据比例设置相应的根元素字体 从而设置相对参数的基准

javascript 复制代码
(function(doc, win) {
            // 获取到html这个标签
            let docEL = doc.documentElement;
            let resizeEvent = "orientationchange" in window ? "orientationchange" : "resize",
                recalc = function() {
                    // 获取到档期啊设备的宽度
                    const clientWidth = docEL.clientWidth;
                    if (!clientWidth) return;
                    if (clientWidth > 750) {
                        // 给html设置一个内联样式
                        docEL.style.fontSize = "100px";
                    } else {
                        // 逻辑:以iphone678 为标准 算出来font-size 50px
                        docEL.style.fontSize = (clientWidth / 750) * 100 + "px";
                    }
                }
            recalc();
            win.addEventListener(resizeEvent, recalc, false);
            doc.addEventListener("DOMContentLoaded", recalc, false)
        })(document, window)
相关推荐
IT_陈寒36 分钟前
Redis内存暴涨,没想到是AOF重写捣的鬼
前端·人工智能·后端
ikoala36 分钟前
让 Codex 自己查账:一个省 token 的小技巧
前端·后端·ai编程
ikoala1 小时前
AI 写页面像说明书,修 Bug 像贴膏药?把这两句话写进 AGENTS.md
前端·javascript·ai编程
Penge6661 小时前
《Go 后端开发者学 TypeScript:ES Module了解》
javascript
Penge6661 小时前
《Go 后端开发者学 TypeScript:从零搭建与运行》
javascript
Penge6662 小时前
《Go 后端开发者学 TypeScript:keyof关键字》
javascript
Penge6662 小时前
《Go 后端开发者学 TypeScript:extends关键字》
javascript
张张123y3 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
去伪存真3 小时前
AI Agent Harness 深度测评与技术选型实战
前端·agent
FRing036 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2