摘要:適配方案簡單解析相對于根元素的的大小來計算坐作為一個單位是根據手淘團隊,比較,改寫的一個插件,兼容豎屏轉橫屏出現的,自定義視覺設計稿的寬度,設定最大寬度這里有的地址,下載下來用即可第一個參數是視覺設計稿的寬度,一般視覺設計稿有,可
rem + simple-flexible 適配方案 簡單解析
rem 相對于根元素 的 font-size 的大小來計算坐作為一個單位;
simple-flexible 是根據手淘團隊 lib-flexible.js,比較,改寫的一個插件,兼容 UC 豎屏轉橫屏出現的 BUG,自定義視覺設計稿的寬度:designWidth,設定最大寬度:maxWidth
這里有 simple-flexible 的 Github 地址,下載下來用即可;
第一個參數是視覺設計稿的寬度,一般視覺設計稿有 750px,可以根據實際調整
第二個參數則是設置制作稿的最大寬度,超過 750px,則以 750px 為最大限制;
使用時候的換算比例,是 1:100, 即 1rem = 100px;
使用步驟復制 simple-flexible 的 flexible.min.js 或 flexible.js 代碼到頁面的 的 標簽里面;
然后視覺設計稿大小,調整里面的最后兩個參數值;
根據設計像素,使用 rem 單位轉換的視覺設計稿里面的 px 單位,例: 750px = 7.5rem;
優劣簡單實用,基本上沒有什么劣勢,在 IIS上也已經對最新的 IPheonX 做出了適配方案,建議使用
rem + lib-flexible 適配方案 簡單解析lib-flexible.js 是手淘團隊制作的一個 Js 插件,實際上就是能過 JS 來動態改寫 標簽;
lib-flexible.js 基本原理是模擬 vw 把視覺稿分為 100份,以單位 a 來說,1rem = 10a;
以視覺稿 750px 為例子
1a = 7.5px, 1rem = 75px使用步驟
可以根據上面的步驟,外部引入 CDN 也可以
也可以使用模塊化方式
Npm:
npm i -S amfe-flexible
JS:
import "amfe-flexible" /* do something */優劣
在 UC 瀏覽器上發現了,橫批豎屏轉換不過來的情況,已經找到兼容方案,是通過js在頁面的 里生成定義了 元素 font-size 的 style 元素來解決!
而且官方也說明這個是 vw 的過度方案,不建議長期使用;
PostCSS + VW 適配方案 簡單解析PostCSS 將 CSS 變成 JavaScript 的數據,使它變成可操作;
VW 是基于 Viewpost 視窗的長度單位;
Viewpost 是指瀏覽器可視化的區域,而可視化區域即是 window.innerWidth/window.innerHeight 的大小;
與 Viewpost 相關的單位有以下四個
vw : 是 Viewport width 的簡寫 1vw = window.innerWidth的 1%;
vh : 是 Viewport height 的簡寫 1vw = window.innerHeight 1%;
vmin : vw 和 vh 之間的較小值
vmax : vw 和 vh 之間的較大值
使用步驟假設視覺設計稿的寬度是 750px 即 1vw = 7.5px,那么就得根據設計圖的 px 值來轉換 vw單位,為了避免這樣的計算,當然就需要使用到 PostCSS ,以及 postcss-px-to-viewport 一個 PostCSS 的插件
本方案使用打包工具構建項目的時候使用是最酸爽的,建議在以下環境下嘗試;
parceljs
webpack
有過使用前端腳手架的童鞋,應該都有看到過項目根目錄下面都會有一個 .postcssrc 文件,它里面都是一些配置選項比較著名的 autoprefixer,cssnano,px2rem,cssnext...等等好玩的配置插件,但是這里不作這些說明,只介紹 postcss-px-to-viewport 配合 vw 使用
Npm:
npm i -S postcss-px-to-viewport
打開 .postcssrc,假定視覺設計稿的寬度為 750px 改寫配置如下:
//... "plugins": { "postcss-px-to-viewport": true }, "rule": { "postcss-px-to-viewport": { "viewportWidth": 750, "viewportHeight": 1334, "unitPrecision": 5, "viewportUnit": "vw", "selectorBlackList": [], "minPixelValue": 1, "mediaQuery": false } } //...
配置完成之后,在項目中直接使用 px ,構建的時候就會自動轉換為 vw 單位了,簡直不要太爽了;
postcss-px-to-viewport 配置項說明
"viewportWidth" //設置視覺設計稿的寬度 "viewportHeight" //設置視覺設計稿的高度 "unitPrecision": //單位的精度,即保留多少位小數 "viewportUnit": //轉換的單位 "selectorBlackList": //需要忽略的選擇器 "minPixelValue": //最小像素值 "mediaQuery": //是否允許媒體查詢轉換為 px優劣
vw 的兼容性貌似還沒那么好,有可能需要做降級處理,需要使用到 CSS Houdini 和 CSS Polyfill 上一些針對 vw 單位做一個降級處理;
vw 在混合使用到 margin 的 px 時候 有可能超出 100vw ,目前使用 padding 來代替 marging 再配置上 box-sizing 可以解決,亦可以使用 css 的 calc() 函數來做一個計算;
轉換的時候多少還存在一點像素差,無法完全還原;
附加 rem 也不需要計算的裝置在 sublime 上面,有一個插件 cssrem 可以讓放手寫 px 然后 sublime 自動轉換成 rem ,簡直可能愛上了 css,
配置說明如下:
px_to_rem // px轉rem的單位比例,默認為40,基本定義是視覺設計稿的寬度/10; max_rem_fraction_length // px轉rem的小數部分的最大長度,默認為6; available_file_types // 啟用此插件的文件類型。默認為:[".css", ".less", ".sass"];總結
這里總結的三種適配方案本人都有在用,如果說用得最多的應該是第一種了,因為發現的時間比較早,所以用的自然也比較多了;
當然,還有很多本人未知的方案,但是所有的適配方案都是為了完美的還原視覺設計稿,完美解決兼容性問題,當然這都是理想狀態;
感謝 @白白 的幫忙(名詞解析) + 鼓勵(催稿)
感謝 @w3cplus,@前端開發博客,
感謝兩位的四篇文章,給我帶來的啟發
再聊移動端頁面的適配
使用Flexible實現手淘H5頁面的終端適配
rem自適應布局
rem自適應js
原文鏈接 愈發熟練的CSS 技巧
原文博客 時之物語 歡迎來玩哦~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95330.html
摘要:適配方案簡單解析相對于根元素的的大小來計算坐作為一個單位是根據手淘團隊,比較,改寫的一個插件,兼容豎屏轉橫屏出現的,自定義視覺設計稿的寬度,設定最大寬度這里有的地址,下載下來用即可第一個參數是視覺設計稿的寬度,一般視覺設計稿有,可 showImg(https://segmentfault.com/img/bVbbjpG?w=1366&h=660); rem + simple-flexi...
摘要:學編程真的不是一件容易的事不管你多喜歡或是多會編程,在學習和解決問題上總會碰到障礙。熟練掌握核心內容,特別是和多線程初步具備面向對象設計和編程的能力掌握基本的優化策略。 學Java編程真的不是一件容易的事,不管你多喜歡或是多會Java編程,在學習和解決問題上總會碰到障礙。工作的時間越久就越能明白這個道理。不過這倒是一個讓人進步的機會,因為你要一直不斷的學習才能很好的解決你面前的難題...
摘要:輸入的時候少按一個鍵瀏覽器兼容問題比如使用的選擇器命名,在是無效的能良好區分變量命名變量命名是用不要純數字中文等命名,盡量使用英文字母來表示。選擇器和類選擇器最大的不同在于使用次數上。當需要設置英文字體時,英文字體名必須位于中文字體名之前。 回顧上一節HTML 思維導圖 showImg(https://segmentfault.com/img/bVbno3O?w=1378&h=1178...
閱讀 2171·2020-06-12 14:26
閱讀 2477·2019-08-29 16:41
閱讀 1884·2019-08-29 15:28
閱讀 2448·2019-08-26 13:43
閱讀 753·2019-08-26 13:37
閱讀 2772·2019-08-23 18:13
閱讀 2791·2019-08-23 15:31
閱讀 1013·2019-08-23 14:10