、關于HTML語義化,你知道都有哪些標簽?
語義化就是讓計算機能夠快速讀懂內容,高效的處理信息。搜索引擎只能通過標簽來判斷內容的語義,因為頁面的很大一部分流量來自搜索引擎,要使頁面盡可能地對搜索引擎友好,所以盡可能地使用語義化標簽,如:
div是division分離,span是span范圍,table是表格,ol是orderList有序列表,ul是unorderList無序列表,li是list item列表選項,html5進一步推進web語義化的發展,使用了一些新的標簽有header、artical、address等。
2、HTML標簽分類有哪些?都有啥特點?
默認寬度是100%
塊級標簽獨占一行
塊級標簽可以使用height設置高度
常見塊級標簽:div、p、h1~h6、ol、ul、table、form等等。
默認寬度由內容撐開
行級標簽不會自動換行,從左到右一次排列
行級標簽height設置高度失效,高度由內容撐開。
常見行級標簽:span、a、br、strong、lable、i、em。
結合行級和塊級的優點
可以設置元素的寬高
還可以將多個元素顯示在一行從左到右一次排列。
常見行內塊標簽:img、input。
3、網頁編碼設置有幾種方式?
Charset屬性規定HTML文檔的字符編碼,常見的屬性值有以下幾個:
4、HTML的框架優缺點有哪些?
Html框架有iframe和frame兩個,將多個頁面通過一個瀏覽器窗口顯示。
框架的優點:
缺點:
5、HTML5有哪些新特性,移除了哪些元素?
H5新增了圖像、位置、存儲、多任務等功能。
新增元素:
移除元素:
Html5新增了 27 個元素,廢棄了 16 個元素,根據現有的標準規范,把 HTML5 的元素按優先級定義為結構性屬性、級塊性元素、行內語義性元素和交互性元素 4 大類。
6、如何區分HTML和HTML5?
DOCUMENT聲明方式是區分的重要元素。
根據新增加的結構、功能來區分。H5有好多新增語義化標簽。
7、H5文件離線存儲怎么使用,工作原理是什么?
在線情況下,瀏覽器發現html頭部有manifest屬性,它會請求manifest文件,如果是第一次訪問那么瀏覽器就會根據manifest文件的內容下載相應的資源,并進行離線存儲。如果已經訪問過并且資源已經離線存儲了,那么瀏覽器就會使用離線的資源加載頁面。然后瀏覽器會對比新的manifest文件與舊的manifest文件,如果文件沒有改變,就不會有任何操作,如果文件改變了,那么就會重新下載資源,并進行離線緩存。
頁面頭部加入manifest屬性。如:<html manifest="demo.appcache">
在cache.manifest文件中編寫離線存儲的資源。
8、Cookies,sessionStorage和localStorage的區別?
共同點:都是保存在瀏覽器端,而且都是同源的。
區別:
9、title與h1的區別、b與strong的區別、i與em的區別?
title屬性沒有明確意義,只表示標題,h1表示層次明確的標題,對頁面信息抓取也有很大的影響。
strong標明重點內容,語氣加強含義,b表示無意義的視覺表示
em表示強調文本,i是斜體,是無意義的視覺表示
視覺樣式標簽:b、u、i、s
語義樣式標簽:strong、em、ins、del、code
10、viewport 所有屬性 ?
viewport是用戶網頁的可視區域,使用meta設置viewport時有很多屬性,分別對以下各個屬性介紹
安卓中還支持:target-densitydpi,表示目標設備的密度等級,作用是決定css中的1px 代表多少物理像素。
11、meta標簽的name屬性值?
name屬性主要用于描述網頁,與之對應的屬性值為content,content中的內容主要是便于搜索機器人查找信息和分類信息用的。
Meta標簽的name屬性語法格式是:
<meta name=”參數”content=”具體的參數值”>
Name主要有以下幾個參數:
Content的參數主要有name的參數來決定,如果是關鍵字的時候,多個關鍵字之間使用逗號隔開,一般使用5個關鍵字為宜;如果是描述的時候,描述長度一般控制在200字左右;如果是索引的時候,一般使用inde、noindex、none、all,默認是all。
人在校生一枚,希望可以找到志同道合的小伙伴一起進步,不定期的更新自己的收獲,如果有大神的話可以指出我的不足,我用的是VS code軟件來寫代碼的
HTML 是個縮寫,全稱Hyper Text Markup Language,譯為超文本標記語言。它是一種標識性的語言。它包括一系列標簽.通過這些標簽可以將網絡上的文檔格式統一,使分散的Internet資源連接為一個邏輯整體。HTML文本是由HTML命令組成的描述性文本,HTML命令可以說明文字,圖形、動畫、聲音、表格、鏈接等。
在<hard>頭部標簽中你可以 插入腳本(scripts),樣式文件(CSS),以及各種meta信息。可以添加在頭部區域的元素有:<title>,<style>,<meta>,<link>等等
注釋快捷鍵:CTRL+? (注釋是不被運行的,作用就是幫助程序員記東西)
<!--這是一個注釋-->
HTML完整結構
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!--頭部,js和css寫在這里面-->
</head>
<body>
<!--內容主體-->
</body>
</html>
可能我寫的會有些不清楚,到后面有代碼的時候就會清楚了
文件類型聲明(<!DOCTYPE>)僅有一型:<!DOCTYPE HTML>。
新的解析順序:不再基于SGML。
繪畫 canvas;
用于媒介回放的 video 和 audio 元素;
語意化更好的內容元素:article、footer、header、nav、section;
表單控件:calendar、date、time、email、url、search;
input元素的新類型:date, email, url等。
新的技術: webworker, websocket, Geolocation;
新的屬性:ping(用于a與area), charset(用于meta), async(用于script)。
全域屬性:id, tabindex, repeat。
新的全域屬性:contenteditable, contextmenu, draggable, dropzone, hidden, spellcheck。
新應用程序接口:
HTML Geolocation
HTML Drag and Drop
HTML Local Storage
HTML Application Cache
HTML Web Workers
HTML SSE
HTML Canvas/WebGL
HTML Audio/Video
移除的元素:
純表現的元素:basefont,big,center,font, s,strike,tt,u;
對可用性產生負面影響的元素:frame,frameset,naframes;
retina:一種具備超高像素密度的液晶屏,同樣大小的屏幕上顯示的像素點由1個變為多個,如在同樣帶下的屏幕上,蘋果設備的retina顯示屏中,像素點1個變為4個
在高清顯示屏中的位圖被放大,圖片會變得模糊,因此移動端的視覺稿通常會設計為傳統PC的2倍
那么,前端的應對方案是:
設計稿切出來的圖片長寬保證為偶數,并使用backgroud-size把圖片縮小為原來的1/2
//例如圖片寬高為:200px*200px,那么寫法如下
.css{width:100px;height:100px;background-size:100px 100px;}
其它元素的取值為原來的1/2,例如視覺稿40px的字體,使用樣式的寫法為20px
.css{font-size:20px}
ios用戶點擊一個鏈接,會出現一個半透明灰色遮罩, 如果想要禁用,可設置-webkit-tap-highlight-color的alpha值為0,也就是屬性值的最后一位設置為0.X就可以去除半透明灰色遮罩
a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0.X)}
android用戶點擊一個鏈接,會出現一個邊框或者半透明灰色遮罩, 不同生產商定義出來額效果不一樣,可設置-webkit-tap-highlight-color的alpha值為0去除部分機器自帶的效果
a,button,input,textarea{
-webkit-tap-highlight-color: rgba(0,0,0,0;)
-webkit-user-modify:read-write-plaintext-only;
}
-webkit-user-modify有個副作用,就是輸入法不再能夠輸入多個字符
另外,有些機型去除不了,如小米2
對于按鈕類還有個辦法,不使用a或者input標簽,直接用div標簽
通用
.css{-webkit-appearance:none;}
偽元素改變number類型input框的默認樣式
input[type=number]::-webkit-textfield-decoration-container {
background-color: transparent;
}
input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
}
input::-webkit-input-placeholder{color:#AAAAAA;}
input:focus::-webkit-input-placeholder{color:#EEEEEE;}
.css{-webkit-touch-callout: none}
.css{-webkit-user-select:none}
打電話:<a href="tel:0755-10086">打電話給:0755-10086</a>
發短信,winphone系統無效 <a href="sms:10086">發短信給: 10086</a>
寫郵件:<a href=“mailto:peun@foxmail.com">peun@foxmail.com</a>
應對方案:觸屏即播
$('html').one('touchstart',function(){
audio.play()
})
通過transform的3d屬性改去硬件加速可以解決閃屏問題
開啟硬件加速
1)解決頁面閃白
2)保證動畫流暢
.css {
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
<input autocapitalize="off" autocorrect="off" />
input::-webkit-input-speech-button {display: none}
盡可能地使用合成屬性transform和opacity來設計CSS3動畫
不使用position的left和top來定位
利用translate3D開啟GPU加速
ios下fixed元素容易定位出錯,軟鍵盤彈出時,影響fixed元素定位
android下fixed表現要比iOS更好,軟鍵盤彈出時,不會影響fixed元素定位
ios4下不支持position:fixed
解決方案
可用isroll.js,暫無完美方案
1)PC優化手段在Mobile側同樣適用
2)在Mobile側我們提出三秒種渲染完成首屏指標
3)基于第二點,首屏加載3秒完成或使用Loading
4)基于聯通3G網絡平均338KB/s(2.71Mb/s),所以首屏資源不應超過1014KB
5)Mobile側因手機配置原因,除加載外渲染速度也是優化重點
6)基于第五點,要合理處理代碼減少渲染損耗
7)基于第二、第五點,所有影響首屏加載和渲染的代碼應在處理邏輯中后置
8)加載完成后用戶交互使用時也需注意性能
[加載優化]
加載過程是最為耗時的過程,可能會占到總耗時的80%時間,因此是優化的重點
因為手機瀏覽器同時響應請求為4個請求(Android支持4個,iOS 5后可支持6個),所以要盡量減少頁面的請求數,首次加載同時請求數不能超過4個
a) 合并CSS、JavaScript
b) 合并小圖片,使用雪碧圖
使用緩存可以減少向服務器的請求數,節省加載時間,所以所有靜態資源都要在服務器端設置緩存,并且盡量使用長Cache(長Cache資源的更新可使用時間戳)
a) 緩存一切可緩存的資源
b) 使用長Cache(使用時間戳更新Cache)
c) 使用外聯式引用CSS、JavaScript
減少資源大小可以加快網頁顯示速度,所以要對HTML、CSS、JavaScript等進行代碼壓縮,并在服務器端設置GZip
a) 壓縮(例如,多余的空格、換行符和縮進)
b) 啟用GZip
寫在HTML頭部的JavaScript(無異步),和寫在HTML標簽中的Style會阻塞頁面的渲染,因此CSS放在頁面頭部并使用Link方式引入,避免在HTML標簽中寫Style,JavaScript放在頁面尾
部或使用異步方式加載
首屏的快速顯示,可以大大提升用戶對頁面速度的感知,因此應盡量針對首屏的快速顯示做優化
將不影響首屏的資源和當前屏幕資源不用的資源放到用戶需要時才加載,可以大大提升重要資源的顯示速度和降低總體流量
PS:按需加載會導致大量重繪,影響渲染性能
a) LazyLoad
b) 滾屏加載
c) 通過Media Query加載
大型重資源頁面(如游戲)可使用增加Loading的方法,資源加載完成后再顯示頁面。但Loading時間過長,會造成用戶流失
對用戶行為分析,可以在當前頁加載下一頁資源,提升速度
a) 可感知Loading(如進入空間游戲的Loading)
b) 不可感知的Loading(如提前加載下一頁)
圖片是最占流量的資源,因此盡量避免使用他,使用時選擇最合適的格式(實現需求的前提下,以大小判斷),合適的大小,然后使用智圖壓縮,同時在代碼中用Srcset來按需顯示
PS:過度壓縮圖片大小影響圖片顯示效果
a) 使用智圖( http://zhitu.isux.us/ )
b) 使用其它方式代替圖片(1. 使用CSS3 2. 使用SVG 3. 使用IconFont)
c) 使用Srcset
d) 選擇合適的圖片(1. webP優于JPG 2. PNG8優于GIF)
e) 選擇合適的大小(1. 首次加載不大于1014KB 2. 不寬于640(基于手機屏幕一般寬度))
Cookie會影響加載速度,所以靜態資源域名不使用Cookie
重定向會影響加載速度,所以在服務器正確設置避免重定向
第三方資源不可控會影響頁面的加載和顯示,因此要異步加載第三方資源
處理不當會阻塞頁面加載、渲染,因此在使用時需當注意
CSS寫在頭部,JavaScript寫在尾部或異步
避免圖片和iFrame等的空Src
空Src會重新加載當前頁面,影響速度和效率
重設圖片大小是指在頁面、CSS、JavaScript等中多次重置圖片大小,多次重設圖片大小會引發圖片的多次重繪,影響性能
DataURL圖片沒有使用圖片的壓縮算法文件會變大,并且要解碼后再渲染,加載慢耗時長
* 盡量避免寫在HTML標簽中寫Style屬性
* 避免CSS表達式
CSS表達式的執行需跳出CSS樹的渲染,因此請避免CSS表達式
* 移除空的CSS規則
空的CSS規則增加了CSS文件的大小,且影響CSS樹的執行,所以需移除空的CSS規則
* 正確使用Display的屬性
Display屬性會影響頁面的渲染,因此請合理使用
a) display:inline后不應該再使用width、height、margin、padding以及float
b) display:inline-block后不應該再使用float
c) display:block后不應該再使用vertical-align
d) display:table-*后不應該再使用margin或者float
* 不濫用Float
Float在渲染時計算量比較大,盡量減少使用
* 不濫用Web字體
Web字體需要下載,解析,重繪當前頁面,盡量減少使用
* 不聲明過多的Font-size
過多的Font-size引發CSS樹的效率
* 值為0時不需要任何單位
為了瀏覽器的兼容性和性能,值為0時不要帶單位
* 標準化各種瀏覽器前綴
a) 無前綴應放在最后
b) CSS動畫只用 (-webkit- 無前綴)兩種即可
c) 其它前綴為 -webkit- -moz- -ms- 無前綴 四種,(-o-Opera瀏覽器改用blink內核,所以淘汰)
* 避免讓選擇符看起來像正則表達式 高級選擇器執行耗時長且不易讀懂,避免使用
* 減少重繪和回流
a) 避免不必要的Dom操作
b) 盡量改變Class而不是Style,使用classList代替className
c) 避免使用document.write
d) 減少drawImage
* 緩存Dom選擇與計算
每次Dom選擇都要計算,緩存他
* 緩存列表.length
每次.length都要計算,用一個變量保存這個值
* 盡量使用事件代理,避免批量綁定事件
* 盡量使用ID選擇器
ID選擇器是最快的
* TOUCH事件優化
使用touchstart、touchend代替click,因快影響速度快。但應注意Touch響應過快,易引發誤操作
* HTML使用Viewport
Viewport可以加速頁面的渲染,請使用以下代碼
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
* 減少Dom節點
Dom節點太多影響頁面的渲染,應盡量減少Dom節點
* 動畫優化
a) 盡量使用CSS3動畫
b) 合理使用requestAnimationFrame動畫代替setTimeout
c) 適當使用Canvas動畫 5個元素以內使用css動畫,5個以上使用Canvas動畫(iOS8可使用webGL)
* 高頻事件優化
Touchmove、Scroll 事件可導致多次渲染
a) 使用requestAnimationFrame監聽幀變化,使得在正確的時間進行渲染
b) 增加響應變化的時間間隔,減少重繪次數
* GPU加速
CSS中以下屬性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)來觸發GPU渲染,請合理使用(PS:過渡使用會引發手機過耗電增加)
a、CSS動畫更為流暢、但內存占用過高,動畫元素在5個以內更為推薦;
b、Canvas動畫存在丟幀現象,這一現象在android中低端手機中表現更為明顯;
c、5個以內動畫元素,選用CSS動畫,80%的設備幀頻可達80以上。
移動自適應的話一般我用的話就是rem,通過rem單位配合媒體查詢來完成幾個屏幕的適配,以iphone6位標準,向上適配plus,向下適配5,不做過多的適配,有時候有要求的話也用js來控制rem的大小達到適配效果,rem是相對單位,相對html元素的font-size值的屬性,比如font-size:100px; 的話1rem就得100px,這樣我子需要通過改變html的font-size就可以達到適配效果
為動畫DOM元素添加CSS3樣式-webkit-transform:transition3d(0,0,0)或-webkit-transform:translateZ(0);,這兩個屬性都會開啟GPU硬件加速模式,從而讓瀏覽器在渲染動畫時從CPU轉向GPU
通過-webkit-transform:transition3d/translateZ開啟GPU硬件加速之后,有些時候可能會導致瀏覽器頻繁閃爍或抖動,可以嘗試以下辦法解決之:
-webkit-backface-visibility:hidden;
-webkit-perspective:1000;
通過-webkit-transform:transition3d/translateZ開啟GPU硬件加速的適用范圍:
使用很多大尺寸圖片(尤其是PNG24圖)進行動畫的頁面。
頁面有很多大尺寸圖片并且進行了css縮放處理,頁面可以滾動時。
使用background-size:cover設置大尺寸背景圖,并且頁面可以滾動時
編寫大量DOM元素進行CSS3動畫時(transition/transform/keyframes/absTop&Left)
使用很多PNG圖片拼接成CSS Sprite時
可以使用after插入的形式將寬度設置為200%,然后通過css transfrom 的scale 縮放0.5倍;
使用 viewport meta 標簽在手機瀏覽器上控制布局
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />
通過快捷方式打開時全屏顯示
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="blank" />
iPhone會將看起來像電話號碼的數字添加電話連接,應當關閉
<meta name="format-detection" content="telephone=no" />
使用Media Queries適配對應樣式
all所有設備;
screen 電腦顯示器;
print打印用紙或打印預覽視圖;
handheld便攜設備;
tv電視機類型的設備;
speech語意和音頻盒成器;
braille盲人用點字法觸覺回饋設備;
embossed盲文打印機;
projection各種投影設備;
tty使用固定密度字母柵格的媒介,比如電傳打字機和終端。
width瀏覽器寬度;
height瀏覽器高度;
device-width設備屏幕分辨率的寬度值;
device-height設備屏幕分辨率的高度值;
orientation瀏覽器窗口的方向縱向還是橫向,當窗口的高度值大于等于寬度時該特性值為portrait,否則為landscape;
aspect-ratio比例值,瀏覽器的縱橫比;
device-aspect-ratio比例值,屏幕的縱橫比。
@media only screen and (min-width:768px)and(max-width:1024px){}
@media only screen and (width:320px)and (width:768px){}
寬度不固定,可以使用百分比
#head{width:100%;}
#content{width:50%;}
#wrap img{
max-width:100%;
height:auto;
}
一個響應式的字體應關聯它的父容器的寬度,這樣才能適應客戶端屏幕。css3引入了新的單位叫做rem,和em類似但對于Html元素,rem更方便使用。em是相對于根元素的,需重置根元素字體大小:
html{font-size:100%;}
完成后,可以定義響應式字體:
@media (min-width:640px){body{font-size:1rem;}}
@media (min-width:960px){body{font-size:1.2rem;}}
@media (min-width:1200px){body{font-size:2rem;}}
ip6 2、ip6+ 3、nexus5 3
1) 自適應方式
2) viewport方式
3) rem方式
4) scale()方式縮放
避免IE使用兼容模式 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
為不支持viewport的IE Mobile設定寬度 <meta name="MobileOptimized" content="320" />
是否對手持設備友好 <meta name="HandheldFriendly" content="true" />
強制豎屏 <meta name="screen-orientation" content="portrait" />
強制全屏 <meta name="full-screen" content="yes" />
應用模式 <meta name="browsermode" content="application" />
強制豎屏 <meta name="x5-orientation" content="portrait" />
強制全屏 <meta name="x5-fullscreen" content="yes" />
應用模式 <meta name="x5-page-mode" content="app" />
開啟極速模式 <meta name="renderer" content="webkit" />
啟動webapp功能 刪除工具欄和菜單欄 <meta name="apple-mobile-web-app-capable" content="yes">
控制狀態欄顏色 <meta name="apple-mobile-web-app-status-bar-style" content="black" />
開啟號碼或郵箱檢測 <meta name="format-detection" content="telephone=no" />
添加主屏幕icon <link rel="apple-touch-icon" href="touch-icon-iphone.png”>
重力感應 DeviceOrientation
手機加速傳感器 DeviceMotion
以Pjax方式實現SPA history.pushState history.replaceState 解決ajax不能后退前進問題
儲存
客戶端儲存:localStorage sessionStorage>只存在一個會話周期內
跨域
postMessage
一般都是我前端這邊開發好h5頁面給安卓和ios一個地址,然后告訴他們我有哪些方法,然后在做一些安卓ios的接口調用,安卓和ios會吧他們的方法提供一個接口給我,我直接調用就好,一般都是調用一些分享,跳轉之類的方法
webapp部分基本都是我自己負責開發,頁面交互都做,因為當時剛去公司的時候公司也剛往這個方向發展,讓我也一直就負責移動業務這塊的內容
用,bootstrap組要就是用一些他的樣式組件,還有最強大的就是他的刪格化系統了,做響應式的網站,我們公司的官網就是用的bootstrap做的,后臺管理系統也是,當時也是我負責給我們公司的后臺分享如何使用bootstrap的
*請認真填寫需求信息,我們會在24小時內與您取得聯系。