回答

收藏

大屏自适应方案

前端知识 前端知识 623 人阅读 | 0 人回复 | 2024-06-07

当屏幕宽高比例小于设计稿时,按设计稿比例沿水平方向铺满屏幕。当屏幕宽高比大于设计稿时,按设计稿比例沿垂直方向铺满屏幕。用等比缩放的方式,不论屏幕多大,分辨率是什么,都能呈现完美效果,如下图所示。



基于transform的自适应方法
首先计算缩放比,根据屏幕大小动态设置<div id="screen">元素的缩放比。代码如下所示:
  1. <!DOCTYPE html>
  2. <html>

  3. <head>
  4.         <meta charset="UTF-8">
  5.         <meta name="renderer" content="webkit" />
  6.         <meta name="force-rendering" content="webkit" />
  7.         <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
  8.         <title>首页</title>
  9.         <meta name="description" content="" />
  10.         <meta name="keywords" content="" />
  11.         <meta name="viewport"
  12.                 content="width=device-width, maximum-scale=1, initial-scale=1, user-scalable=no, viewport-fit=cover">
  13.         <style>
  14.                 // 样式,元素大小完全按照设计稿大小设置
  15.                 .screen-wrapper {
  16.                    height: 100vh;
  17.                    width: 100vw;
  18.                    background-color: aqua;
  19.                 }
  20.                 .screen-wrapper .screen{
  21.                    width: 1920px;
  22.                    height: 1080px;
  23.                    background: yellow;
  24.                    transform-origin: 0 0;
  25.                    position: absolute;
  26.                    left: 50%;
  27.                 }
  28.                 .section{
  29.                    height: 200px;
  30.                    width: 200px;
  31.                    outline: 1px solid #ddd;
  32.                    line-height: 200px;
  33.                    font-size: 40px;
  34.                    text-align: center;
  35.                    display: inline-block;
  36.                 }
  37.         </style>
  38. </head>

  39. <body>
  40.         <div class="screen-wrapper">
  41.             <div class="screen" id="screen">
  42.                 <div class="section">A</div>
  43.                 <div class="section">B</div>
  44.                 <div class="section">C</div>
  45.                 <div class="section">D</div>
  46.                 <div class="section">E</div>
  47.             </div>
  48.         </div>
  49.         <script>
  50.                 function setScale(){
  51.                         let designWidth = 1920;//设计稿的宽度,根据实际项目调整
  52.                         let designHeight = 1080;//设计稿的高度,根据实际项目调整
  53.                         let scale = document.documentElement.clientWidth/document.documentElement.clientHeight < designWidth/designHeight ?
  54.                                          (document.documentElement.clientWidth / designWidth):
  55.                                          (document.documentElement.clientHeight / designHeight);
  56.                         document.querySelector('#screen').style.transform = `scale(${scale}) translate(-50%)`;
  57.                 }
  58.                 window.onresize = function () {
  59.                     setScale()
  60.                 };
  61.         </script>
  62. </body>

  63. </html>
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

25 积分
1 主题
+ 关注