摘要:任務五一個最常見的移動端頁面完成的事情學習張鑫旭世界相關章節張鑫旭系列了解通配符選擇器性能優化瀏覽器渲染原理學習各屬性及效果完成任務五學習編碼規范編碼規范并按照編碼規范優化代碼完成深度思考計劃的事情找時間把前面任務的官方提供鏈接過一遍,查缺
任務五、 一個最常見的移動端頁面 完成的事情
float學習
張鑫旭《CSS世界》相關章節
張鑫旭 float系列
了解CSS通配符 & 選擇器性能優化/瀏覽器渲染原理
background學習(各屬性及效果)
完成任務五
學習CSS編碼規范CSS編碼規范, 并按照編碼規范優化代碼
完成深度思考
計劃的事情[ ] 找時間把前面任務的官方提供鏈接過一遍,查缺補漏
[ ] 深度思考:手機分辨率和網頁px的區別(TODO:周末補學)
link1
link2
link3
遇到的問題[ ] IE10下自我介紹一行右側無法自動自動換行(flex).
[ ] 不清楚圖片效果的實現方式,可能需要了解以下圖片用了什么處理再找編碼對策
收獲 一、任務五計劃及開發明確效果:目標是開發一個屏幕自適應的護工個人主頁,最終效果如下:
開發步驟
截取效果圖 & 通過PSD中獲取資源圖 & 獲取header底色#5fc0cd、價格顏色#e26163
界面組成分析:
header: header用display:fixed,左側后退+居中title,可用float或absolute解決. 為了實現灰色半透明層效果需加多一層div.transparent
main: 按照上節的學習為了防止移動端fixed出Bug,main也用position:absolute然后再在main中使用一個div.content來承載內容并支持滾動.
info: 定高,圖片做背景,左邊圖片浮動并設置margin,右邊用overflow:hidden清除浮動完成定位.
skill: title欄左border,condition欄使用flex左靠,接下來都用flex包含label+span來完成
footer: footer用display:fixed, 兩個btn高度不變自適應屏幕寬度可用flex解決,為了保證伸縮3個margin不變故margin用rem寫.
效果對比:
對比優化
學習背景圖知識并嘗試實現背景圖效果
完成background學習
學習了fliter屬性,不過只是將圖像模糊化并調整了亮度, 為此將原本的文字及圖片abosulte開來, 然后原本的背景也改成用div.bg來實現模糊&亮度的修改.
順便修繕了下location,使其支持多行地點文字布局不變形.
技能高度每行都減少
底部button高度提高,并取消縱向margin
footer加入padding
float學習 參考:張鑫旭《CSS世界》
學習總結
float本質: 本質是為了實現文字環繞效果. 因此在界面布局方面只是簡單堆疊的話會造成彈性缺失.
float特性
包裹性: "包裹" + "自適應性"
包裹:float元素的子元素如果寬度更小,則float元素寬度將表現為其子元素寬度
自適應性:float元素的子元素旁若有文字,則將自適應為子元素+文字寬度(非連續長串英文情況下,最大寬度為float元素寬度)
塊狀化并格式化上下文:若float屬性值不為none,則其display計算值為block或者table.
破壞文檔流(文字環繞圖片效果實現原理):
場景描述:場景代碼如下,img可添加float:left屬性觸發文字環繞效果,p元素為塊狀盒子,可能被分為多行,每行的文字都處于一個內聯盒子中.
啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
讓父元素高度塌陷:讓跟隨的內容(文字)可以和浮動元素(圖片)在一個水平線上
行框盒子和浮動元素的不可重疊性:
行框盒子(每行內聯元素所在的盒子)被float限制故和浮動元素(圖片)完全不重疊,且永遠無法通過CSS改變大小.
塊狀盒子(內聯元素上級盒子)與浮動元素(圖片)完全重疊,
抗浮動
結合任務四的header布局實現實例,有三種方案可以先讓兩個標簽左右float,再對設置text-align:center; & 設置抗浮動:
margin法: 設置
clear法: 設置
overflow法: 設置
CSS通配符
觀點:
查詢次數多&匹配效率低,會影響性能但是影響不大
影響可維護性 & 容易造成樣式沖突
所有需要設置的元素放在一起設置
建議使用css reset文件
necolas/normalize.css
jgthms/minireset.css
選擇器性能優化 參考:網站CSS選擇器性能討論
樣式系統從最右的選擇符開始向左進行匹配規則,只要左邊還有選擇符就會繼續向左移動.
CSS選擇器效率排序(快到慢):
id選擇器(#myid)
類選擇器(.myclassname)
標簽選擇器(div,h1,p)
相鄰選擇器(h1+p)
子選擇器(ul < li)
后代選擇器(li a)
通配符選擇器(*)
屬性選擇器(a[rel=”external”])
偽類選擇器(a:hover,li:nth-child)
優化方法:
id選擇器最快,不要同時使用其他選擇器
類選擇器盡量不合標簽選擇器同時用
明確DOM結構情況下優先使用子選擇器
使用類選擇器替代后代選擇器&子選擇器
盡量用繼承避免編寫重復樣式
瀏覽器渲染原理
參考:
前端必讀:瀏覽器內部工作原理
瀏覽器的渲染:過程與原理
A 網頁加載耗時分布:
DNS查詢
TCP連接
HTTP請求及響應
服務器響應
客戶端渲染(瀏覽器渲染)
B 渲染引擎
Geoko: Firefox(新版用Quantum)
Webkit: Safari & Chrome
Trident: IE
Edge: Edge
C 渲染流程:
1) 解析html構建DOM樹: 將標簽轉化為內容樹的DOM節點
2) 構建render樹:解析外部CSS及style標志中的樣式信息,用以構建render樹. render樹由一些包含顏色和大小等屬性的矩形(??)組成,他們將被按照正確順序顯示到屏幕上.(CSS->CSSOM樹,DOM+CSSOM樹->render樹)
3) 布局render樹:確定每個節點在屏幕上的確切坐標
4) 繪制render樹:遍歷render樹,并使用UI后端層繪制每個節點
Tip:以上過程是逐步完成的,為了更好的用戶體驗渲染引擎將會盡可能早地呈現內容,也就是邊解析邊顯示.
渲染優化知識點
關鍵渲染路徑:與當前用戶操作有關的內容,即用戶打開網頁時首屏的顯示.具體到瀏覽器就是HTML&CSS&JS等資源的接收及處理后渲染出頁面.了解的目的就是為了優化,優化需要針對具體問題,比如保證首屏內容的最快顯示,可以推出PWA也就是漸進式頁面渲染,由此可以再推到資源拆分、場景策略等.
CSS & JS加載:
Tip
CSS會阻塞渲染直至CSSOM構建完畢
穿插在HTML中的script標簽將阻塞HTML解析
JS的defer&async
對inline-script無效
defer用于延遲執行引入并且不阻塞HTML解析.待整個文檔解析完畢后執行defer的JS,最后觸發DOMContentLoaded事件.
async用于異步引入JS,如果已經加載好就會開始執行,但是執行順序不確定.
優化方法:
優先引入CSS,JS盡量少影響DOM的構建
實際工程中經常將JS放到文檔底部
前(非框架文件)
三、background學習定義:用于定義HTML元素的背景.
屬性:
background-color: 背景色
設定方式:
十六進制: #ff0000
RGB: rgb(255, 0, 0)
顏色名稱: red
RGBA(???)
透明:transparent
inherit:繼承父元素背景色
background-image: 背景圖像(默認平鋪重復)
設定方式: url("[path]")
background-repeat:
水平平鋪:repeat-x
垂直平鋪: repeat-y
不平鋪:no-repeat
background-attachment:是否隨頁面滾動
scroll: 跟隨頁面滾動
fixed:跟隨進度條位置
inherit: 繼承自父元素
background-position: 設置背景圖像的起始位置(Firefox和Opera需要先設置為fixed才能正常工作)
設定方式:
top|center|bottom(垂直) left|center|right(水平)
x%(水平) y%(垂直)
xpos(水平) ypos(垂直)
background-origin: 相對位置
值:padding-box|border-box|content-box
background-size: 背景圖片大小
值: length(寬度,高度)|percentage(寬度,高度)|cover(保持縱橫比并縮放成完全覆蓋背景定位區域的最大大小)|contain(保持縱橫比并縮放成合適背景定位區域的最大大小,即只滿足短的方向的等比例縮放)
三、深度思考1.css可以繪制哪些常見的特殊形狀?
參考:
奇妙的 CSS shapes(CSS圖形)
The Shapes of CSS
梯形、三角形、六邊形、圓形、心型、五角星...
SharpsDemo演示
2.如何理解vertical-align與line-height?
參考:
深入理解line-height與vertical-align
CSS深入理解vertical-align和line-height的基友關系
line-height: 行高.只影響inline元素及內容.
可選值:
默認值:normal(通常是font-size的1.2倍)
內容區:行內文本,font-size決定了其高度;
行內框:等于行間距(上半)+內容區+行間距(下半),line-height決定了其高度;當font-size>line-height時行內框小于內容區;
行框:行內的最高行內框頂端到最低行內款底端的距離,且各行框頂端挨著上一行框的底端;
框屬性:
padding、border、margin的top&bottom都不影響行高(行框高度), 其left&right都會應用到元素的開始結尾;
行內元素的邊框邊界由font-size控制而非line-height;
行內替換元素:根據元素的標簽屬性來決定其顯示的具體內容的元素,如 & . 其位于基線(vertical-align:bashline)上, 替換元素的基線是正常流中最后一個行框的基線,除非元素內容為空或者本身的overflow屬性值不是visible,這種情況下基線是marigin底邊緣.
vertical-align
可選值:
關鍵字值: baseline|sub|super|text-top|text-bottom|middle|top|bottom
長度值:??em|??px
百分比值:?% (vertical-align的百分比相對于line-height進行計算)
全局值:inherit|initial|unset
默認值:baseline
關系
對于內聯元素各種想得通或者想不通的行為表現,基本上都可以用vertical-align和line-height來解釋,以及進行行為矯正
vertical-align的百分比相對于line-height進行計算
學習演示地址
3.請解釋一下CSS3的Flexbox(彈性盒布局模型)以及適用場景?
Flex布局用于簡潔、完整、響應式地實現各種頁面布局,給盒模型提供最大的靈活性. 采用Flex布局的元素稱為Flex容器(flex container), 其所有子元素自動成為容器成員即Flex項目(flex item). 容器默認存在兩根軸,水平的主軸(main axis)和交叉軸(cross axis),Flex項目默認沿主軸排列.
適用場景:
網格布局:設置flex
百分比布局:先設置flex:1, 再設置flex: 0 0 %
圣杯布局: 該填滿的用flex:1
輸入框布局:一側定長,其他flex:1填滿
懸掛式布局:一側定長,其他flex:1填滿
固定底欄:方向column,定高
流式布局: 參考任務一
4.title與h1、b與strong、i與em、img的alt與title、src與href有什么區別 參考:Web品質
& : 為無意義的加粗,現在的Web標準不建議直接元素設計具體表現形式,故建議少用; 表更強的強調,可以用CSS替換其加粗樣式,比較符合Web標準;
& : 為無意義的斜體,現在的Web標準不建議直接元素設計具體表現形式,故建議少用; 表示一般強調,可以用CSS替換其斜體樣式,比較符合Web標準;
的alt & title屬性、src & href屬性:
alt:無法顯示圖片時起到文本替代的作用, 瀏覽器在特殊瀏覽器上有輔助作用;
title: 鼠標劃過時的文本提示;
src:資源對應路徑,將資源加載到文檔中;
href:指向的鏈接,不加載資源;
5.如何使用IconFont? 參考:IconFont使用
unicode引用:
使用:拷貝字體到項目然后加入font-face, css定義iconfont樣式, 選擇圖標及字體編碼應用于頁面;
特點:兼容性好(IE6+);支持按字體方式動態調整圖標大小顏色;不支持多色;
font-class引用:
使用:拷貝fontclass代碼,直接選圖標并在應用上應用類名;
解決問題:解決unicode書寫不直觀 & 語意不明確的問題;
特點:兼容性良好(IE8+);語意明確;改圖標只需要修改class的unicode引用;不支持多色;
symbol引用:
使用:拷貝symbol代碼,引入CSS代碼,直接選圖標并在應用上應用類名;
特點:支持多色圖標;可以像字體用font-size & color調整樣式;兼容性較差(IE9+);svg渲染性能一般,遜于png.
解決問題:單色限制問題.
6.HTML中dl、ul、ol用哪個比較好?
dl: 定義列表,包含自定義列表項
ul: 無序列表,默認用小圓點進行標記.適用于無序列表清單.但是由于自帶的效果在不同瀏覽器效果不同,故一般會去掉標記.
ol: 有序列表,默認用數字進行標記.適用于有序列表清單.
效果Github
線上展示
系列文章【CSS練習】IT修真院--練習1-九宮格
【CSS練習】IT修真院--練習2-開發工具
【CSS練習】IT修真院--練習3-簡單界面
【CSS練習】IT修真院--練習4-移動端界面
【CSS練習】IT修真院--練習5-護工個人界面
【CSS練習】IT修真院--練習6-護工列表界面
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/113487.html
摘要:任務六護工列表頁完成的事情規劃任務六完成基本界面編寫計劃的事情限制最小寬度使用雪碧圖替換當前的多張圖片引入完成模擬下拉框編寫屏幕過窄時,列表項左邊文字被截斷出現省略號復習之前的代碼規范,優化代碼查看驗收標準查看深度思考遇到的問題收獲頁面原生 任務六、 護工列表頁 完成的事情 1.規劃任務六2.完成基本界面編寫 計劃的事情 [x] 限制最小寬度 [x] 使用雪碧圖替換當前的多張圖片引入...
摘要:任務三一個最簡單的移動端頁面今天完成的事情運用布局知識跟隨設計圖進行布局,完成簡單并繼續學習優化讓布局更好適應屏幕變化使用了盒模型及百分比了解區別在中應用圖片處理學習明天計劃的事情深度思考手機分辨率和網頁的區別周末補學任務四計劃及簡單編寫遇 任務三、 一個最簡單的移動端頁面 今天完成的事情 運用布局知識跟隨設計圖進行布局,完成簡單Demo并繼續學習優化. 讓布局更好適應屏幕變化(使用...
摘要:任務二認識開發工具今天完成的事情編輯器對比版本管理工具學習基本操作代碼托管平臺對比服務器使用學習明天計劃的事情分析任務三完成規劃及部分開發遇到的問題暫無收獲編輯器對比參考三者比較,各有哪些優勢和弱勢一款成熟的,對網站開發者友好,插件齊全功能 任務二. 認識開發工具 今天完成的事情 IDE & 編輯器對比 版本管理工具學習 Git基本操作 代碼托管平臺對比 服務器使用學習 明天計劃的...
摘要:用于顯示日志信息及輸入一些命令請求監聽。可獲得請求列表,點開某一項將看到數據頭部數據。包含本次請求的請求方法狀態碼請求服務器的地址其他一些設置響應頭部包含用戶代理,幫服務器識別設備用預覽。 九宮格——用html+css制作一個網頁 一. 目標效果: showImg(https://segmentfault.com/img/bVbbxBA?w=872&h=644); 二. 效果描述 圓角...
摘要:任務四一個最常見的移動端頁面完成的事情完成簡單布局,然后填充界面與效果圖對比優化完成驗收要求擴展性頂欄固定進行樣式兼容性研究完成任務四深度思考跟隨深度思考師兄建議進行修改輸入欄左側換用輸入限制電話位,密碼位根據結構的語義化修改嘗試下再加一 任務四、 一個最常見的移動端頁面 完成的事情 完成簡單布局,然后填充界面 與效果圖對比優化 完成驗收要求:header擴展性 & 頂欄固定 進行p...
閱讀 1508·2021-08-09 13:47
閱讀 2767·2019-08-30 15:55
閱讀 3492·2019-08-29 15:42
閱讀 1115·2019-08-29 13:45
閱讀 3009·2019-08-29 12:33
閱讀 1742·2019-08-26 11:58
閱讀 983·2019-08-26 10:19
閱讀 2410·2019-08-23 18:00