移動端屏幕適配+事件+常見問題解決

来源:https://www.cnblogs.com/chenyingying0/archive/2020/01/07/12161337.html
-Advertisement-
Play Games

移動端屏幕適配 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> 移動端屏幕適配與響應式的區別移動端屏幕適配 ...


移動端屏幕適配
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">



移動端屏幕適配與響應式的區別
移動端屏幕適配:
移動端
寬高% / rem
字體px
寬高都隨著屏幕變化等比例變化
響應式:
PC+移動端
寬%
高、字體:px
寬度等比例變化,高度不變


 

簡單適配方案:
simple.js

    (function () {
        'use strict';

        setRemUnit();

        window.addEventListener('resize', setRemUnit);

        function setRemUnit() {
            var docEl = document.documentElement;
            var ratio = 18.75;
            var viewWidth = docEl.getBoundingClientRect().width || window.innerWidth;

            docEl.style.fontSize = viewWidth / ratio + 'px';
        }
    })();

通用適配方案:
flexible.js

    (function () {
        'use strict';

        // dpr->scale = 1 / dpr
        var docEl = document.documentElement,
            viewportEl = document.querySelector('meta[name="viewport"]'),
            dpr = window.devicePixelRatio || 1,
            maxWidth = 540,
            minWidth = 320;

        dpr = dpr >= 3 ? 3 : (dpr >= 2 ? 2 : 1);

        docEl.setAttribute('data-dpr', dpr);
        docEl.setAttribute('max-width', maxWidth);
        docEl.setAttribute('min-width', minWidth);


        var scale = 1 / dpr,
            content = 'width=device-width, initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no';

        if (viewportEl) {
            viewportEl.setAttribute('content', content);
        } else {
            viewportEl = document.createElement('meta');
            viewportEl.setAttribute('name', 'viewport');
            viewportEl.setAttribute('content', content);
            document.head.appendChild(viewportEl);
        }

        setRemUnit();

        window.addEventListener('resize', setRemUnit);

        function setRemUnit() {
            var ratio = 18.75;
            var viewWidth = docEl.getBoundingClientRect().width || window.innerWidth;

            if (maxWidth && (viewWidth / dpr > maxWidth)) {
                viewWidth = maxWidth * dpr;
            } else if (minWidth && (viewWidth / dpr < minWidth)) {
                viewWidth = minWidth * dpr;
            }

            docEl.style.fontSize = viewWidth / ratio + 'px';
        }
    })();

通用適配案例源碼:
預覽圖

