摘要:屏幕可見的最大寬度高度。相對于當前對象內(nèi)文本的字體尺寸。特點值并不固定會繼承父級元素的字體大小。所有未經(jīng)調(diào)整的瀏覽器都符合。相對于父元素相對于根元素視窗寬度。可視區(qū)高度的和中較小的那個。一般情況之下,像素稱為與設(shè)備無關(guān)的像素,簡稱。
內(nèi)容
1.Iconfont 字體圖標(阿里巴巴矢量字體圖標庫)原理以及實現(xiàn)一、Iconfont 字體圖標原理以及實現(xiàn)
2.Media媒體響應(yīng)式布局
3.Flex彈性盒子布局
4.移動端適配原理 rem(px、em、rem、%、vm):詳解
主講詳情
阿里巴巴矢量圖形庫:https://www.iconfont.cn/
1.原理瀏覽器根據(jù)font-family解析渲染為不同圖形的過程:
讀取文字內(nèi)容轉(zhuǎn)換成對應(yīng)的 unicode碼();
根據(jù)HTML里設(shè)置的 font-family (如果沒設(shè)置則使用瀏覽器默認設(shè)置)去查找電腦里(如果有自定義字體@font-face ,則加載對應(yīng)字體文件)對應(yīng)字體的字體文件;
找到文件后根據(jù) unicode 碼去查找繪制外形,找到后繪制到頁面上;
實現(xiàn)方法:詳情
unicode引用
font-class引用
symbol引用
二、Media媒體響應(yīng)式布局1.定義:@media 可以針對不同的屏幕尺寸設(shè)置不同的樣式 測試
2.語法:
1)css中使用
@media mediatype and|not|only (media feature) { CSS-Code; }
2)針對不同的媒體使用不同 stylesheets
3.媒體類型mediatype
all 用于所有設(shè)備
print 用于打印機和打印預(yù)覽
screen 用于電腦屏幕,平板電腦,智能手機等。
speech 應(yīng)用于屏幕閱讀器等發(fā)聲設(shè)備
4.媒體功能 media feature 測試
width/height 頁面可見區(qū)域?qū)挾?高度。
max-width/max-height 頁面最大可見區(qū)域?qū)挾?高度。
min-width/min-height 頁面最小可見區(qū)域?qū)挾?高度。
device-width/device-height 屏幕可見寬度,高度。
max-device-width/max-device-height 屏幕可見的最大寬度,高度。
min-device-width/min-device-height 屏幕最小可見寬度,高度。
5.用例
http://2011.dconstruct.org
flex圖片
display:flex和display: inline-flex的區(qū)別: 詳解
flex: 將對象作為彈性伸縮盒顯示, 寬度默認為100%;
inline-flex:將對象作為內(nèi)聯(lián)塊級彈性伸縮盒顯示,會根據(jù)子元素的大小自適應(yīng)寬度和高度
1.容器的屬性flex-direction: row | row-reverse | column | column-reverse;用來控制子項整體布局方向
flex-wrap: nowrap | wrap | wrap-reverse;用來控制子項整體單行顯示還是換行顯示
flex-flow: <‘flex-direction’> || <‘flex-wrap’> 簡寫 表示flex布局的flow流動特性
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;水平方向上子項的對齊和分布方式
align-items: stretch | flex-start | flex-end | center | baseline;垂直方向上子項的對齊方式
align-content: stretch | flex-start | flex-end | center | space-between | space-around | space-evenly;用于子項多行顯示時,垂直方向上子項的對齊和分布方式。
2.項目的屬性order:
flex-grow:
flex-shrink:
flex-basis:
flex: none(0 0 auto) | auto(1 1 auto) | [ <"flex-grow"> <"flex-shrink">? || <"flex-basis"> ] /默認值為 0 1 auto/
align-self: auto(繼承自flex容器的align-items屬性值) | flex-start | flex-end | center | baseline | stretch;控制多帶帶某一個flex子項的垂直對齊方式
注意:
在Flex布局中,flex子元素的設(shè)置float,clear以及vertical-align屬性都是沒有用的。
3.用例1) flex布局講解
2) 多個子項目之間等間距排列
3) flex多行時,最后一行元素左對齊
1) px:屏幕設(shè)備物理上能顯示出的最小的一點
瀏覽器最小可以識別12px大小的字體 解決方案
2) em:相對單位。相對于當前對象內(nèi)文本的字體尺寸。
特點:1、em值并不固定;2、em會繼承父級元素的字體大小。
因為任意瀏覽器的默認字體高都是16px。所有未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。 為了簡化font-size的換算,需要在css中的body選擇器中聲明font-size=62.5%, 這就使em值變?yōu)?16px*62.5%=10px, 這樣12px=1.2em, 10px=1em
3) rem :相對單位。相對于HTML根元素。
4) % :相對于父元素
5) vm 相對于HTML根元素
vw:視窗寬度。1vw=可視區(qū)寬度的1%
vh:視窗高度。1vh=可視區(qū)高度的1%
vmin:vw和vh中較小的那個。
vmax:vw和vh中較大的那個。
6) 其他
物理像素:(設(shè)備像素)是顯示設(shè)備中一個最微小的物理部件。每個像素可以根據(jù)操作系統(tǒng)設(shè)置自己的顏色和亮度。可以理解為我們平時說的分辨率。
設(shè)備獨立像素:(密度無關(guān)像素)計算機坐標系統(tǒng)中得一個點,這個點代表一個可以由程序使用的虛擬像素(比如: css像素),可以理解為視覺視口的大小
設(shè)備像素比(device pixel ratio)
設(shè)備像素比(dpr) = 物理像素 / 設(shè)備獨立像素
window.devicePixelRatio:獲取到當前設(shè)備的dpr
CSS像素:是一個抽像的單位,主要使用在瀏覽器上,用來精確度量Web頁面上的內(nèi)容。一般情況之下,CSS像素稱為與設(shè)備無關(guān)的像素(device-independent pixel),簡稱DIPs。
屏幕密度:指一個設(shè)備表面上存在的像素數(shù)量,它通常以每英寸有多少像素來計算(PPI)
2.原理方案1:Flexible
針對不同手機屏幕尺寸和dpr動態(tài)的改變根節(jié)點html的font-size大小(基準值)。講解 :
;(function(win, lib) { var doc = win.document; var docEl = doc.documentElement; var metaEl = doc.querySelector("meta[name="viewport"]"); var flexibleEl = doc.querySelector("meta[name="flexible"]"); var dpr = 0; var scale = 0; var tid; var flexible = lib.flexible || (lib.flexible = {}); if (metaEl) { console.warn("將根據(jù)已有的meta標簽來設(shè)置縮放比例"); var match = metaEl.getAttribute("content").match(/initial-scale=([d.]+)/); if (match) { scale = parseFloat(match[1]); dpr = parseInt(1 / scale); } } else if (flexibleEl) { var content = flexibleEl.getAttribute("content"); if (content) { var initialDpr = content.match(/initial-dpr=([d.]+)/); var maximumDpr = content.match(/maximum-dpr=([d.]+)/); if (initialDpr) { dpr = parseFloat(initialDpr[1]); scale = parseFloat((1 / dpr).toFixed(2)); } if (maximumDpr) { dpr = parseFloat(maximumDpr[1]); scale = parseFloat((1 / dpr).toFixed(2)); } } } if (!dpr && !scale) { var isAndroid = win.navigator.appVersion.match(/android/gi); var isIPhone = win.navigator.appVersion.match(/iphone/gi); var devicePixelRatio = win.devicePixelRatio; if (isIPhone) { // iOS下,對于2和3的屏,用2倍的方案,其余的用1倍方案 if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) { dpr = 3; } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){ dpr = 2; } else { dpr = 1; } } else { // 其他設(shè)備下,仍舊使用1倍的方案 dpr = 1; } scale = 1 / dpr; } docEl.setAttribute("data-dpr", dpr); if (!metaEl) { metaEl = doc.createElement("meta"); metaEl.setAttribute("name", "viewport"); metaEl.setAttribute("content", "initial-scale=" + scale + ", maximum-scale=" + scale + ", minimum-scale=" + scale + ", user-scalable=no"); if (docEl.firstElementChild) { docEl.firstElementChild.appendChild(metaEl); } else { var wrap = doc.createElement("div"); wrap.appendChild(metaEl); doc.write(wrap.innerHTML); } } function refreshRem(){ var width = docEl.getBoundingClientRect().width; if (width / dpr > 540) { width = 540 * dpr; } var rem = width / 10; docEl.style.fontSize = rem + "px"; flexible.rem = win.rem = rem; } win.addEventListener("resize", function() { clearTimeout(tid); tid = setTimeout(refreshRem, 300); }, false); // 倒退 緩存相關(guān) win.addEventListener("pageshow", function(e) { if (e.persisted) { clearTimeout(tid); tid = setTimeout(refreshRem, 300); } }, false); if (doc.readyState === "complete") { doc.body.style.fontSize = 12 * dpr + "px"; } else { doc.addEventListener("DOMContentLoaded", function(e) { doc.body.style.fontSize = 12 * dpr + "px"; }, false); } refreshRem(); flexible.dpr = win.dpr = dpr; flexible.refreshRem = refreshRem; flexible.rem2px = function(d) { var val = parseFloat(d) * this.rem; if (typeof d === "string" && d.match(/rem$/)) { val += "px"; } return val; } flexible.px2rem = function(d) { var val = parseFloat(d) / this.rem; if (typeof d === "string" && d.match(/px$/)) { val += "rem"; } return val; } })(window, window["lib"] || (window["lib"] = {}));
方案2:使用vw適配
https://www.w3cplus.com/css/v...
3.參考1.https://github.com/amfe/lib-f...
2.使用Flexible實現(xiàn)手淘H5頁面的終端適配
3.postcss官網(wǎng)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/117533.html
摘要:上節(jié)我們講了同源策略,這節(jié)我們講講如何跨域。當這些從的腳本執(zhí)行出錯,因為違背了同源策略為了保證用戶信息不被泄露,錯誤信息不會顯示出來,取而代之只會返回一個。 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門技術(shù)就算入門,但也僅僅是入門,現(xiàn)在前端開發(fā)的定義已經(jīng)遠遠不止這些。前端小課堂(HTML/CSS/JS),本著提升技術(shù)水平,打牢基礎(chǔ)知識的中心思想,我們開課啦(每...
摘要:前端最基礎(chǔ)的就是。往期內(nèi)容前端培訓(xùn)初級階段前端培訓(xùn)初級階段后記慣例補上主講人文章參考資料引用培訓(xùn)目錄出處已備份到筆記字體生成原理及使用技巧查詢再聊移動端頁面的適配布局教程語法篇布局教程實例篇使用實現(xiàn)手淘頁面的終端適配 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門技術(shù)就算入門,但也僅僅是入門,現(xiàn)在前端開發(fā)的定義已經(jīng)遠遠不止這些。前端小課堂(HTML/CSS/JS...
摘要:前端最基礎(chǔ)的就是。往期內(nèi)容前端培訓(xùn)初級階段前端培訓(xùn)初級階段后記慣例補上主講人文章參考資料引用培訓(xùn)目錄出處已備份到筆記字體生成原理及使用技巧查詢再聊移動端頁面的適配布局教程語法篇布局教程實例篇使用實現(xiàn)手淘頁面的終端適配 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門技術(shù)就算入門,但也僅僅是入門,現(xiàn)在前端開發(fā)的定義已經(jīng)遠遠不止這些。前端小課堂(HTML/CSS/JS...
摘要:前端最基礎(chǔ)的就是。往期內(nèi)容前端培訓(xùn)初級階段前端培訓(xùn)初級階段后記慣例補上主講人文章參考資料引用培訓(xùn)目錄出處已備份到筆記字體生成原理及使用技巧查詢再聊移動端頁面的適配布局教程語法篇布局教程實例篇使用實現(xiàn)手淘頁面的終端適配 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門技術(shù)就算入門,但也僅僅是入門,現(xiàn)在前端開發(fā)的定義已經(jīng)遠遠不止這些。前端小課堂(HTML/CSS/JS...
閱讀 2112·2023-04-25 17:23
閱讀 2924·2021-11-17 09:33
閱讀 2518·2021-08-21 14:09
閱讀 3602·2019-08-30 15:56
閱讀 2610·2019-08-30 15:54
閱讀 1630·2019-08-30 15:53
閱讀 2136·2019-08-29 13:53
閱讀 1152·2019-08-29 12:31