fcc项目总结系列1:个人作品展示页面制作项目源码阅读

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事件在inputtextarea元素的值发生改变时触发。该事件类似于onchange 事件。不同之处在于 oninput 事件在元素值发生变化是立即触发, onchange 在元素失去焦点时触发。另外一点不同是 onchange 事件也可以作用于 keygenselect 元素.

propertychange事件则用用兼容低版本IE.

几个jquery函数

函数 说明
.stop 停止当前动画
.offset() 获取元素相对于页面偏移量

bootstrap插件函数

函数 说明
.collapse('hide') 隐藏元素可折叠元素,来自collapse插件
.scrollspy() 在被监听元素(常常是body)上调用该方法,参数指定使用需要跟随被激活的链接的位置,来自scrollspy插件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 113,845评论 24 450
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,721评论 0 8
  • 今天中午,又与我妈争执了一下。 侄子在吃饭,我弟在培养孩子自己吃饭的习惯,可是老人总嫌孩子吃的少,坐在一旁,不停地...
    慢慢阿维娃阅读 221评论 0 0
  • 复盘: 1,先通过照片给大家回忆上次活动过程 2,两组讨论,关于自己小组成员的寻宝过程中,哪些方面做的比较好,值得...
    日出东方天刚晓阅读 136评论 0 0
  • 风把树叶吹了起来,转了一圈又一圈,叶子还在原地,好像听到了谁在哭泣。 天上的云朵白白的,在轻轻地飘,...
    潺湲阅读 157评论 0 0