1.进度条效果
在一个div内包含空的span元素,通过CSS3来控制这个属性的背景以及宽度,就写出了进度条的效果,页面加载时进度条滚动使用的新属性animation并自定义了关键帧,demo
2.chrome云语音输入
只能在webkit内核的浏览器中使用,貌似是使用了谷歌的云语音功能,但是语音识别效果并不理想额,demo
光标悬浮时显示figcaption图片说明,并将其余图片变暗,demo
实现了简单的功能,CSS还未优化。
1.纵向和横向下拉菜单,demo/2012-10-26/1.html
是个二级菜单,多级菜单原理相同,按需要再制作。
2.标签页效果,demo/2012-10-26/2.html
看似简单,但细节倒是不少。
目前学习jquery还很吃力,但一定得坚持多做练习!
默认 | default |
文字/编辑 | text |
自动 | auto |
手形 | pointer, hand(hand是IE专有) |
可移动对象 | move |
不允许 | not-allowed |
无法释放 | no-drop |
等待/沙漏 | wait |
帮助 | help |
十字准星 | crosshair |
向上改变大小(North) | n-resize |
向下改变大小(South) | s_resize 与n-resize效果相同 |
向左改变大小(West) | w-resize |
向右改变大小(East) | e-resize 与w-resize效果相同 |
向左上改变大小(NorthWest) | nw-resize |
向左下改变大小(SouthWest) | sw-resize |
向右上改变大小(NorthEast) | ne-resize 与sw-resize效果相同 |
向右下改变大小(SouthEast) | se-resize 与nw-resize效果相同 |
自定义光标 | url(‘光标地址’) |
$(‘div’).last();//选择最后一个匹配元素
$(‘div’).eq(1);//选择第二个匹配元素
$(‘div’).eq(-1);//选择倒数第一个匹配元素
$(‘#demo’).animate({‘font-size’:‘18’,‘width’:‘+=300’//注意这行});}); $(‘#reset’).click(function(){ $(‘#demo’).animate({‘font-size’:‘14px’,‘width’:‘-=300’//注意这行});});
$(‘#run’).click(function(){
$(‘#demo’).animate({
‘width’: ‘-=128px’,
‘height’: ‘-=128px’,
‘opacity’:0.2,
‘padding-top’: ‘-=10px’
}, 5000);});
$(‘#reset’).click(function(){
$(‘#demo’).stop().animate({
‘width’: ‘128px’,
‘height’: ‘128px’,
‘opacity’: 1
});});
var progressbar;
$(‘#run’).click(function(){
progressbar = setInterval(function () {
$(‘#demo’).animate({
‘width’: ‘+=10’
});
}, 1000);
$(this).attr(“disabled”, true);
$(‘#reset’).attr(“disabled”, false);});
$(‘#reset’).click(function(){
clearTimeout(progressbar);
$(‘#run’).attr(“disabled”, false);
$(this).attr(“disabled”, true);});
$(‘#run’).click(function(){
$(‘#demo’).html(‘2秒后消失’);
$(‘#demo’).show(200).delay(2000).hide(200);//hide()和show()方法要带参数,否则不能正常运行的[原因]。
});
jQuery DOM操作
$(‘#run’).click(function(){
var ct = $(‘#container’);
ct.append(ct.prev().html()).append(‘<br/>’).append(ct.prev().text());});
$(‘#reset’).click(function(){
$(‘#container’).empty(‘’);});
$(‘#run’).click(function(){
var ct = $(‘#container’);
ct.append(‘append添加的内容’).prepend(‘prepend添加的内容’).before(‘before添加的内容’).after(‘after添加的内容</br>’);});
$(‘#reset’).click(function(){
$(‘#container’).empty(‘ www.gbin1.com ’);});
使用.clone()方法
$(‘#run’).click(function(){
var ct = $(‘#container’);
ct.append(ct.prev().html()).append(‘<br/>’).append(ct.prev().text());});
$(‘#reset’).click(function(){
$(‘#container’).empty(‘’);});
$(this).html(“clicked”);});
$(‘.item’).bind(‘dblclick’, function(){
$(this).html(“dblclicked”);});
$(‘.item’).clone().appendTo(‘#container’);//添加新元素
$(this).html(“clicked”);});
$(‘.item’).live(‘dblclick’, function(){
$(this).html(“dblclicked”);});
$(‘.item’).clone().appendTo(‘#container’);
$(this).html(“clicked”);});
$(‘#container’).on(‘dblclick’,‘.item’, function(){
$(this).html(“dblclicked”);});
$(‘.item’).clone().appendTo(‘#container’);
$(this).html(“clicked”);});
$(‘#container’).delegate(‘.item’, ‘dblclick’, function(){
$(this).html(“dblclicked”);});
$(this).html(“mouseleave once”);});
使用preventDefault()方法
阻止缺省的事件触发,例如,你点击 <a href=”http://www.gbin1.com">gbin1.com</a> 将会转向对应的页面,如果你使用preventDefault()方法,将阻止页面加载:
e.preventDefault();
$(this).html(‘阻止访问gbin1.com’);
});
e.stopPropagation();
$(this).html(‘阻止父元素事件’);
});
$(‘#normal’).click(function(e){
$(this).html(‘不阻止任何父元素事件’);
});
$(‘.wp’).click(function(e){
$(this).append(‘触发父元素事件’);
});
e.stopImmediatePropagation();
$(this).html(‘阻止父元素事件’);
});
$(‘#normal’).click(function(e){
e.stopPropagation();
$(this).html(‘不阻止任何父元素事件’);
});
$(‘button’).click(function(e){
$(this).append(‘-button触发事件’);
});
$.each(gb_array,function(i, v){ $(‘#langlist’).append(‘<li id=”‘+ i +‘“>’+ v +‘</li>’);})
$(‘#langlist’).each(function(i) {
$.data(p,“site”,“gbin1.com”); $p.append($.hasData(p)+“ “); $.removeData(p); $p.append($.hasData(p)+“ “);
$(‘#prev’).live(‘click’, function(){
if ($cur.prev(‘div’).html()) {
$cur.removeClass(‘selected’).prev(‘div’).addClass(‘selected’);
$cur = $cur.prev(‘div’);
}});
$(‘#next’).live(‘click’,function(){
console.log($cur.next(‘div’));
if ($cur.next(‘div’).html()) {
$cur.removeClass(‘selected’).next(‘div’).addClass(‘selected’);
$cur = $cur.next(‘div’);
}});
$(‘#level1’).find(‘#level3’).css({‘border’:‘1px solid #ccc’}).append(‘- 使用find找到元素’);
$(‘#level1’).children(‘div’).css({‘border’:‘1px solid red’}).append(‘- 使用children找到子元素’);
用空格来分隔字符序列,使代码美观
var that = this;
javascript中的/注释/对代码来说并不安全,故用//来代替。
javascript不允许用保留字来命名变量、参数和属性。
即标示符用于语句、变量、参数、属性名和标记。
1.javascript只有单一的数字类型(64位的浮点数),避免了短整数溢出的问题和音数字类型导致的错误。
NaN不等于任何值,可用函数isNaN(number)来检测。
2.数字拥有方法。Math包含一套作用于数字的方法。
1.javascript创建的字符都是16位的(Unicode字符集)。
2.javascript没有字符类型,要显示一个字符,只需要创建一个仅包含字符的字符串。
3.转义字符允许把正常情况下不被允许的字符插入到字符串中,如”\u0041”代表十六进制的数字
4.字符串是不可变的,一旦被创建就无法改变,但能通过 + 运算符去连接其他字符串而得到新的字符串
‘c’ + ‘a’ + ‘t’ === ‘cat’是true(包含完全相同的字符且字符顺序相同)
5.字符串存在一些方法,如:
‘ cat ‘.toUpperCase() === ‘CAT’
web浏览器缺少链接器,故javascript把语句抛入一个公共的全局名字空间中。
1.var语句呗用在函数内部时,定义了这个函数的私有变量。
2.switch、while、for和do语句允许有一个可选的前置标签(label),配合break使用
3.javascript的代码块不会创建新的作用域,因此变量应该被定义在函数的顶端而不是代码块中
4.以下值为假值(falsy):
false/null/undefined/空字符串 ‘ ‘ /数字 0 /数字 NaN
其余所有值当做真值,包括true/“false”以及所有的对象
数字/字符串/布尔值拥有方法,但都是不可变的.
javascript中的对象是可变的键控集合(keyed collections)
javascript中的对象是无类别的(class-free),对新属性的名字和值没有约束.
对象适合收集和管理数据,可包含其他对象,容易表示成树形或图形结构.
javascript包括一个原型链特性,允许对象继承.正确使用它能减少对象初始化的时间和内存消耗.
1.对象字面量就是包围在一对花括号中的 “ 名/值 “ 对.
2.对象字面量中,若属性名是一个合法的标示符且不是保留字,并不强制要求用引号括住属性名。故用“first-name”是必须的,但是否括住first_name则是可选的。
3.逗号用来分隔多个”名/值”对.
4.属性的值可以从包括另一个对象字面量在内的任意表达式中获得,对象是可嵌套的:
var flight = {
airline: “Oceanic”,
number: 815,
departure: {
IATA: “SYD”,
time: “2012-08-25 11:12”,
city: “Guangzhou”
},
arrial: {
IATA: “LAX”,
time: “2012-08-25 23:24”,
city: “Nanjing”
}
};
1.采用在[ ]后缀中括住一个字符串表达式的方式。
2.优先考虑 . 表示法(更紧凑且可读性好)。
stooges[“first-name”]
flight.departure.IATA
3.检索一个并不存在的成员元素的值,则返回undefined值。
4.||运算符可用来填充默认值
var middle = stooges[“middle-name”] || “(none)”;
var status = flight.status || “unknown”;
5.检索一个undefined值会导致TypeError异常,但可用 && 运算符来避免错误
flight.equipment //undefined
flight.equipment.model //throw “TypeError”
flight.equipment && flight.equipment.model //undefined
对象中的值通过赋值语句来更新。
对象通过引用来传递,但永远不会被拷贝。
1.所有通过对象字面量创建的对象都连接到Object.prototype这个对象。
2.javascript提供的实现机制复杂而杂乱,但其实可以被明显地简化 。
3.给Object增加一个beget方法,创建一个使用原对象作为其原型的新对象。
4.原型连接在更新时是不起作用的,当对某个对象做出改变时,不会触及该对象的原型。
5.原型连接只在检索值的时候才被用到。
6.若想要的属性完全不存在于原型链中,结果就是undefined值,这个过程称为【委托】
7.原型关系是动态的,若将新属性添加到原型中,该属性会立刻对所有基于该原型创建的对象可见。
1.typeof操作确定属性的类型:
typeof flight.number // ‘ number ‘
typeof flight.status // ‘ string ‘
typeof flight.arrival // ‘ object ‘
typeof flight.manifest // ‘ undefined ‘
2.做反射的目标是数据,故应意识到一些值可能会是函数
3.hasOwnProperty方法:若对象拥有独有的属性,将返回true。该方法不会检查原型链。
flight.hasOwnProperty( ‘number’ ) //true
flight.hasOwnProperty(‘constructor’) //false
1.for in 语句用来遍历对象中的所有属性名。
2.for in 语句会枚举所有属性,包括原型中的属性
3.用hasOwnProperty方法做过滤器过滤掉不想要的值,用typeof来排除函数:
var name;
for (name in another_stooge) {
if (typeof another_stooge[name] !== ‘function’) {
document.writeln(name + ‘: ‘ + another_stooge[name]);
}
}
4.属性名出线的顺序是不确定的,故要对任何可能出线的顺序有所准备。
5.要以特定顺序出线,则避免使用for in 语句,而是创建一个数组,在其中以正确的顺序包含属性名:
var i;
var properties = [‘first-name’,’middle-name’,’last-name’,’profession’];
for (i=0;i<properties.length; i +=1) {
document.writeln(properties[i] + ‘: ‘ +another_stooge[properties[i]]);
}
delete运算符用来删除对象的属性,移除对象中确定包含的属性,不会触及原型链中的任何对象。
删除对象的属性可能会让来自原型链中的属性浮现出来:
another_stooge.nickname //‘nickname1’
//删除another_stooge中的nickname属性,从而暴露出原型的nickname属性
delete another_stooge.nickname;
another_stooge.nickname //‘nickname0’
全局变量削弱的程序的灵活性,故应该避免。
1.最小化使用全局变量的一个方法是在应用中值创建唯一一个全局变量:
var MYAPP = {};
该变量此时变成应用的容器,只要把多个全局变量都整理在一个名称空间下,将能降低一其他应用程序、组建或类库之间产生糟糕的相互影响。
2.用闭包来进行信息隐藏的方式,是另一个减少全局污染的方法。
1.对象是”名/值”对的集合并拥有一个连到原型对象的隐藏连接。
2.对象字面量产生的对象连接到Object.prototype,函数对象连接到Function.prototype.
3.每个函数在创建时附有两个隐藏属性:函数的上下文和实现函数行为的代码。
4.每个函数对象创建时也附带有一个prorotype属性,它的值是一个拥有construction属性并且值为该函数的对象。
5.注意函数是对象,拥有对象的一些性质如方法等。
6.函数的与众不同之处在于它们可以被调用。javascript在创建一个函数对象时,会设置一个“调用”属性。
1.通过函数字面量来创建函数对象:
var add = function (a,b) {
return a + b;
};//创建一个名为add得到变量并把两个数字相加的函数赋值给它。
2.通过函数字面量创建的函数对象包含一个连到外部上下文的连接,这称为闭包——javascript强大表现力的根基!
1.调用一个函数将暂停当前函数的执行,传递控制权和参数给新函数。
2.每个函数接受两个附加的参数:this 和 argument 。
3.this 的四种调用模式:方法调用模式、函数调用模式、构造器调用模式和 apply 调用模式。
4.当实参个数与形参个数不匹配时并不导致运行错误,而是忽略超出的实参或将缺失的实参替换为undefined。
3.1)方法调用模式(函数是对象的一个属性时,即称为方法)
1.当方法被调用时,this被绑定到该对象。
2.方法可以使用this去访问对象,故它能从对象中取值或修改该对象。
3.this到对象的绑定发生在调用的时候,使得函数可以对this高度复用。通过this可取得它们所属对象的上下文的方法称为【公共方法】。
3.2)函数调用模式(函数并非一个对象的属性时,当做一个函数来调用)
var sum = add (3,4);
1.当函数以此模式调用时,this被绑定到全局对象。(这是语言设计上的一个错误)
这个错误的后果是方法不能利用内部函数来帮助它工作。
解决方案:该方法定义一个变量并赋值为this,则内部函数可以通过那个变量访问到this。
3.3)构造器调用模式
1.在一个函数前面带上new来调用,将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会绑定到那个新对象上。
2.new前缀也会改变return语句的行为
3.4)Apply调用模式
1.javascript是一门函数式的面向对象编程语言,故函数可以拥有方法。
2.apply方法让我们构建一个参数组并用其去调用函数,允许选择this的值。
3.apply方法接收两个参数,第一个是将被绑定给this的值,第二个是一个参数数组:
1.当函数被调用时,会得到一个附带参数,即argument数组。通过它函数可以访问所有被它调用时传递给它的参数列表,包括那么没有被分配给函数声明时定义的形式参数的多余参数。这使得可以编写一个无须指定参数个数的函数。
2.arguments并不是一个真正的数组,只是一个类似数组(array-like)的对象,它拥有一个length的属性,但缺少所有的数组方法。
1.return语句可使函数提前返回,return被执行时函数立即返回而不执行余下的语句。
2.一个函数总会返回一个值,若没有指定返回的值,则返回undefined。
3.若函数以在前面加上new前缀的方式来调用,且返回值不是一个对象,则返回this(该新对象)。
throw语句中断函数的执行,抛出一个exception对象,该对象包含可识别异常类型的name属性和一个描述性的message属性。
该exception对象将被传递到一个try语句的catch从句:
try代码块中抛出异常,控制权就会跳转到catch从句。
未完待续。。。
营会终于告一段落了,翻看了自七月以来的所有工作备忘、邮件。此时回顾,文教你又锻炼了我。回想电话联络学生的场景、营会四天三夜的每个细节,以及我坚持在写的营会日记,突然感觉自己矫情了。** **
念雯
世界很大,我想要的很少。文教,谢谢!
清燕
文教的成员,I love you !
宝新
文教好!也祝越办越好!
嘉奇
因文教而聚,因友谊而欢,因信仰而别。
海青
希望文教越来越好!
第一次参加文教,开心!愿文教的爱能绵延不绝。这次很Happpy!真的!
智韬
我还会再回来的!
念祖
希望文教带领更多的人往前冲冲冲!
你们辛苦啦,谢谢你们!
第一次参加集体活动就是文教了。忘不了,很开心!
我爱文教!
深深祝愿,一切安好!
静周
拍了很多照片留念,我成人路上的珍贵纪念。经历了一些事情,才会慢慢成长。谢谢文教,辛苦了喵,师兄师姐们!
婷婷
我的很多第一次尝试在文教,所以在文教我成长了自己。感谢文教给了我机会,也为我自己能抓住机会而鼓掌。与文教的缘分,待续……
清燕
那是一种最真诚的交流,一种心与心之间的交流,只可意会不可言传。睡觉时有种叫 “幸福” 的暖流在我心中流动。
慧敏
我却收获了欢笑,感受到了文教大家庭的温暖。非常感谢这次营会,真的!
大勇
那一刻,我感觉彻底放开了自我,不再有腼腆和不自信的束缚,我的前面不再是巨石,我感觉到了友情,感觉到了自己突破的见证,感觉到了表现自己的欲望……
这次文教夏令营,在这种轻松愉快的氛围,在大家的热情鼓励和帮助下,我终于慢慢走出自己的阴影,释放自我。
育广
因为文教而聚在了一起,大家毫无嫌隙地、毫无顾忌地玩在一起,那一个个场景,实在令人难忘。
碧莲
I know everyone !
I see everyone !
I hear everyone !
I feel everyone !
I love everyone !
蒋清
总之总之,参加文教我不会后悔,收获到的如江水般我无法说完。我很喜欢文教,能够加入我觉得意义不在单纯的奖学、助学金。文教传承的感恩、友谊我是真的明白、体会。
钊漩
在这次营会中,我结识了很多朋友。我想如果没有参加这个营会,我与他们可能永远没有交集。能够认识他们,我感到非常高兴。
刘艳
对小赖学长说过,面对未知,人总会有一种莫名的恐惧感。我很害怕那些无法由自己掌控的未来,但文教却告诉我:未知并不可怕,可怕的是那颗将自己尘封的心。我会慢慢学会成长,学会面对,为生活加油喝彩。
淼锋
美好的时光总是容易让人怀念,不过还好我拍下了很多照片,记住了每一个开心的笑脸。
很爱过去的充满欢笑的这几天。
凤媚
文教给我的总体印象是很好的,因为她是由很多有心人组织的大家庭,而且她不仅可以在物质上帮助需要的人,更多的是从精神上鼓励他们,使得学生们能首先从心理上战胜自己,超越自己。而且文教让我们明白了 “心连心” 的重要性,做事不能太功利,有时也要做一些无回报的活动,因为都需要我一份爱心。
海青
希望师兄师姐们都要好好的,永远幸福,forever love!!
维业
我相信,相信文教会壮大,会越来越好。每一次举办都会让文教越来越强,我也相信文教的精神、爱会永远传承。没有过不去的坎,有了爱,世界会更加美好。
佳慧
文教真心能做到这样,非常不容易,她让一群不甚熟悉的人High得手舞足蹈,还有谁有这个魔力?
文教给予我们的有物质的,更重要的,在于精神。无形之中,她已经播下了许许多多的种子。
思征
营会越办越好!
清菊
其实还有很多想说的话,但我更想让它们留在我的内心,永远,永远。
念祖
希望时光能停留,可惜,天下没有不散的宴席。
翠芬
从师兄师姐身上学到了很多正能量的东西,这使我个人也坚定了一些梦想。当然最大的收获就是认识了好多朋友 ······
总之呢,真的非常喜欢这个活动。
宝珠
我喜欢这个大家庭,我想成为其中一员。
海珠
只有融入他们,才会真正地感受到温暖。
杨州
留下太多难以言表的记忆。
竟然有六天没写日记了。今天比较烦躁,今晚也不想看书,那就做个流水账放在来思碑吧。
1.暑假当家
2号考完试3号下午奔回家,4号去了医院,一直呆到8号奶奶出院,期间在医院病床边寸步不离,再一次感受到了健康的珍贵。
这半个月以来,包揽家务,负责三餐(厨艺见长了哈哈)。白天基本是忙碌的,晚上闲下来看点书玩点电脑打个盹也就过去了。
第一次深深感受到爷爷奶奶当家带大我们的艰辛。
害怕的是【树欲静而风不止,子欲养而亲不待。】但愿二老安好,等到我立业的那天,用我挣的钱享福。
2.CCPS&&UC
a)前天收到燕妮姐的邮件,叫我重新考虑宣传组组长一职,我竟然当即回复:接受挑战,尽力做好。
之前之所以推脱,是因为刚加入新创办的UC俱乐部担任宣传部副部长,恐不能两头兼顾,担当不起。
但其实就像当初犹豫再三才申请加入俱乐部一样,【与其后悔,不如遗憾。】
也正如结果—成为UC的成员参与俱乐部创办初期的建设,【机会是自己把握的。】
身兼二职,也就是说暑假回去,将会有很多事得承担。但希望自己的尽心投入,能收获汇报。
【不逼自己一把,就不知道自己有多优秀。】对吧?
我不能很自信我能做好,但我一定不能退缩不去尝试。
所以,干吧!
b)文教夏令营在即,但联络校方确定营会时间的事迟迟未定,让人着急。
想起去年八月才加入文教,而今年却已经成为活动的负责人了。没有太多资深义工的帮助,校方联络、学生挑选面试、营会开展的工作由我们全
权负责 的确是一个巨大的挑战,但也只能硬着头皮去完成了。
谁知道我的成长少了这步,会有多么残缺呢?希望明后两天搞定校方的事,就全力开展工作。
绝不能退缩,绝不能把活动搞砸,绝不能让文教失望!
3.前端||网络
打开Evernote的《2012暑假计划》,一一列举了期末写好计划在暑假完成的事项,明显感觉力不从心了。
大一下没有专心学课内的东西,一天到晚净面对着电脑,查阅了很多资料、刷了很多的知乎、浏览了很多的招聘网站,试着去规划自己的职业方
向。花了时间尝试了NA、前端,终于发现了自己喜欢的东西。但在这二者之间选择,却又有很多的东西需要去权衡。
【喜欢一件事,心里总会惦记着。】期末面临挂科的风险,却还想把复习的时间拿来学习前端。现在回想起来,也许这就是与职业理想相关的内心渴望吧。
在忙家务的间隙里,坚持多看书吧—争取暑假学完前端基础,多多实践。争取开学前完成自己的个人网站并坚持长期维护。
HTML5,我来了!
$(document).ready(function(){
//…
});
可简写为:
$(function(){
//…
});
1.链式操作风格
1)对于同一个对象不超过三个操作的,直接写成一行。
如$(“li”).show().unbind(“click”);
2)对于同一个对象的较多操作,建议每行写一个操作。
行数过多则可以功能块来换行
3)对于多个对象的少量操作,可以每个对象写一行,若涉及子元素则适当缩进。
4)对于多对象的较多操作,则结合第2、3条。
2.给代码添加注释,否则很难看懂代码
1.DW
支持提示JQ代码,在http://xtnd.us/dreamweaver/jquery下载插件Jquery...API.MXP
2.Aptana
是Ajax开发IDE
3.JQueryWTP和Spket插件
装在Eclipse上的插件
4.Visual Studio 2008
1)CSS选择器复习
标签选择器
E{
CSS规则
}
ID选择器
CSS规则
}
类选择器
E.className{
CSS规则
}
群组选择器
E1,E2,E3{
CSS规则
}
后代选择器
E F{
CSS规则
}
通配符
*{
CSS规则
}
其他选择器:伪类选择器
E:Pseudo-Elements{
CSS规则
}
子选择器
E>F{
CSS规则
}
临近选择器
E+F{
CSS规则
}
属性选择器
E[attr]{
CSS规则
}
注意,目前并不是所有的浏览器都支持【其他选择器】