摘要:屏幕可見的最大寬度高度。相對于當前對象內文本的字體尺寸。特點值并不固定會繼承父級元素的字體大小。所有未經調整的瀏覽器都符合。相對于父元素相對于根元素視窗寬度。可視區高度的和中較小的那個。一般情況之下,像素稱為與設備無關的像素,簡稱。
內容
1.Iconfont 字體圖標(阿里巴巴矢量字體圖標庫)原理以及實現一、Iconfont 字體圖標原理以及實現
2.Media媒體響應式布局
3.Flex彈性盒子布局
4.移動端適配原理 rem(px、em、rem、%、vm):詳解
主講詳情
阿里巴巴矢量圖形庫:https://www.iconfont.cn/
1.原理瀏覽器根據font-family解析渲染為不同圖形的過程:
讀取文字內容轉換成對應的 unicode碼();
根據HTML里設置的 font-family (如果沒設置則使用瀏覽器默認設置)去查找電腦里(如果有自定義字體@font-face ,則加載對應字體文件)對應字體的字體文件;
找到文件后根據 unicode 碼去查找繪制外形,找到后繪制到頁面上;
實現方法:詳情
unicode引用
font-class引用
symbol引用
二、Media媒體響應式布局1.定義:@media 可以針對不同的屏幕尺寸設置不同的樣式 測試
2.語法:
1)css中使用
@media mediatype and|not|only (media feature) { CSS-Code; }
2)針對不同的媒體使用不同 stylesheets
3.媒體類型mediatype
all 用于所有設備
print 用于打印機和打印預覽
screen 用于電腦屏幕,平板電腦,智能手機等。
speech 應用于屏幕閱讀器等發聲設備
4.媒體功能 media feature 測試
width/height 頁面可見區域寬度,高度。
max-width/max-height 頁面最大可見區域寬度,高度。
min-width/min-height 頁面最小可見區域寬度,高度。
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的區別: 詳解
flex: 將對象作為彈性伸縮盒顯示, 寬度默認為100%;
inline-flex:將對象作為內聯塊級彈性伸縮盒顯示,會根據子元素的大小自適應寬度和高度
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子元素的設置float,clear以及vertical-align屬性都是沒有用的。
3.用例1) flex布局講解
2) 多個子項目之間等間距排列
3) flex多行時,最后一行元素左對齊
1) px:屏幕設備物理上能顯示出的最小的一點
瀏覽器最小可以識別12px大小的字體 解決方案
2) em:相對單位。相對于當前對象內文本的字體尺寸。
特點:1、em值并不固定;2、em會繼承父級元素的字體大小。
因為任意瀏覽器的默認字體高都是16px。所有未經調整的瀏覽器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。 為了簡化font-size的換算,需要在css中的body選擇器中聲明font-size=62.5%, 這就使em值變為 16px*62.5%=10px, 這樣12px=1.2em, 10px=1em
3) rem :相對單位。相對于HTML根元素。
4) % :相對于父元素
5) vm 相對于HTML根元素
vw:視窗寬度。1vw=可視區寬度的1%
vh:視窗高度。1vh=可視區高度的1%
vmin:vw和vh中較小的那個。
vmax:vw和vh中較大的那個。
6) 其他
物理像素:(設備像素)是顯示設備中一個最微小的物理部件。每個像素可以根據操作系統設置自己的顏色和亮度。可以理解為我們平時說的分辨率。
設備獨立像素:(密度無關像素)計算機坐標系統中得一個點,這個點代表一個可以由程序使用的虛擬像素(比如: css像素),可以理解為視覺視口的大小
設備像素比(device pixel ratio)
設備像素比(dpr) = 物理像素 / 設備獨立像素
window.devicePixelRatio:獲取到當前設備的dpr
CSS像素:是一個抽像的單位,主要使用在瀏覽器上,用來精確度量Web頁面上的內容。一般情況之下,CSS像素稱為與設備無關的像素(device-independent pixel),簡稱DIPs。
屏幕密度:指一個設備表面上存在的像素數量,它通常以每英寸有多少像素來計算(PPI)
2.原理方案1:Flexible
針對不同手機屏幕尺寸和dpr動態的改變根節點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("將根據已有的meta標簽來設置縮放比例"); 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 { // 其他設備下,仍舊使用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); // 倒退 緩存相關 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實現手淘H5頁面的終端適配
3.postcss官網
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/117533.html
摘要:上節我們講了同源策略,這節我們講講如何跨域。當這些從的腳本執行出錯,因為違背了同源策略為了保證用戶信息不被泄露,錯誤信息不會顯示出來,取而代之只會返回一個。 前端最基礎的就是 HTML+CSS+Javascript。掌握了這三門技術就算入門,但也僅僅是入門,現在前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS),本著提升技術水平,打牢基礎知識的中心思想,我們開課啦(每...
摘要:前端最基礎的就是。往期內容前端培訓初級階段前端培訓初級階段后記慣例補上主講人文章參考資料引用培訓目錄出處已備份到筆記字體生成原理及使用技巧查詢再聊移動端頁面的適配布局教程語法篇布局教程實例篇使用實現手淘頁面的終端適配 前端最基礎的就是 HTML+CSS+Javascript。掌握了這三門技術就算入門,但也僅僅是入門,現在前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS...
摘要:前端最基礎的就是。往期內容前端培訓初級階段前端培訓初級階段后記慣例補上主講人文章參考資料引用培訓目錄出處已備份到筆記字體生成原理及使用技巧查詢再聊移動端頁面的適配布局教程語法篇布局教程實例篇使用實現手淘頁面的終端適配 前端最基礎的就是 HTML+CSS+Javascript。掌握了這三門技術就算入門,但也僅僅是入門,現在前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS...
摘要:前端最基礎的就是。往期內容前端培訓初級階段前端培訓初級階段后記慣例補上主講人文章參考資料引用培訓目錄出處已備份到筆記字體生成原理及使用技巧查詢再聊移動端頁面的適配布局教程語法篇布局教程實例篇使用實現手淘頁面的終端適配 前端最基礎的就是 HTML+CSS+Javascript。掌握了這三門技術就算入門,但也僅僅是入門,現在前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS...
閱讀 2100·2023-04-25 17:23
閱讀 2918·2021-11-17 09:33
閱讀 2512·2021-08-21 14:09
閱讀 3578·2019-08-30 15:56
閱讀 2604·2019-08-30 15:54
閱讀 1622·2019-08-30 15:53
閱讀 2125·2019-08-29 13:53
閱讀 1140·2019-08-29 12:31