begin: 20170724
version: 20170724
該文起源于一個fcc項目(個人作品展示頁面制作),之前寫過一篇(fcc portfolio項目總結),是自己獨立搭建這個頁面的總結;而本文是閱讀其示例項目的源代碼的總結。
1.外部文件
- bootstrap3.3.5(css)
- font-awesome4.4.0(css) (以使用font awesome圖標)
- bootstrap3.3.5(js)
- jquery2.1.3(js)
- jquery-easing(js)插件,用于擴展jquery動畫可用的緩動函數選項
插件概述,$.animate()方法在使用時,可以指定以easing字符串參數,以指定緩動函數,如jquery默認參數是的是'wing'
,直接可有的還有'linear'
等,該插件擴展了一些可選的緩動函數,只需以字符串形式指定它們的名字即可如:'easeInCubic'
、'easeOutExpo'
等。
2.css
彈性盒子
css中用到了彈性盒子,解讀如下:
- 在父元素上引用
display:flex;
,為了兼容之前還有兩條規則display:-webkit-box;
、display:-ms-flexbox;
;這樣父元素的空間就可以被子元素分配了; -
flex-flow:row wrap;
水平顯示,必要時拆行; -
-ms-flex-pack:distribute;
、justify-content:around;
,空白部分在所有子元素間平均分配; -
-webkit-box-align: start;
、-ms-flex-align: start;
、align-items:flex-start;
,縱軸起始邊界對齊;
該屬性兼容性不高,上述考慮了兼容的規則ie9中都不行。
相關文章:
font awesome
常規用法,在html中使用i
標簽,添加相應的類,例如
<i class="fa fa-align-justify"></i>
另外一種方式是在css中用unicode編碼生成:
.icon:before{
content: '\f039';
font-family: FontAwesome;
}
各圖標對應的unicode編碼可以在官網查到。
3.javascript
尺寸與位置
js文件中大量用到了元素的各種尺寸屬性,在此做一個總結:
屬性 | 含義 |
---|---|
offsetHeight offsetWidth | 描述元素外尺寸,元素內容+內邊距+邊框,不包括外邊距和滾動條 |
offsetLeft offsetTop | 描述元素的左上角(邊框的外邊緣)與已定位的父容器(offsetParent對象——元素最近的定位為relative或absolute的祖先元素,若沒有則返回null)左上角的距離 |
clientWidth clientHeight | 描述元素內尺寸,元素內容+內邊距,不包括邊框(IE下實際包括)、外邊距、滾動條。滾動條占據父元素的內容區+padding空間。 |
scrollWidth scrollHeight | 元素內容+內邊距+溢出尺寸,當內容沒有溢出時,scrollWidth和scrollHeight一般分別與clientWidth和clientHeight相等,但實際上不同瀏覽器有不同處理,它們未必相等。 |
scrollLeft scrollTop | 描述元素滾動條的位置,可寫 |
jquery方法 | |
.width() .height() | 獲取元素的計算樣式寬高,不論采用哪種盒模型,只表示內容區寬度;$( window ).width();獲取瀏覽器視口寬度,$( document ).width();獲取頁面寬度 |
.offset() | 獲取元素(不含外邊距)相對于頁面的偏移量對象(其中有left,top屬性) |
.position() | 獲取元素(不含外邊距)相對于已定位父容器的偏移量對象(其中有left,top屬性) |
應用 | |
window.innerWidth window.innerHeight | 瀏覽器視口寬高,包括滾動條,css媒體查詢(如min-width)依據的是此分辨率而不是屏幕分辨率 |
window.screen.width window.screen.height | 屏幕寬高分辨率 |
$(window).width() $(window).height() | 瀏覽器視口寬高,不包括滾動條 |
document.body.offsetHeight document.body.offsetHeight | 頁面總高度,body元素margin應該對其有影響 |
window.pageXOffset window.pageYOffset | pageXOffset 和 pageYOffset 屬性返回文檔在窗口左上角水平和垂直方向滾動的像素,ie8-可以用document.documentElement.scrollLeft 和 document.documentElement.scrollTop 屬性替代 |
-
獲取瀏覽器視口寬高
視口高度:
window.innerHeight ||
document.documentElement.clientWidth ||
document.body.clientWidth
視口寬度:
window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight
(對于運行在混雜模式下IE,用document.body代替document.documentElement,可參看《js高程》相關代碼)
-
獲取基于視口的最小高度的文檔總寬高
文檔總高度:
Math.max(document.documentElement.scrollHeight ||
document.documentElement.clientHeight)
文檔總寬度:
Math.max(document.documentElement.scrollWidth ||
document.documentElement.clientWidth)
(混雜模式下IE,還要用document.body代替document.documentElement,可參看《js高程》相關代碼)
- 獲取文檔滾動寬高量
//from MDN
var x = (window.pageXOffset !== undefined)
? window.pageXOffset
: (document.documentElement ||
document.body.parentNode ||
document.body).scrollLeft;
var y = (window.pageYOffset !== undefined)
? window.pageYOffset
: (document.documentElement ||
document.body.parentNode ||
document.body).scrollTop;
來自MDN
事件相關
.on()
jquery的.on()方法在把同個函數綁定到多個不同事件時,可以合并寫,如:
$('body')
.on('input propertychange','.form-item',function(event){
//這里采用jquery實現了多事件綁定,
//等效于分別綁定到同一個函數
//propertychange事件用于低版本ie(8-)兼容
$(this).toggleClass('form-item-filled',!!$(event.target).val());
})
另外,利用該方法進行事件委托時,第二個參數是選擇符,只有在事件冒泡過程中的元素中,存在滿足選擇符同時是被委托元素的后代的元素,就會觸發事件(并不一定需要event.target符合選擇符)。
input和propertychange事件
input
事件在input
或 textarea
元素的值發生改變時觸發。該事件類似于onchange 事件。不同之處在于 oninput 事件在元素值發生變化是立即觸發, onchange 在元素失去焦點時觸發。另外一點不同是 onchange 事件也可以作用于 keygen
和 select
元素.
propertychange事件則用用兼容低版本IE.
幾個jquery函數
函數 | 說明 |
---|---|
.stop | 停止當前動畫 |
.offset() | 獲取元素相對于頁面偏移量 |
bootstrap插件函數
函數 | 說明 |
---|---|
.collapse('hide') | 隱藏元素可折疊元素,來自collapse插件 |
.scrollspy() | 在被監聽元素(常常是body )上調用該方法,參數指定使用需要跟隨被激活的鏈接的位置,來自scrollspy插件 |