屏幕自适应方案

一、屏幕自适应方案

  1. @media screen、%、vw vh、栅格、rem、scale缩放;

二、业务场景

  1. 电脑、平板、手机三种设备自适应:

    建议:

    1. 做三个站点,在前端或者nginx重定向到对应的站点;

  2. 大屏自适应:

    建议:

    1. rem(%、vw vh、栅格、px、flex混合使用);

    2. scale缩放;

三、scale缩放实现

/**
    html部分
 */
 <template>
     <div className="screen-wrapper">
        <div className="screen" id="screen">

        </div>
     </div>
 </template>

 /*
    CSS部分  --除了设计稿的宽高是根据您自己的设计稿决定以外,其他复制粘贴就完事
  */  
<style>
.screen-wrapper {
    height: 100%;
    width: 100%;
    .screen {
        display: inline-block;
        width: 1920px;  //设计稿的宽度
        height: 960px;  //设计稿的高度
        transform-origin: 0 0;
        position: absolute;
        left: 50%;
     }
}
<style>
       
 /**
    js部分
 */
    onMounted(()=> {
      //初始化自适应  ----在刚显示的时候适配一次
      handleScreenAuto();
      //绑定自适应函数  ---窗口变化后适配
      window.onresize = () => handleScreenAuto();
    })
    
    onUnmounted(()=> {
      //组件卸载后取消自适应事件
      window.onresize = null;
    })
    
    //数据大屏自适应函数
    function handleScreenAuto() {
      const designDraftWidth = 1920;//设计稿的宽度
      const designDraftHeight = 960;//设计稿的高度
      //根据屏幕的变化适配的比例
      const scale = document.documentElement.clientWidth/document.documentElement.clientHeight < designDraftWidth/designDraftHeight ?
        (document.documentElement.clientWidth/designDraftWidth) :
        (document.documentElement.clientHeight/designDraftHeight);
      //缩放后居中显示
      document.querySelector('#screen').style.transform = `scale(${scale}) translate(-50%)`;
    }
    
    
    

 

 

 

 

 

 

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章