web移動開發總結(一)
發表時(shí)間:2018-12-2
發布人(rén):融晨科技
浏覽次數:53
總結今天學習的(de)内容:
- 移動web的(de)概念和(hé / huò)發展曆史
- 移動web的(de)開發方式和(hé / huò)區别
- 響應式原理和(hé / huò)媒體查詢(重點)
- 響應式框架的(de)介紹
- bootstrap框架的(de)基本使用
- bootstrap全局CSS樣式布局容器使用(重點)
- bootstrap全局CSS樣式栅格系統使用(重點)
- bootstrap全局CSS樣式響應式工具使用
- 微金所項目搭建和(hé / huò)頭部的(de)結構 (重點)
web前端
- PC端的(de)web : 在(zài)PC端電腦訪問的(de)web(網頁網站) 頁面一般固定寬度的(de) 居中在(zài)網頁顯示 還有各種浏覽器需要(yào / yāo)兼容
- 移動端的(de)web: 在(zài)手機端訪問的(de)web 頁面一般是(shì)全屏的(de) 全屏在(zài)手機裏面顯示 在(zài)手機端的(de)浏覽器内核都是(shì)統一webkit 很少考慮浏覽器兼容性問題
移動web的(de)概念和(hé / huò)發展曆史
-
什麽是(shì)移動web: 就(jiù)是(shì)運行在(zài)手機浏覽器裏面的(de)web應用程序(網頁) 雖然和(hé / huò)網頁是(shì)一樣的(de) , 但是(shì)現代的(de)web特别是(shì)移動web已經不(bù)再是(shì)簡簡單單的(de)網頁了(le/liǎo) 而(ér)是(shì)實現了(le/liǎo)和(hé / huò)APP一樣的(de)功能 所以(yǐ)現代的(de)網頁已經可以(yǐ)稱之(zhī)爲(wéi / wèi)應用程序了(le/liǎo)
-
移動端的(de)浏覽器:
- 移動端的(de)浏覽器和(hé / huò)PC端有些不(bù)一樣 都是(shì)在(zài)手機上(shàng)安裝的(de)浏覽器 常見有UC QQ 百度 safari 等
- 移動端浏覽器都有一個(gè)共同的(de)特點 就(jiù)是(shì)都是(shì)webkit内核的(de)浏覽器 所以(yǐ)在(zài)浏覽器的(de)兼容性上(shàng)相對PC端比較統一
-
常見的(de)移動web應用程序: 淘寶觸屏版 京東手機版 蘇甯手機版 攜程手機版 小米手機版等等 這(zhè)些都是(shì)在(zài)手機端浏覽器運行的(de)應用程序
-
如何區分什麽是(shì)網頁什麽是(shì)應用程序
應用程序是(shì)指運行時(shí)多數爲(wéi / wèi)了(le/liǎo)實現某個(gè)功能,就(jiù)像網站的(de)後台,網站更側重于(yú)前台的(de)美觀展示。 -
移動web應用程序都有什麽特點
- 通常移動web應用程序都是(shì)以(yǐ)m開頭的(de)站點 例如m.taobao.com m.jd.com
- 通常移動web應用都是(shì)隻運行在(zài)手機端 設計功能也(yě)是(shì)符合手機的(de)操作
- 頁面都相對比較簡潔 使用起來(lái)比較方便
-
移動web的(de)發展曆史
- 從2014年HTML5正式定稿後移動web就(jiù)迎來(lái)了(le/liǎo)飛速的(de)發展 因爲(wéi / wèi)使用HTML5技術可以(yǐ)更方便 更快捷的(de)開發現代web應用程序
- 而(ér)移動端的(de)手機浏覽器都是(shì)比較新的(de) HTML5在(zài)移動端的(de)浏覽器支持情況都比較好
- 所以(yǐ)HTML5主要(yào / yāo)應用就(jiù)是(shì)在(zài)移動端 移動web
- 直到(dào)2015 - 2016 - 2017 - 至今 移動web已經發展了(le/liǎo)很多年 各方面的(de)技術都比較成熟穩定 網上(shàng)的(de)教程也(yě)比較完整成熟 所以(yǐ)現在(zài)的(de)web已經到(dào)全民移動web的(de)時(shí)代了(le/liǎo)
移動web的(de)開發方式
- 如何去開發移動web 了(le/liǎo)解常見的(de)移動web的(de)開發方式
- 響應式開發方式: 開發一個(gè)頁面 同時(shí)運行在(zài)PC端和(hé / huò)移動端 針對不(bù)同的(de)屏幕大(dà)小 來(lái)自動适應屏幕 展示對應端的(de)頁面的(de)布局
- 原生的(de)移動web開發方式: 針對每一個(gè)端 PC端和(hé / huò)移動端 都分别開發1個(gè)頁面 PC端加載PC端的(de)頁面 移動端加載移動端的(de)頁面
- 兩種方式的(de)對比 和(hé / huò)應用場景
- 響應式開發: 一個(gè)頁面适配多個(gè)終端 開發效率高 維護效率高 但是(shì)由于(yú)代碼都在(zài)一個(gè)頁面會造成冗餘 所以(yǐ)運行的(de)效率低
應用在(zài)一些新建的(de)網站 同時(shí)把2個(gè)端都做完 快速上(shàng)線 對頁面加載性能要(yào / yāo)求不(bù)高 使用響應式 新聞網站 官網 活動頁面等 - 原生移動web開發: 要(yào / yāo)針對每個(gè)端都寫1個(gè)頁面 開發維護效率低 但是(shì)由于(yú)針對性強 隻有對應端需要(yào / yāo)的(de)代碼 代碼冗餘少 運行效率高
應用在(zài)一些老網站 PC已經上(shàng)線 單獨開發移動端 寫2套代碼 對頁面加載性能要(yào / yāo)求高使用原生 電商 直播 視頻 聊天等
- 響應式開發: 一個(gè)頁面适配多個(gè)終端 開發效率高 維護效率高 但是(shì)由于(yú)代碼都在(zài)一個(gè)頁面會造成冗餘 所以(yǐ)運行的(de)效率低
- 學習響應式開發方式
-
理解響應式開發的(de)原理
- 獲取屏幕的(de)寬度去判斷 當前是(shì)屬于(yú)什麽屏幕
- 屏幕通常有4種
- 大(dà)屏幕 屏幕寬度大(dà)于(yú)1200
- 中屏幕 屏幕寬度大(dà)于(yú)992 小于(yú)等于(yú)1200
- 小屏幕 屏幕寬度大(dà)于(yú)768 小于(yú)等于(yú)992
- 超小屏幕 屏幕寬度小于(yú)等于(yú)768
- 根據不(bù)同的(de)屏幕來(lái)改變頁面的(de)布局方式
-
如何判斷和(hé / huò)改變布局方式
- 使用JS判斷 和(hé / huò) 設置行内樣式的(de)方式
- 使用CSS3新增的(de)屬性媒體查詢來(lái)判斷屏幕寬度 然後在(zài)媒體查詢裏面 寫需要(yào / yāo)改變的(de)樣式
-
媒體查詢的(de)語法
@media(條件){
//條件成立執行的(de)代碼
}
條件通常有3種寫法
width:1200px; 表示屏幕寬度等于(yú)1200 條件成立
min-width:1200px; 表示屏幕寬度大(dà)于(yú)等于(yú)1200 條件成立
max-width:1200px 表示屏幕寬度小于(yú)等于(yú)1200 條成立
如果有多個(gè)條件可以(yǐ)使用 and相連
@media(條件) and (條件2){
//條件成立執行的(de)代碼
}
條件成立執行的(de)代碼就(jiù)是(shì)普通的(de)CSS 代碼 裏面寫選擇{屬性:值} 的(de)方式 當條件成立就(jiù)會執行這(zhè)個(gè)CSS樣式 -
媒體查詢條件的(de)判斷順序
- 如果使用min-width作爲(wéi / wèi)條件判斷的(de)時(shí)候 由于(yú)是(shì)大(dà)于(yú)等于(yú)的(de)判斷
假設屏幕1400 同時(shí)寫了(le/liǎo)3個(gè)條件 min-widht:768px min-width:992px min-width:1200px
那麽1400 大(dà)于(yú) 1200也(yě)大(dà)于(yú)992 也(yě)大(dà)于(yú)768 就(jiù)意味着3個(gè)條件都能成立 但是(shì)一般我們會取最大(dà)的(de)屏幕的(de)樣式也(yě)就(jiù)是(shì)1200 的(de)所以(yǐ)寫判斷的(de)時(shí)候要(yào / yāo)從小到(dào)大(dà)的(de)方式寫 讓大(dà)屏幕生效的(de)樣式把小屏幕的(de)樣式覆蓋 (向下覆蓋)
- 如果使用min-width作爲(wéi / wèi)條件判斷的(de)時(shí)候 由于(yú)是(shì)大(dà)于(yú)等于(yú)的(de)判斷
-
min-width的(de)寫法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0px;
padding: 0px;
/*設置盒模型包含邊框*/
box-sizing: border-box;
}
.col {
height: 100px;
float: left;
border: 1px solid red;
}
/*如果有多個(gè)條件 可以(yǐ)用 and連接*/
@media (min-width: 768px){
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 50%;
}
}
/*如果有多個(gè)條件 可以(yǐ)用 and連接*/
@media (min-width: 992px) {
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 33.33%;
}
}
@media(min-width: 1200px) {
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 25%;
}
}
/*如果有多個(gè)條件 可以(yǐ)用 and連接*/
@media (max-width: 768px) {
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 100%;
}
}
/* 由于(yú)CSS有層疊性 如果都寫min-width 大(dà)于(yú)等于(yú)生效的(de)判斷 小屏幕的(de)判斷 和(hé / huò) 大(dà)屏幕的(de)判斷同時(shí)生效
比如屏幕寬度1400 肯定大(dà)于(yú)1200 肯定大(dà)于(yú) 992 和(hé / huò) 768 3個(gè)條件都滿足 但是(shì)由于(yú)CSS層疊性
1200 最上(shàng)面 992 第二 768 第三 768把前面的(de)樣式都覆蓋
希望 1200 把 992 和(hé / huò) 768 覆蓋 */
/* 寫媒體查詢條件的(de)時(shí)候 如果 使用min-width 大(dà)于(yú)等于(yú)做判斷
應該把條件從小到(dào)大(dà)寫 讓大(dà)屏幕樣式把小屏幕樣式覆蓋 向下覆蓋*/
</style>
</head>
<body>
<div class="row">
<div class="col">div1</div>
<div class="col">div2</div>
<div class="col">div3</div>
<div class="col">div4</div>
</div>
</body>
</html>
max-width的(de)寫法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0px;
padding: 0px;
/*設置盒模型包含邊框*/
box-sizing: border-box;
}
.col {
height: 100px;
float: left;
border: 1px solid red;
}
@media(max-width: 1200px) {
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 33.33%;
}
}
/*如果有多個(gè)條件 可以(yǐ)用 and連接*/
@media (max-width: 992px) {
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 50%;
}
}
/*如果有多個(gè)條件 可以(yǐ)用 and連接*/
@media (max-width: 768px) {
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 100%;
}
}
/*如果有多個(gè)條件 可以(yǐ)用 and連接*/
@media (min-width: 1200px) {
/*和(hé / huò)CSS一樣寫選擇器和(hé / huò)屬性 和(hé / huò)值*/
.col {
width: 25%;
}
}
/* 由于(yú)CSS有層疊性 如果都寫max-width 小于(yú)等于(yú)生效的(de)判斷 小屏幕的(de)判斷 和(hé / huò) 大(dà)屏幕的(de)判斷同時(shí)生效
希望小屏幕生效
例如 750寬度 max-width:1200; max-width:992; max-width:768;
大(dà)家都成立希望生效 768最小那個(gè) 需要(yào / yāo)把最小768判斷寫在(zài)最後面把前面2個(gè)覆蓋
*/
/* 寫媒體查詢條件的(de)時(shí)候 如果 使用max-width 小于(yú)等于(yú)做判斷
應該把條件從大(dà)到(dào)小寫 讓小屏幕樣式把大(dà)屏幕樣式覆蓋 向上(shàng)覆蓋*/
</style>
</head>
<body>
<div class="row">
<div class="col">div1</div>
<div class="col">div2</div>
<div class="col">div3</div>
<div class="col">div4</div>
</div>
</body>
</html>
響應式的(de)開發框架
-
框架幫你封裝好了(le/liǎo)響應式的(de)功能 你隻需要(yào / yāo)使用框架提供的(de)類名既可實現響應式布局
-
常見的(de)響應式開發框架
- bootstrap: 目前前端最流行的(de)框架 應用非常廣泛 移動 PC都可以(yǐ)使用 代碼風格很好 讓快速構建網頁布局 (重點)
- AmazeUI: 妹子(zǐ)UI 中國(guó)首個(gè)響應式開發框架
- layUI: 響應式模塊的(de)UI框架
- MUI : 中國(guó)人(rén)開發的(de)針對移動端的(de)UI 也(yě)有響應式功能(隻适配手機和(hé / huò)ipad)
- framework7:構造原生APP的(de)框架 UI框架
了(le/liǎo)解bootstrap框架
bootstrap: 引導程序 引導你開發程序
1. 2011 推特公司2個(gè)前端開發出(chū)來(lái)的(de)框架 後面開源了(le/liǎo)之(zhī)後有很多貢獻者 一起參與開發形成了(le/liǎo)一個(gè)大(dà)型UI框架
2. Bootstrap框架: 代碼比較優雅 結構很規範 代碼也(yě)很規範 框架生态圈好 使用和(hé / huò)開發維護框架的(de)人(rén)很多
3. Bootstrap的(de)好處: 讓我們快速開發頁面 更方便更快捷
學習bootstrap
-
打開官網 https://v3.bootcss.com/
-
下載bootstrap (推薦下載生産環境的(de)bootstrap)
bootstrap-3.3.7-dist
如果下載整個(gè)源碼需要(yào / yāo)解壓使用裏面的(de)dist目錄裏面的(de)代碼 -
引入bootstrap
- 引入bootstrap.css 樣式
- 引入jquery.js js 因爲(wéi / wèi)bootstrap基于(yú)jquery 需要(yào / yāo)先引入jquery
- 引入bootstrap.js JS插件的(de)js文件
-
引包規範
- 如果依賴的(de)先引入依賴的(de)包在(zài)引入不(bù)依賴的(de)包
- 有第三方的(de)包先引入第三方的(de)包 再引入自己包
- CSS 文件 通常引入在(zài)head中
- JS 文件 通常引入在(zài)body的(de)結束标簽的(de)上(shàng)面(好處就(jiù)是(shì)爲(wéi / wèi)了(le/liǎo)讓頁面迅速加載出(chū)來(lái))
除了(le/liǎo)一些對頁面渲染有幫助的(de)JS必須放在(zài)前面
bootstrap文檔(下面是(shì)要(yào / yāo)熟悉的(de)文檔,很重要(yào / yāo),具體用法在(zài)這(zhè)個(gè)網站:https://v3.bootcss.com/css/)
- 全局CSS樣式 (一些簡單的(de)類名 隻要(yào / yāo)寫類名就(jiù)可以(yǐ)生效對應的(de)樣式)
- 布局容器
- container 固定寬度且居中的(de)版心容器 跟随頁面的(de)變化 也(yě)會響應式變化寬度
- container-fluid 全屏容器
- 栅格系統 百分比布局的(de)一個(gè)栅格系統
- 分爲(wéi / wèi)行和(hé / huò)列 類似表格tr 和(hé / huò) td
- 列 一行最多分爲(wéi / wèi)12列
- 列有4個(gè)類名 分别對應4個(gè)屏幕生效列的(de)類名
col-lg-x 大(dà)屏幕列的(de)類名 large
col-md-x 中屏幕的(de)列的(de)類名 middle
col-sm-x 小屏幕的(de)列的(de)類名 small
col-xs-x 超小屏幕的(de)列的(de)類名 extra small - 行必須包含在(zài)容器裏面 因爲(wéi / wèi)container有内邊距padding row爲(wéi / wèi)了(le/liǎo)和(hé / huò)container的(de)padding抵消就(jiù)添加了(le/liǎo)margin-left的(de)負值 去抵消 所以(yǐ)row需要(yào / yāo)包含在(zài)container容器裏面
- 排版
文字對齊 - 表格
帶邊框 帶條紋等 - 表單
水平排列表單等 - 按鈕
各種顔色 尺寸按鈕 - 輔助類
文本顔色 浮動 清除浮動 顯示隐藏 - 響應式工具
控制元素在(zài)某個(gè)屏幕隐藏顯示
- 布局容器
- 組件 (靜态的(de)組件 一些标簽組合在(zài)一起形成的(de)一個(gè)功能)
- 字體圖标
- 下拉菜單
- 按鈕組
- 導航 導航條
- 分頁
- 警告框
- 媒體對象
- 列表組
- 面闆
- javascript插件 (動态的(de)組件 一些标簽組件在(zài)一起并且有js交互和(hé / huò)功能)
- 模态框
- 下拉菜單 插件(有交互的(de))
- 标簽頁 (tab欄)
- 工具提示
- 警告框 彈出(chū)框
- Collapse 折疊菜單 手風琴菜單
- Carousel 輪播圖 旋轉木馬
- Affix 吸頂效果
總結
-
移動web: 移動端(手機端)打開網頁網站
-
移動web 已經不(bù)僅僅實現内容顯示 而(ér)更多偏向應用 能夠提升上(shàng)網體驗 生活體驗 稱之(zhī)爲(wéi / wèi)應用程序了(le/liǎo)
-
移動web: 包含了(le/liǎo)網頁(暫時(shí)隻學習網頁網站) APP 微信小程序公衆号 内嵌頁面
-
移動端浏覽器: 都是(shì)webkit内核 兼容性少
-
移動web的(de)開發方式
- 響應式方式(一般使用框架): 一個(gè)頁面同時(shí)适配多個(gè)終端 根據屏幕變化而(ér)自動适應變化
應用: 新建的(de)網站 或者 對性能要(yào / yāo)求不(bù)是(shì)很高 官網 論壇 播客 - 原生方式:針對每個(gè)端都寫一個(gè)頁面 寫死的(de)
應用: 老網站 或者對性能要(yào / yāo)求很高的(de) 電商 直播 視頻
- 響應式方式(一般使用框架): 一個(gè)頁面同時(shí)适配多個(gè)終端 根據屏幕變化而(ér)自動适應變化
-
響應式開發原理
- 使用JS判斷屏幕寬度 修改樣式
- 使用媒體查詢 判斷 設置樣式
- 4種屏幕需要(yào / yāo)判斷
- 大(dà)屏幕lg w >= 1200
- 中屏幕md w >= 992 w < 1200
- 小屏幕sm w >= 768 w < 992
- 超小屏幕xs w < 768
- 媒體查詢的(de)語法
@media(條件){
//條件成立執行的(de)代碼
}
條件通常有3種寫法
width:1200px; 寬度等于(yú)這(zhè)個(gè)值
min-width:1200px; 寬度大(dà)于(yú)等于(yú)這(zhè)個(gè)值 條件從小到(dào)大(dà)寫 讓大(dà)的(de)把小的(de)覆蓋
max-width:1200px; 寬度小于(yú)等于(yú)這(zhè)個(gè)值 條件從大(dà)到(dào)小寫 讓小的(de)把大(dà)的(de)覆蓋
-
響應式開發框架: 爲(wéi / wèi)了(le/liǎo)讓響應式開發更簡單快捷
- bootstrap (重點掌握 所有UI框架基礎)
- 妹子(zǐ)UI
- layUI
- MUI
- framework7
-
使用bootstrap
- 下載包
- 引包
1. 引入bootstrap.css
1. 引入jquery.js (bootstrap JS插件 基于(yú)jquery)
1. 引入bootstrap.js - 使用文檔裏面的(de)代碼就(jiù)有對應的(de)效果
-
bootstrap文檔
- 全局CSS樣式 : 簡單的(de)類名加了(le/liǎo)就(jiù)有效果 跟标簽無關
- 組件 : 組合多個(gè)标簽類名在(zài)一起 形成的(de)靜态效果 就(jiù)是(shì)組件
- JS插件 : 在(zài)靜态組件的(de)基礎上(shàng)添加了(le/liǎo)交互 能夠點擊 能夠動等就(jiù)是(shì)插件
-
布局容器
- container 居中
- container-fluid 全屏
- 2個(gè)容器都有padding 要(yào / yāo)讓内容往裏面靠 左右15px
-
栅格系統
- 通過行和(hé / huò)列組成的(de)布局一個(gè)系統
- 行row 列 col 類似表格的(de)tr td
- 一行最多分爲(wéi / wèi)12列
- 行必須放到(dào)container 容器裏面 或者 col裏面 要(yào / yāo)和(hé / huò)父容器padding抵消
- 列需要(yào / yāo)放到(dào)行裏面
- 内容放到(dào)列裏面
- 4個(gè)栅格類名 col-lg col-md col-sm col-xs 分别會在(zài)對應的(de)屏幕生效
- 列12 自由劃分 也(yě)可以(yǐ)等比例劃分 等比例隻能被12整除的(de) 1 2 3 4 6 12
- 栅格系統還可以(yǐ)嵌套 嵌套的(de)子(zǐ)row 參照父元素
-
常用的(de)樣式 組件 插件
-
搭建微金所項目
- 創建項目文件夾 把css fonts img lib複制到(dào)項目文件夾(來(lái)源完整版) lib 就(jiù)是(shì)第三方的(de)包
- 創建主頁 引包
- 寫結構 把頁面分區域 頭部 導航 輪播圖 特色 預約 商品 新聞 合作夥伴
- 推薦容器使用id 方便覆蓋樣式 和(hé / huò) 方便JS獲取元素
- 使用bootstrap構建頁面的(de)内容
- 頭部: 全局樣式裏面的(de): 容器 栅格系統 組件:字體圖标
- 導航: 組件:導航條
- 輪播圖: JS插件:carousel輪播圖插件
- 特色介紹: 全局樣式: 容器 栅格系統 組件: 字體圖标 媒體對象