index.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>通用適配應用</title>
        <link rel="stylesheet" href="css/base.css">
        <link rel="stylesheet" href="css/icons.css">
        <link rel="stylesheet" href="css/index.css">
        <script src="js/flexible.js"></script>
    </head>
    <body>
        <header class="header-container">
            <div class="navbar">
                <div class="navbar-left">
                    <i class="iconfont icon-scan"></i>
                </div>
                <div class="navbar-center">
                    <div class="searchBox">
                        <div class="searchBox-prepend">
                            <i class="iconfont icon-search"></i>
                        </div>
                        <input type="text" class="searchBox-input" placeholder="開學季有禮,好貨5折起">
                        <div class="searchBox-append">
                            <i class="iconfont icon-close"></i>
                        </div>
                    </div>
                </div>
                <div class="navbar-right">
                    <i class="iconfont icon-msg"></i>
                </div>
            </div>
        </header>

        <div class="main-container">
            <div class="slider-container">
                <img src="img/slider/1.jpg" alt="slider">
            </div>

            <nav class="nav-container">
                <ul class="nav">
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/1.png" alt="nav" class="nav-img">
                            <span class="nav-text">團購</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/2.png" alt="nav" class="nav-img">
                            <span class="nav-text">一元購</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/3.png" alt="nav" class="nav-img">
                            <span class="nav-text">優惠券</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/4.png" alt="nav" class="nav-img">
                            <span class="nav-text">教育</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/5.png" alt="nav" class="nav-img">
                            <span class="nav-text">旅行</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/6.png" alt="nav" class="nav-img">
                            <span class="nav-text">線上訂餐</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/7.png" alt="nav" class="nav-img">
                            <span class="nav-text">慶典</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/8.png" alt="nav" class="nav-img">
                            <span class="nav-text">秒殺</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/9.png" alt="nav" class="nav-img">
                            <span class="nav-text">拍賣</span>
                        </a>
                    </li>
                    <li class="nav-item">
                        <a href="###" class="nav-link">
                            <img src="img/nav/10.png" alt="nav" class="nav-img">
                            <span class="nav-text">服務</span>
                        </a>
                    </li>
                </ul>
            </nav>

            <div class="recommend-container">
                <ul class="recommend">
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/1.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">歐派整體櫥櫃定製簡約現代</p>
                            <p class="recommend-origPrice">
                                <del>¥2000.00</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">1000</strong></span>
                                <span class="recommend-count">985件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/2.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">創維55吋4K超高清HDR</p>
                            <p class="recommend-origPrice">
                                <del>¥2999.00</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">2299</strong></span>
                                <span class="recommend-count">63件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/3.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">【到手259元】蘇泊爾 5L電壓力鍋</p>
                            <p class="recommend-origPrice">
                                <del>¥799.00</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">299</strong></span>
                                <span class="recommend-count">1908件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/4.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">三隻松鼠堅果禮包</p>
                            <p class="recommend-origPrice">
                                <del>¥125.00</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">108</strong></span>
                                <span class="recommend-count">9532件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/5.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">藍月亮洗衣液12斤</p>
                            <p class="recommend-origPrice">
                                <del>¥133.40</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">89.9</strong></span>
                                <span class="recommend-count">5399件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/6.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">福臨門葵花玉米油</p>
                            <p class="recommend-origPrice">
                                <del>¥109.90</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">89.9</strong></span>
                                <span class="recommend-count">6294件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/7.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">TP-LINK 全千兆埠雙頻無線路由器</p>
                            <p class="recommend-origPrice">
                                <del>¥179.00</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">169</strong></span>
                                <span class="recommend-count">4255件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p class="recommend-pic">
                                <img src="img/recommend/8.jpg" alt="recommend" class="recommend-img">
                            </p>
                            <p class="recommend-name">【前1800名再減50】家用高壓洗車機</p>
                            <p class="recommend-origPrice">
                                <del>¥790.00</del>
                            </p>
                            <p class="recommend-info">
                                <span class="recommend-price">¥<strong class="recommend-price-num">268</strong></span>
                                <span class="recommend-count">1599件已售</span>
                            </p>
                        </a>
                    </li>
                    <li class="recommend-item">
                        <a href="###" class="recommend-link">
                            <p 	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 對源碼的解讀有利於搞清楚Hooks到底做了什麼,如果您覺得useEffect很“魔法”,這篇文章也許對您有些幫助。 本篇博客篇幅有限,只看useEffect,力求簡單明瞭,帶您到React Hooks的深處看看 按圖索驥找到Hook相關源碼(可以直接跳) 首先我們從Github上得到react ...
  • button 使用 flex 佈局的相容性問題 在低版本的手機系統中,我們發現 不能夠作為 flex 容器,即使在 CSS 中指定了 且 autoprefixer 也已經轉換成相容屬性,也還是不起作用。具體表現在其內容並不能使用 flex 佈局對齊,比如說居中。 這裡的背景是,我們經常需要展示一些按 ...
  • 比較推薦的學習過程應該是以興趣為驅動的,用搜索做輔助: 1. 我想做一個個人網站,或者給我們團隊或者小組做一些介紹頁面。怎麼做?搜索發現要學習:HTML、CSS。 2. 發現一個網站設計的好漂亮,交互真贊,動畫效果真好。我想在我自己網站上也放上,可是我看不懂它的代碼?搜索發現要學習:交互視覺、CSS ...
  • 用產品的屬性數據說明 頁面里顯示效果為:要把產品的屬性顯示到頁面上,產品屬性為後臺自主上傳產品的屬性,產品的屬性不同,所以需要把屬性和屬性值顯示到頁面上 產品屬性數據為: properties: "[ {"錶面處理":["發黑","發白"]}, {"顏色":["紅色","黃色"]}, {"大小":[ ...
  • 4)Function用法例 3.4.1<head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/></head><script> /*When the Global object is created, it ...
  • 定義和用法 try/catch/finally 語句用於處理代碼中可能出現的錯誤信息。 錯誤可能是語法錯誤,通常是程式員造成的編碼錯誤或錯別字。也 可能是拼寫錯誤或語言中缺少的功能(可能由於瀏覽器差異)。 try語句允許我們定義在執行時進行錯誤測試的代碼塊。 catch 語句允許我們定義當 try  ...
  • CSRF繞過後端Referer校驗分正常情況和不正常的情況,我們這裡主要討論開發在寫校驗referer程式時,不正常的情況下怎麼進行繞過。 正常情況 正常的情況指伺服器端校驗Referer的代碼沒毛病,那麼意味著前端是無法繞過的。 我之前考慮過的方案: JS修改Referer,失敗; 請求惡意網頁後 ...
  • 算數運算符算術運算符描敘運算符實例加+10 + 20 = 30減-10 – 20 = -10乘*10 * 20 = 600除/10 / 20 = 0.5取餘數%返回除法的餘數9%2=1浮點數精確度浮點數值的最高精度是 17 位小數console.log(0.07 * 100); // 7.00000... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...