H5新增標籤最大的特色:讓標籤語義話; H5新增標籤:
javascript
傳統的表單元素
: input:text/password/radio/checkbox/file/hidden/button/submit/reset... select 下拉框 textarea 文本域 button 按鈕 form 表單 action: 是路徑地址 method: 提交方式; labelcss
<form action="">
<input type="submit" /> </form>
//把數據提交到form表單的action屬性值的地址中;向這個空間地址發送請求,而且把input框中的內容發送給這個地址; form通常用於登陸註冊;
複製代碼
H5新增的一些表單元素/類型
: input:search搜索框/email郵箱框/tel電話框/number數字框/range滑動條/color顏色框/date日期框/time時間框/url地址框html
<input type="range" id="range" step="1" min="1" max="10" value="7"> //默認值爲7
<input type="number" id="number" step="1" min="1" max="10" value="7" disabled> //disabled表示不可編輯
range.oninput = function(){
let val = this.value;
number.value = val;
}
複製代碼
input文本框都有一個value屬性
,value屬性的屬性值就是文本框中輸入的內容; 單選框、雙選框有一個checked屬性
,獲取或設置值; 表單新增長的屬性(html5)
(1)autocomplete屬性
autocomplete屬性有兩個值:on和off,默認爲on; 含義:自動完成,(在表單中填寫的數據寫完就自動提交了)前端
<form autocomplete="on"></form>
複製代碼
form和input都有autocomplete自動完成功能的屬性
(2)autofocus屬性
含義:頁面加載時,域自動得到焦點;html5
<input autofocus="autofocus" />
複製代碼
autofocus屬性適用於全部的<input>標籤
(3)multiple屬性 規定輸入域中可選擇多個值java
<input type="file" multiple="multiple" />
複製代碼
multiple屬性適用於如下類型的<input>標籤:email和file
(4)placeholder屬性 提示語 placeholder屬性適用於<input>標籤type屬性爲:text、search、url、tel、email、password;
css3
//如何實現時間輸入框有輸入提示?
<input type="text" name="date" onfocus="(this.type='date')" placeholder='請選擇日期' />
複製代碼
(5)required屬性 設置必填項,必須在提交前填寫輸入域web
<input type="text" required="required" />
複製代碼
required屬性適用於<input>標籤type類型爲:text、search、url、tel、email、password、date全部類型、number、checkbox、radio、file等;
面試
(1)使用list和datalist實現什麼效果ajax
<input type="text" list="tips">
<dataList id="tips"> <option value="aaa"></option> <option value="www"></option> <option value="eee"></option> <option value="fff"></option> </dataList>
複製代碼
(2)當有type=「file」類型的輸入框時,form標籤中必需要添加enctype的屬性,設置文件發送到服務器以前對錶單數據進行編碼
<form action="" method="" enctype="multipart/form-data" >
<input type="file"> 複製代碼
(3)novalidate和formnovalidate novalidate用在form標籤上,formnovalidate用在input標籤上;
<form action="" method="" enctype="multipart/form-data" novalidate autocomplete="on">
複製代碼
(4)pattern 設置正則表達式驗證,能夠完成各類複雜的驗證
<input type="text" name="gonghao" placeholder="請輸入工號" pattern="^\d{5}[imooc]$">
複製代碼
(5)maxlength和minlength爲輸入的最大長度和最小長度
<input type="text" id="test" name="test" value="" maxlength="5" minlength="2" pattern="^\d{5}" />
//表示input輸入框最少輸入2個,最多輸入5個字符
複製代碼
(6)label標籤
<label for="man">男</label>
<input type="radio" name="sex" id="man" required="">
<label for="woman">女</label>
<input type="radio" name="sex" id="woman" required="">
複製代碼
HTML5的約束驗證API
表單元素中新增的類型做用
:
<input type="email" id="userEmail">
<span id="span"></span>
//CSS驗證方式:
<style>
#userEmail{border:1px solid #DDD; outline:none} //當文本框獲取焦點後去除瀏覽器默認的邊框顏色
#userEmail:valid{border-color:green} //經過驗證分爲兩種:一種是什麼都不輸入;另一種是格式符合要求;
#userEmail:invalid{border-color:red} //沒經過驗證
#userEmail:valid+span:after{content:"郵箱格式正確"}
#userEmail:invalid+span:after{content:"郵箱格式不正確"}
</style>
//JS驗證方式
userEmail.oninput = function(){
if(this.checkValidity()){
span.innerHTML = 'OK';
}else{
span.innerHTML = 'NO';
}
}
//真實項目中通常都是本身用正則來驗證
userEmail.onkeyup = function(){
let val = this.value.trim(); //去掉首尾的空格
if(val.length === 0){
span.innerHTML = "必填";
return;
}
let reg = /$\w+((-\w+)|(\.\w))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if(!reg.test(val)){
span.innerHTML = "NO";
return;
}
span.innerHTML = "OK";
}
複製代碼
經常使用的屬性選擇器
: A B{} 後代 A.B{} 既具有A也具有.B的(同級二次篩選) A>B{} 子代 A+B{} 下一個弟弟選擇器 A~B{} 兄弟
經常使用的僞類選擇器
:
通配符選擇器 A[name=""] 屬性選擇器
A[name!=""]不等於
A[name^=""]以什麼開始
A[name$=""]以什麼結尾
A[name*=""] 包含
狀態僞類 1)正常狀態(:link):未訪問狀態; 2)放上狀態(:hover):鼠標懸浮狀態; 3)激活狀態(:active):按住鼠標左鍵不鬆開時的連接樣式,這個狀態特別短暫 4)已訪問狀態(:visited):按下鼠標左鍵並彈起,這時的樣式效果。 注意:(1)僞選擇器經常使用於連接(a元素),:hover和:active也能夠用於其餘元素; (2)連接僞類的順序::link > :visited > :hover > :active 不然不生效; 5)得到焦點狀態(:focus):經常使用於文本框中,在文本框中點擊一下就得到焦點了 eg:input:focus{background:yellow;}
UI元素狀態僞類 :enabled、:disabled、:checked 例如:一個文本框,可輸入的狀態就是enabled,不可輸入的狀態就是disabled,單選框複選框中選中的狀態就是checked; 注意:input輸入框可編輯的纔有輸入框,不可編輯的沒有寬和高; input:enabled 能夠設置寬高 input:disabled 沒有寬高
僞元素
css僞元素用於向某些選擇器設置特殊效果
語法格式:元素::僞元素 1)Element::first-line 給Element元素的第一行文本加樣式; 注意:first-line僞元素只能用於塊級元素; 2)Element::first-letter 用於向文本的首字母設置樣式,只能用於塊級元素; 3)Element::before 在元素的內容前面插入新內容;常與「content」配合使用; ::before僞元素的特色:會成爲第一個子元素、屬於行級元素、內容只能經過content寫入、支持全部的css屬性; 4)Element::after 在元素的內容後面插入新內容 常與「content」配合使用,多用於清除浮動; ::after僞元素的特色:會成爲最後一個子元素、屬於行級元素、內容只能經過content寫入、支持全部的css屬性; 5)Element::selection用於設置在瀏覽器中選中文本後的背景色與前景色;
nth選擇器 1)Element:first-of-type 匹配屬於其父元素的特定類型的首個子元素中的每一個元素; Element:last-of-type 匹配屬於其父元素的特定類型的最後一個子元素中的每一個元素; 2)Element:nth-of-type(n)、Element:nth-last-of-type(n)選擇器 注意:Odd 和 even 是可用於匹配下標是奇數或偶數的子元素的關鍵詞(第一個子元素的下標是 1) Element:nth-of-type(n)和Element:nth-child(n)的區別在於
: div:nth-of-type(2) 匹配第二個div標籤(也可能這個div標籤排第三或第四,前面有a或li標籤),指定元素類型; div:nth-child(2) 匹配第二個子標籤,且第二個子標籤必須是div標籤,不限定元素類型; 3)Element:nth-child(n) 匹配某個父元素中的第n個子元素是Element標籤,不論父元素是什麼 注意:ul>li:nth-child(n) 表示匹配ul下的全部li標籤 只能寫n,不能夠用其它字母代替; ul>li:nth-child(2) 表示匹配ul下的第二個li標籤; ul>li:nth-child(odd) 奇數 至關於2n+1; ul>li:nth-child(even) 偶數 至關於2n; 4)Element:nth-last-child(n) 倒數第n個 5)Element:first-child 選擇屬於其父元素的首個子元素的每一個元素 能夠配合其餘選擇器一塊兒使用,例如:section>div:first-child{} 6)Element:last-child 某個元素的最後一個子元素是Element的元素 7)Element:only-child 匹配屬於其父元素的惟一子元素的每一個元素; 8)Element:only-of-type 匹配屬於其父元素的特定類型的惟一子元素的每一個元素; 9)Element:empty 匹配沒有子元素(包括文本節點)的每一個元素;
否認選擇器
語法:父元素:not(子元素/子選擇器) 匹配不是這個標籤的其餘全部標籤;
1)border-radius 圓角邊框 2)box-shadow:[投影方式] X軸偏移量 Y軸偏移量 陰影模糊半徑 陰影擴展半徑 陰影顏色;
例如:box-shadow:10px 10px 5px 2px yellow; 參數說明: a.投影方式:此值可選,惟一取值爲inset意爲內陰影;如不設值,默認投影方式是外陰影。 b.X軸偏移量:陰影水平偏移量,取值可正可負;若是爲正值,則陰影在對象的右邊;若是爲負值,則陰影在對象的左邊。 c.Y軸偏移量:陰影垂直偏移量,取值可正可負;若是爲正值,則陰影在對象的底部;若是爲負值,則陰影在對象的頂部。 d.陰影模糊半徑:此值可選,但取值必須爲正值,若是取值爲0,表示陰影不具備模糊效果,值越大陰影的邊緣就越模糊。 e.陰影擴展半徑:此值可選,取值可正可負,若是值爲正則整個陰影都延展擴大,反之則縮小。 f.陰影顏色:此值可選,若是不設定顏色,瀏覽器會取默認色。 例如:box-shadow:10px 5px red; //沿X軸10px,沿Y軸5px 陰影爲紅色 3)text-shadow 文本陰影 4)border-image 邊界圖片
1)文本換行:word-wrap:值; 取值:break-word和normal(默認normal) word-wrap屬性是針對長單詞或url地址換行 2)單詞拆分換行,指定換行規則:word-break:值; 取值:normal、keep-all和break-all。 3)文本陰影:text-shadow:水平陰影 垂直陰影 模糊的距離 陰影的顏色; 例:text-shadow:10px 10px 5px pink; 盒陰影、陰影框:box-shadow:X軸偏移量 Y軸偏移量 陰影模糊半徑 陰影顏色; 4)文本輪廓:text-outline:輪廓的粗細 模糊半徑 顏色;
注意:任何主流瀏覽器都不支持text-outline屬性; 5)文本溢出屬性:text-overflow:clip; 文本溢出屬性指定溢出的內容如何向用戶顯示。 取值:clip(修剪文本)、ellipsis(用省略號來表明被修剪的文本)、string(使用給定的字符串來表明被修剪的文本,這個值只有在火狐瀏覽中才起做用),默認值爲clip。
@font-face:導入字體圖標; 在@font-face規則中,必須先定義字體的名稱(如:myFirstFont),而後指向該字體文件。 @font-face{ font-family: [字體名稱]; src: [字體路徑,能夠放多個]; font-weight: font-style: }
@font-face {
font-family:myFirstFont;
src:url(sation_light.woff);
}
div {font-family:myFirstFont;}
複製代碼
獲取特殊字體的網站:www.fontsquirrel.com/tools/webfo…
HTML中的背景樣式
:
H5中新增的背景樣式
: 1)background-size:值;背景圖片的尺寸; 取值有四種狀況: 第一種:寬高具體值;100px 100px
第二種:寬高百分比;100% 100% 第三種:cover 以合適的比例把圖片進行縮放(不會變形),用來覆蓋整個容器; 第四種:contain 背景圖覆蓋整個容器(若是一邊碰到容器的邊緣,則中止覆蓋,會致使部分區域是沒有背景圖的) 2)background-clip:背景圖片裁切; 取值爲:content-box、padding-box、border-box。 3)background-origin:設置背景圖的起始點; 取值爲:content-box、padding-box、border-box。 4)filter 濾鏡
有兼容問題,須要加瀏覽器前綴;
注意:chrome、safari、firefox等使用了舊的標準,0deg將建立從左到右的漸變,90deg將建立從下到上的漸變。 擴展屬性:repeating-linear-gradient() 函數用於重複線性漸變 例如:background:repeating-linear-gradient(to right,red 10%,green 20%); background:repeating-linear-gradient(red 5%,yellow 40%,green 70%); www.cnblogs.com/xiaohuochai… 2. 徑向漸變(radial-gradients):由它們的中心定義,必須至少定義兩種顏色結點。 語法:background:radial-gradients(center,shape,size,start-color, ...,last-color); 其中,默認的漸變中心是center。shape的取值爲circle和ellipse(橢圓形),默認值爲ellipse。 漸變的大小size的取值有closest-side、farthest-side、closest-corner和farthest-corner(表示到最遠的角落),默認是farthest-corner。 3. 透明度(transparent)
漸變也支持使用透明度可用於建立減弱變淡的效果 使用rgba()函數來定義顏色結點。rgba()函數的最後一個參數的取值爲0到1的值,0表示徹底透明,1表示徹底不透明。 例如:background:linear-gradient(to right,rgba(255, 0, 0,0.3),rgba(76, 255, 0,0.7));
谷歌的內核:webkit Firefox(火狐)的內核:Gecko ie的內核:Trident opera(歐朋)的內核:presto
transition: all 1s linear;
/*谷歌的內核*/
-webkit-transition:all 1s linear ;
/*火狐*/
-moz-transition: all 1s linear;
/*歐朋*/
-o-transition: all 1s linear;
/*IE*/
-ms-transition:all 1s linear;
複製代碼
變形 transform:值; 1)translate(X|Y) 平移 translate(x,y)方法可拆分爲translateX() translateY(); 2)scale(X|Y) 縮放;寬高各縮放n倍; scale(X|Y)方法可拆分爲scale(X) scale(Y); 3)rotate() 旋轉,單位deg 4)skew(X|Y) 傾斜 軸的問題: X軸右爲正;Y軸向下爲正;Z軸垂直於屏幕,向外爲正;
屬性: 1)transform-style:flat|preserve-3d; 默認值爲flat; 含義:用來實現3d變形;加在子元素身上
(讓誰有動畫效果就加在誰身上); 2)perspective:值;
含義:視距
,實現3D動畫必用的屬性; perspective這個屬性必須加在父元素身上,並且儘可能不要加在body上;
軸的問題: 從軸的正方向往負方向看,若是是順時針,就是正的;逆時針就是負的;
transition中的屬性
: 1)transition-property:none/all/某個屬性名稱; 默認值爲all; 含義:哪些屬性樣式發生改變執行過渡動畫效果; 2)transition-duration:time; time以秒或毫秒計(1s或1ms)默認值爲0; 含義:過渡動畫的持續時間; 3)transition-timing-function:值; 含義:動畫運動的方式; transition-timing-function屬性的值有不少,可是隻能用一個: linear:線性過渡,勻速運動,默認值; ease:平滑過渡; ease-in:由慢到快; ease-out:由快到慢; ease-in-out:由慢到快再到慢; cubic-bezier:執行本身設定的貝塞爾曲線; 4)transition-delay:time; 默認值爲0s不延遲當即執行動畫,time以秒或毫秒計; 含義:設置延遲過渡的時間; transition屬性的縮寫:transition:property duration timing-function delay;
注意:順序不能亂,還有使用transition必定要有事件的發生,例如點擊、鼠標移入等;
5)transform-origin:x y z; 用來更改變形的起點;
animation屬性詳解: 1)animation-name:keyframename|none; 含義:設置動畫運動軌跡的名稱;默認值爲none; 參數說明:keyframename指定要綁定到選擇器的關鍵幀的名稱;none指定沒有動畫; 2)animation-duration:time;
含義:設置動畫的持續時間; 參數說明:time表示動畫播放完成發費的時間,默認值爲0,意味着沒有動畫; 3)animation-timing-function:ease | linear | ease-in | ease-out | ease-in-out | step-start | step-end 含義:用於設置動畫的過渡方式;默認值ease; 4)animation-delay:time;
含義:設置動畫的延遲時間; 參數:time以秒或毫秒計,默認值爲0; 5)animation-iteration-count:infinite|數值; infinite爲無限次數循環,默認值爲1; 含義:設置動畫的循環次數; 6)animation-direction:normal | reverse | alternate | alternate-reverse | initial | inherit; 含義:設置動畫在循環中的運動方向; 參數:normal:正常方向;reverse:反方向運行; alternate:動畫先正常運行再反方向運行,並持續交替運行(須要設置循環次數); alternate-reverse:動畫先反方向運行再正方向運行,並持續交替運行(須要設置循環次數); 7)animation-fill-mode:none | forwards | backwards | both | initial | inherit; 含義:動畫完成後的狀態; 參數說明:none爲默認值,不設置動畫以外的狀態;forwards:設置對象狀態爲動畫結束時的狀態;backwards:設置對象狀態爲動畫開始時的狀態;both:設置對象狀態爲動畫結束或開始的狀態; 注意:幀動畫運動完成後,元素會默認回到運動的起始位置,若是想讓其停留在最後一幀的位置,設置animation-fill-mode這個屬性的值爲forwards;
8)animation-play-state:paused | running; 指定動畫是否正在運行或已暫停; 參數:paused指暫停動畫;running爲默認值,指正在運行的動畫; Animation屬性縮寫
: animation:name duration timing-function delay iteration-count direction fill-mode play-state; 注意:第一個屬性和第二個屬性name和duration必須有;
建立動畫:@keyframes 動畫名稱{}
//設置幀動畫的運動軌跡
//第一種方式:
@keyframes [運動軌跡名稱] {
from{ //開始的樣式 }
to{ //結束的樣式 }
}
//第二種方式:
@keyframes [運動軌跡名稱] {
0%{ //開始的樣式 }
50%{ }
100%{ //結束的樣式 }
}
複製代碼
box-sizing:border-box | padding-box | content-box(默認值)| inherit; box-sizing改變的至關於在css中設置的width/height;border-box表明整個盒子的寬高,當修改padding或者margin時,盒子的大小不變,只會讓內容縮放;
columns:多列布局 1)columns屬性 用法:columns: column-width | column-count; 參數說明:column-width爲每列的寬度;column-count爲列數; 2)column-width: length | auto;
含義:設置每列的寬度; 參數說明:length爲用長度值來定義列寬,不容許負值;auto根據列數自定分配寬度; 3)column-count: 總數 | auto;用來設置列數 參數說明:總數只能是正整數,不能爲負數; 4)column-gap: length | normal;
含義:設置列與列之間的間隙; 參數說明:length來定義列與列之間的間隙,不容許負值;normal與字體大小相同; 5)column-rule複合屬性 column-rule是column-rule-width、column-rule-style和column-rule-color屬性的簡寫; 含義:設置列與列之間的邊框厚度、樣式和顏色; 6)column-rule-width: length | thin |medium | thick; 含義:設置列與列之間的邊框厚度 7)column-rule-style:none | hidden | dotted | solid | double | groove | ridge | inset | outset 含義:設置列與列之間的邊框樣式;
8)column-rule-color: color; 設置列與列之間的邊框顏色; 注意:要定義邊框顏色,邊框寬度和樣式都要定義;單獨定義邊框顏色沒有效果; 9)column-span: none | all; 設置元素是否橫跨全部列; 參數:none表示不跨列;all表示橫跨全部列; 10)column-fill: auto | balance; 設置對象全部的高度是否統一; 參數說明:auto爲默認值表示列高度自適應內容,balance表示全部列的高度以其中最高的一列統一; 目前主流瀏覽器都不支持column-fill屬性; 11)column-break-before:auto | always | avoid; 設置對象以前是否斷行; auto表示既不強迫也不由止在元素以前斷行併產生新行; always:老是在元素以前斷行併產生新列; avoid:避免在元素以前斷行併產生新列; 12)column-break-after:auto | always | avoid; 設置對象以後是否斷行; 13)column-break-inside:auto | avoid; 設置對象內部是否斷行;
什麼是響應式佈局?針對不一樣的屏幕尺寸設置不一樣的樣式; 響應式佈局是解決移動端設備屏幕尺寸不一樣的問題; 響應式佈局的特色
:頁面的盒子的大小或位置會隨着屏幕的大小而變化; 如何實現響應式佈局開發? 最經常使用的方案:rem等比縮放響應式佈局
;
作移動端H5開發,首先加meta標籤(必須加)
<meta name="viewport" content="width=device-width,initial-scale=1.0">
複製代碼
meta標籤的做用
:讓當前viewport的寬度等於設備的寬度,同時不容許用戶手動縮放。 此meta標籤就是設置viewport視口的規則: 讓佈局視口成爲理想視口:
1)width=device-width :讓HTML頁面的寬度等於設備的寬度; 2)initial-scale=1.0 :初始縮放比例爲1:1; 3)user-scalable=no :禁止用戶手動縮放; 4)maximum-scale=1.0和minimum-scale=1.0 :設置最大最小的縮放比例1:1(既不放大也不縮小=》部分安卓機只設置user-scalable是不起做用的,須要同這兩個一塊兒使用);
三個視口viewport
: 1)layout viewport:佈局(頁面)視口, layout viewport的寬度能夠經過document.documentElement.clientWidth來獲取;layout viewport的寬度是大於瀏覽器可視區域的寬度的,因此須要一個viewport來表明瀏覽器可視區域的大小,就叫visual viewport; 2)visual viewport :視覺視口; visual viewport的寬度能夠經過 window.innerWidth 來獲取; 3)ideal viewport :理想視口; ideal viewport並無一個固定的尺寸,不一樣的設備擁有有不一樣的ideal viewport;
流式佈局也叫百分比佈局; 一、佈局特色
:屏幕分辨率變化時,頁面裏元素的大小會變化而但佈局不變。【這就致使若是屏幕太大或者過小都會致使元素沒法正常顯示】 二、設計方法
:使用%百分比定義寬度,高度大都是用px來固定住,能夠根據可視區域 (viewport) 和父元素的實時尺寸進行調整,儘量的適應各類分辨率。每每配合 max-width/min-width 等屬性控制尺寸流動範圍以避免過大或者太小影響閱讀。
媒體查詢主要是解決pc端屏幕寬度不一樣致使的樣式的改變;
media響應式佈局
響應式佈局的寫法: @media [媒體設備] and ( media feature ){ css-code; }
媒體設備都有什麼: 1)all 表明全部設備; )screen 表明屏幕設備(pc+電腦); )print 表明打印機設備; media feature媒體取值範圍:能夠多個 max-width:定義輸出設備中的頁面最大可見區域寬度;表明的是上限; min-width:定義輸出設備中的頁面最小可見區域寬度;表明的是下限;
@media screen and (max-width:800px) and (min-width:600px){
.box div:nth-child(2){
background: purple;
}
}
複製代碼
媒體查詢響應式佈局的缺點:
參考文檔:www.runoob.com/w3cnote/fle… Flex Layout Box Model彈性盒模型; 它可以更加高效方便控制元素對齊、排列,更重要的是可以自動計算佈局內元素的尺寸,不管這個元素的尺寸是固定的仍是動態的。 flex的結構
:
display: -webkit-flex; display:flex; //通常加在父級元素上
一旦父元素設置flex佈局,子元素的float、clear和vertical-align屬性將失效;
彈性盒模型的屬性
這六個用在父級元素身上
1)flex-direction: row | row-reverse | column | column-reverse; 含義:定義子元素在主軸的排列方向; 參數:row爲默認值,表示橫向排列從左到右;row-reverse爲從右到左;column爲縱向排列從上到下;column-reverse爲從下到上; 2)flex-wrap: nowrap | wrap | wrap-reverse; 含義:控制伸縮項目換行; 參數:nowrap爲默認值,表示不換行;wrap爲換行;wrap-reverse爲倒序換行; 3)flex-flow爲複合屬性; flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,默認值爲row nowrap。 4)justify-content:flex-start | flex-end | center | space-between | space-around; 含義:子元素在主軸上的對齊方式;默認值爲flex-start; space-between:伸縮項目兩邊碰 中間空間平均分; space-around:伸縮項目平均分 剩餘空間兩邊碰; 5)align-items:flex-start | flex-end | center | baseline | stretch; 含義:子元素在交叉軸上的對齊方式; 6)align-content:flex-start | flex-end | center | stretch | space-between | space-around; 含義:控制容器內多行在交叉軸上的排列方式;默認值爲stretch; 注意:設置align-content須要設置flex-wrap: wrap; 垂直居中對齊: display:flex; justify-content:center; align-items:center;
Flex子元素上的屬性 用在子元素上的屬性經常使用的只有flex屬性;
flex:1;
表示全部元素各佔一份,平均分配;根據屏幕的寬度來設置HTML的font-size值;
什麼是rem? rem是一個單位,px是固定單位;rem是相對單位,相對於當前頁面根元素HTML的字體設定的單位; 頁面根元素HTML的字體大小設置爲多少,至關於一個rem等於多少像素; rem的特色
:
若是HTML的font-size不變,用rem和px是同樣的,可是若是字體大小改變,也就是改變了rem和px之間的換算比例,那麼以前全部用rem作單位的樣式都會自動按照最新的比例進行縮放,實現了改動HTML的font-size,整個頁面中的元素都跟着縮放了;
利用了當前屏幕和750的比等於屏幕的fontSize和750的fontSize的比例相同; 不一樣的屏幕大小設置不一樣的font-size值;
(function () {
function computedFont() {
let desW = 750; //設計稿尺寸
let winW = document.documentElement.clientWidth;
document.documentElement.style.fontSize = winW/desW*100+"px"; //100表明的是HTML的font-size的值;
}
computedFont();
//resize : 當屏幕的窗口的大小發生改變時,執行這個方法;
window.addEventListener("resize",computedFont);
})();
複製代碼
這段代碼一般放在body上面:在解析DOM以前,改變HTML的fontSize值;減小DOM的重繪;
app開發模式有3種:原生App,webApp,混合開發App。
什麼是Hybird混合模式開發?
Hybrid混合開發的原理
: 其核心是使用WebView控件來實現:Native調用前端頁面JS中的方法,或者前端頁面經過JS調用Native提供的接口;Native和前端JS互相調用皆經過Webview橋樑來實現。
Hybrid混合開發的優缺點
優勢:
缺點:
移動端click事件300ms延遲的緣由和解決辦法? 緣由
:移動端中元素的click事件都會有300ms的延遲現象,移動端中,分爲單擊和雙擊,當觸發點擊操做,瀏覽器會等待300ms,若是300ms以內沒有再次點擊,那麼會默認執行單擊操做;若是300ms內點擊了第二次,那麼會執行雙擊的操做; 解決方法1
:須要引入fastclick.js(解決300ms延遲的插件)
// 當頁面DOM加載完畢,執行這個函數
window.addEventListener("load",function () {
FastClick.attach(document.body);
});
複製代碼
FastClick原理
:在touchend以後,當即採用DOM自定義事件觸發了onclick綁定的那個方法,而且把原有的方法阻止掉; 在移動端中:事件執行順序是touchstart touchmove touchend click;正常狀況下,會等到touchend執行完畢以後,等待200-400ms之間執行click;
目前項目中移動端的點擊操做基本都是基於第三方類庫; 解決方法2
:zepto:提供了移動端經常使用的事件操做,不存在300ms延遲;
click300ms延遲會致使點透問題
,什麼是點透問題:
移動端沒有keydown和keyup事件,用oninput事件代替,表明正在操做當前元素表單; 移動端不存在鼠標事件,取而代之的是更加人性化的觸摸事件(touch);
一、touchstart:手指觸摸屏幕觸發(已有手指放屏幕上不會觸發)。 二、touchmove:手指在屏幕滑動,連續觸發。 三、touchend:手指離開屏幕時觸發。 四、touchcancle:系統取消touch時觸發。當有一些更高級別的事情發生(例如:接電話),會取消當前touch操做,會觸發touchcancle事件; 注意:當touchstart、touchmove、touchend和click同時存在時,會根據鼠標移動判斷是否須要發生touchmove;若是觸發就再也不觸發onclick事件; 若是觸摸或點擊超過300ms就不觸發click事件了(只要觸發touchmove事件,click就不觸發了);
大體上分爲DOM0事件和DOM2事件兩種 DMO0事件,就是傳統的直接將事件做爲屬性設置的形式:
box.ontouchstart = function(){ }
複製代碼
DOM2事件,則是用addEventListener的方式來綁定事件處理程序:
box.addEventListener("touchstart",function(){
});
複製代碼
每一個touch對象包含的屬性:
在touchend事件中,事件對象沒有在e.touches中,把事件信息放在了changedTouches中;
box.ontouchstart = function(e){
console.log(e.touches[0].clientX);
}
box.ontouchmove = function(e){
console.log(e.touches[0].clientX);
}
box.ontouchend = function(e){
console.log(e.changedTouches[0].clientX);
}
複製代碼
<link rel="stylesheet" href="//at.alicdn.com/t/font_1349506_mdthe95t1c.css">
複製代碼
<link rel="stylesheet" href="icon/iconfont.css">
複製代碼
<div class="iconfont icon-shouye"></div>
複製代碼
注意:類名中的iconfont和icon-shouye都不能省;
audio和video標籤讓咱們告別了flash時代;
<video src="data/imooc.mp4" controls></video>
複製代碼
video標籤支持的三種常見格式:mp4,webm,ogv; video標籤中能夠放幾個
<video controls="controls">
<source src="data/1.mp4">
<source src="data/1.webm">
<source src="data/1.ogv">
</video>
複製代碼
audio標籤訂義音頻,好比音樂等;和video視頻標籤用法基本一致;
<audio controls src=」imooc.mp3」></audio>
複製代碼
audio支持的音頻格式:mp三、wav和ogg;其中mp3格式兼容全部瀏覽器,ogg格式不支持safari瀏覽器;可使用<source>
標籤來解決兼容問題;
<audio controls="controls">
<source src="data/1.mp3">
<source src="data/1.wav">
<source src="data/1.ogg">
</audio>
複製代碼
javaScript能夠生成audio對象,new Audio()等同於html中寫一個<audio></audio>
標籤;
//<button id="btn">播放</button>
var myAudio = new Audio();
myAudio.src = 'data/imooc.wav';
btn.onclick = function(){
myAudio.play();
}
複製代碼
1)play():音頻播放事件; 必須放在事件中才能兼容全部瀏覽器; 2)pause():音頻暫停事件; 3)paused:true表示暫停狀態,false表示播放狀態;
btn1.onclick = function(){
myAudio.play();
console.log(myAudio.paused); //false
}
btn2.onclick = function(){
myAudio.pause();
console.log(myAudio.paused); //true
}
複製代碼
4)duration:返回音頻的總長度; 5)canplay():當音頻加載完畢會當即觸發canplay事件;加載音視頻是異步的;異步加載;
myAudio.addEventListener("canplay",function(){
console.log(myAudio.duration);
})
複製代碼
6)currentTime:設置或返回音頻的長度;
myAudio.currentTime = '20';
複製代碼
7)src:設置或返回當前音頻的來源; 8)currentSrc:返回當前音頻的URL地址,不能賦值; 9)volume:設置或返回當前音頻的音量; volume的值爲0到1,0表示靜音,1表示滿格;可使用input標籤的range屬性來代替volume控件
/*<video controls id="myAudio" src="imooc.mp4"></video> <input type="range" min=0 max=100 value=50 id="range" /> <div id="playNode">播放</div> <div id="stopNode">暫停</div> <div id="go">快進</div>*/
myAudio.volume = 0.5;
range.oninput = function(){
myAudio.volume = this.value/100;
}
複製代碼
10)controls:設置音頻是否顯示空間/設置控制器; 11)muted():設置音頻是否靜音; muted和controls用法相同,可是這個屬性不會出如今radio標籤上 12)networkState():返回音頻當前網絡狀態; 13)ended():經過監聽事件當音頻播放結束的執行函數,也能夠直接查看其布爾值; ended的返回值爲true或false,播放結束返回true,沒有播放結束返回false,ended能夠進行事件監聽(addEventListener)
myAudio.addEventListener("ended",function(){
console.log("音頻播放結束");
})
複製代碼
14)loop():設置或返回音頻是否應在結束時從新播放,true表明循環,false表明不循環;
myAudio.loop = true;
複製代碼
15)playbackRate():設置或返回音頻播放的速度; playbackRate默認是1,設置播放速度:
myAudio.playbackRate = 15;
複製代碼
16)readyState():返回音頻的當前就緒狀態;
17)timeupdate():能夠監聽音頻目前的播放狀態,若是播放就自動執行函數中的內容;
myAudio.addEventListener("timeupdate",function(){
console.log("音頻正在播放中。。。");
})
複製代碼
18)seeked():用戶已移動/跳躍到音頻中的新位置時; 19)seeking():用戶開始移動/跳躍到音頻中的新位置時; 在audio中,seeked和seeking的觸發頻率是同樣的;在video中,seeking的觸發頻率比seeked要高; 20)volumechange():音頻的音量發生改變時就會觸發這個事件,使用時必須使用on,也可使用監聽事件;
myAudio.addEventListener("volumechange",function(){
console.log("音頻的聲音改變了");
})
複製代碼
21)requestFullscreen():全屏事件,必須使用audio標籤設置全屏,使用new Audio對象不能使用這個全屏事件; requestFullscreen必須放到事件中使用,並且在哪一個瀏覽器中使用就要加哪一個瀏覽器的前綴 22)load():從新加載視頻資源; load就是強制讓播放器從新加載一次,通常用於播放器的src發生改變的時候; 從新加載有兩種方法:一種是load()方法,一種是src;
本地存儲:localStorage/sessionStorage 獲取地理位置:navigator.geolocation.getCurrentPosition 調取手機內部的GPS定位系統獲取當前手機所在地的經緯度以及精準度等;
websocket:socket.io 客戶端和服務端新的傳輸方式(即時通信IM系統基本上不少是基於它完成的)
juejin.im/entry/5a17a… segmentfault.com/a/119000000…
<img src="1.jpg" alt="">
<img src="2.jpg" alt="">
複製代碼
兩個圖片之間會有縫隙; 由於img自己屬於行內塊元素,因爲換行致使的; 解決辦法:給img設置display:block,設置成塊元素;
touchstart、touchmove、touchend
解決辦法:本身寫個ajax發送請求;