2012-10-30-CSS3写动态进度条

1.进度条效果

在一个div内包含空的span元素,通过CSS3来控制这个属性的背景以及宽度,就写出了进度条的效果,页面加载时进度条滚动使用的新属性animation并自定义了关键帧,demo

 

2.chrome云语音输入

只能在webkit内核的浏览器中使用,貌似是使用了谷歌的云语音功能,但是语音识别效果并不理想额,demo

2012-10-24-改变光标的样式

今天查阅资料学习怎样改变光标的样式,制作一些炫丽的光标效果。
第一种方法:改变光标样式的方法无非就是利用第三方控件或者利用CSS样式。

1.查阅相关属性:
















































































默认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(‘光标地址’)

2. 测试表中所有的属性
.png).png).png).png)


第二种方法:利用第三方控件的方法

将以下代码加到网页文件的<head></head>之间:

<script language=javascript>var Loaded=false;var Flag=false;</script>

<script src=’http://files.cometsystems.com/javascript/lc2000.jslanguage=javascript></script>

<script language=javascript>if(Loaded&&Flag)TheCometCursor(‘cd_electric’,0,626);</script>
修改后,浏览此网页的时候浏览器会弹出一个“安全设置警告”,点击“是”,系统自动安装控件,鼠标就可以按照你的需要显示了。
选择需要的鼠标样式:登陆网站http://www.cometzone.com14个大类4000多种鼠标,制作精美,点击相应的鼠标图片就可预览到不同的效果。)
选中鼠标后,点击网页左边导航的“GET CURSOR CODE”链接,转到下一页,再点击“Select Code”按钮,按钮下这个多行文本框里面的内容就是上面提供的代码,只是代码中TheCometCursor(‘cd_electric’,0,626)部分不同,显示的鼠标状态也不同.





JQuery常用方法

$(‘div’).last();//选择最后一个匹配元素

$(‘div’).eq(1);//选择第二个匹配元素

$(‘div’).eq(-1);//选择倒数第一个匹配元素

$(‘div’).filter(‘.selected’);//选择含有.selected类的匹配元素

$(‘div’).not(‘.selected’);//选择不含有.selected类的匹配元素


$(‘div’).children();//选择div的第一代(孩子)

$(‘div’).find(‘span’);//选择div的span后代


$(‘div’).parent();//选择div的上一代(父亲)

$(‘div’).parents();//选择div的前代(祖宗)


$(‘h2’).closest(‘h1’);//选择离h2最近的h1


$(‘div’).siblings();//选择div的同级兄弟元素


$(‘div’).html();//得到div的值

$(‘div’).html(‘xiao’);//修改div的值


addClass();

removeClass();

toggleClass();

hasClass();


$.isArray(object);//检查object是否为数组,返回布尔值



jQuery处理CSS

使用.css()方法

使用.addClass()和.removeClass()方法

使用.toggleClass()方法


jQuery处理特效和动画

使用.animate() 方法

$(‘#run’).click(function(){

 $(‘#demo’).animate({‘font-size’:‘18’,‘width’:‘+=300’//注意这行});}); $(‘#reset’).click(function(){ $(‘#demo’).animate({‘font-size’:‘14px’,‘width’:‘-=300’//注意这行});});

使用.stop() 方法


$(‘#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
});});

使用setinterval()和clearinterval()方法


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);});



使用.delay()方法

$(‘#run’).click(function(){
$(‘#demo’).html(‘2秒后消失’);
$(‘#demo’).show(200).delay(2000).hide(200);//hide()和show()方法要带参数,否则不能正常运行的[原因]
});

jQuery DOM操作

使用.html(),.Text()和.empty()方法

//.html()设置或者取得特定标签中的内容

.text()设置或者取得文本而非标签的内容,返回一个字符串。


$(‘#run’).click(function(){
var ct = $(‘#container’);
ct.append(ct.prev().html()).append(‘<br/>’).append(ct.prev().text());});

$(‘#reset’).click(function(){
$(‘#container’).empty(‘’);});



使用.append(),prepend(),after()和.before()方法


$(‘#run’).click(function(){
var ct = $(‘#container’);
ct.append(‘append添加的内容’).prepend(‘prepend添加的内容’).before(‘before添加的内容’).after(‘after添加的内容</br>’);});

$(‘#reset’).click(function(){
$(‘#container’).empty(‘&nbsp;www.gbin1.com&nbsp;’);});

使用.clone()方法

$(‘#run’).click(function(){

var ct = $(‘#container’);



    ct.append(ct.prev().html()).append(‘<br/>’).append(ct.prev().text());});

$(‘#reset’).click(function(){
$(‘#container’).empty(‘’);});


使用jQuery的AJAX方法[使用指南]

使用get方法可以快速使用HTTP的get方法来取得页面内容

使用.load()方法

使用.post()方法



## jQuery处理事件


使用bind和unbind方法

//.click() 其实和bind(‘click’)方法是一样的。 当然,使用unbind方法我们可以将事件触发删除。

$(‘.item’).bind(‘click’, function(){//bind

    $(this).html(“clicked”);});

$(‘.item’).bind(‘dblclick’, function(){
$(this).html(“dblclicked”);});

$(‘.item’).clone().appendTo(‘#container’);//添加新元素

使用live(),on(),off()方法

$(‘.item’).live(‘click’, function(){//live

    $(this).html(“clicked”);});

$(‘.item’).live(‘dblclick’, function(){
$(this).html(“dblclicked”);});

$(‘.item’).clone().appendTo(‘#container’);

很多老的方法像.live(),.bind()和.delegate()都可以使用最新的on()方法来实现,所有其它方法最后都是调用on方法,所以这里我们也可以将以上代码如下书写:

$(‘#container’).on(‘click’,‘.item’, function(){//on

    $(this).html(“clicked”);});

$(‘#container’).on(‘dblclick’,‘.item’, function(){
$(this).html(“dblclicked”);});

$(‘.item’).clone().appendTo(‘#container’);

使用delegate方法

//老版本的jQuery中,我们应该尽量使用delegate方法而不是live方法,你会发现delegate方法的性能要优于live方法,因为live方法将会从document层次来搜索元素,这会带来性能损失。

$(‘#container’).delegate(‘.item’,‘click’, function(){

    $(this).html(“clicked”);});

$(‘#container’).delegate(‘.item’, ‘dblclick’, function(){
$(this).html(“dblclicked”);});

使用one()方法

//需要元素只执行一次事件

$(‘#container’).one(‘mouseleave’,‘.item’, function(){

    $(this).html(“mouseleave once”);});

使用preventDefault()方法

阻止缺省的事件触发,例如,你点击 <a href=”http://www.gbin1.com">gbin1.com</a&gt; 将会转向对应的页面,如果你使用preventDefault()方法,将阻止页面加载:

$(‘#prevent’).click(function(e){

  e.preventDefault();
$(this).html(‘阻止访问gbin1.com’);
});

使用.stopPropagation()方法

//和preventDefault()方法类似,这个方法也可以阻止缺省行为,但区别是阻止上层元素的事件。注意不能和live方法联用,因为如果父元素是document会处理一次事件。

$(‘#prevent’).click(function(e){

  e.stopPropagation();
$(this).html(‘阻止父元素事件’);
});

$(‘#normal’).click(function(e){
$(this).html(‘不阻止任何父元素事件’);
});

$(‘.wp’).click(function(e){
$(this).append(‘触发父元素事件’);
});




使用.stopImmediatePropagation()方法

//使用这个方法将立刻阻止所有相关绑定事件。

$(‘#prevent’).click(function(e){

  e.stopImmediatePropagation();
$(this).html(‘阻止父元素事件’);
});

$(‘#normal’).click(function(e){
e.stopPropagation();
$(this).html(‘不阻止任何父元素事件’);
});

$(‘button’).click(function(e){
$(this).append(‘-button触发事件’);
});




## jQuery DOM操作,循环和过滤


使用$.each()和.each() 方法

//$.each()方法是jQuery的一般性方法用来处理javascript对象或者数组。而.each()方法用来处理jQuery的自有对象。

//使用$.each()方法:

var gb_array = [‘jquery’, ‘javascript’, ‘java’, ‘jsp’, ‘java’, ‘c#’, ‘c’, ‘cpp’, ‘node.js’, ‘struts’, ‘spring’];


$.each(gb_array,function(i, v){ $(‘#langlist’).append(‘<li id=”‘+ i +‘“>’+ v +‘</li>’);})


//使用.each()方法:

$(‘#langlist’).each(function(i) {

$(this).css({color:‘red’});})

使用$.data(),.data(),$.hasData()和 $.removeData()方法

var $p = $(“p”),p = $p[0];

$.data(p,“site”,“gbin1.com”); $p.append($.hasData(p)+“ “); $.removeData(p); $p.append($.hasData(p)+“ “);

使用slice()方法

//选择一系列元素中的特定区域,注意你可以输入负值,这样会从后面计算:

$(‘div’).slice(-4,-1).css(‘background-color’, ‘red’);

使用.filter()方法

$(‘div’).filter(‘:even’).css(‘background-color’, ‘red’);

使用.prev()和.next()方法

在同一类的元素中选取前一个或者后一个元素:

$(‘div:first’).addClass(‘selected’);var $cur = $(‘div.selected’);

$(‘#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’);
}});


使用.find(),.children(),.parent(),.parents(),closest()方法

//查询DOM中的元素


$(‘#level1’).find(‘#level3’).css({‘border’:‘1px solid #ccc’}).append(‘- 使用find找到元素’);
$(‘#level1’).children(‘div’).css({‘border’:‘1px solid red’}).append(‘- 使用children找到子元素’);

《JavaScript精粹》笔记

  1. 1. 2.1空白
  2. 2. 2.2标示符
  3. 3. 2.3数字
  4. 4. 2.4字符串
  5. 5. 2.5语句
  6. 6. 2.6表达式
  7. 7. 2.7字面量
  8. 8. 2.8函数
  9. 9. 3对象
  10. 10. 3.1对象字面量
  11. 11. 3.2检索
  12. 12. 3.3更新
  13. 13. 3.4引用
  14. 14. 3.5原型
  15. 15. 3.6反射
  16. 16. 3.7枚举
  17. 17. 3.8删除
  18. 18. 3.9减少全局变量污染
  19. 19. 4
  20. 20. 4.1函数对象
  21. 21. 4.2函数字面量
  22. 22. 4.3调用
  23. 23. 4.4参数
  24. 24. 4.5返回
  25. 25. 4.6异常

2.1空白

用空格来分隔字符序列,使代码美观

var that = this;

javascript的两种注释,注释一定要精确地描述代码。

javascript中的/注释/对代码来说并不安全,故用//来代替。

 

2.2标示符

javascript不允许用保留字来命名变量、参数和属性。

即标示符用于语句、变量、参数、属性名和标记。

 

2.3数字

1.javascript只有单一的数字类型(64位的浮点数),避免了短整数溢出的问题和音数字类型导致的错误。

NaN不等于任何值,可用函数isNaN(number)来检测。

2.数字拥有方法。Math包含一套作用于数字的方法。

 

2.4字符串

1.javascript创建的字符都是16位的(Unicode字符集)。

2.javascript没有字符类型,要显示一个字符,只需要创建一个仅包含字符的字符串。

3.转义字符允许把正常情况下不被允许的字符插入到字符串中,如”\u0041”代表十六进制的数字

4.字符串是不可变的,一旦被创建就无法改变,但能通过 + 运算符去连接其他字符串而得到新的字符串

‘c’ + ‘a’ + ‘t’ === ‘cat’是true(包含完全相同的字符且字符顺序相同)

5.字符串存在一些方法,如:

‘ cat ‘.toUpperCase() === ‘CAT’

 

2.5语句

web浏览器缺少链接器,故javascript把语句抛入一个公共的全局名字空间中。

1.var语句呗用在函数内部时,定义了这个函数的私有变量。

2.switch、while、for和do语句允许有一个可选的前置标签(label),配合break使用

3.javascript的代码块不会创建新的作用域,因此变量应该被定义在函数的顶端而不是代码块中

4.以下值为假值(falsy):

false/null/undefined/空字符串 ‘ ‘ /数字 0 /数字 NaN

其余所有值当做真值,包括true/“false”以及所有的对象

2.6表达式

 

2.7字面量

 

2.8函数

 

 

3对象

数字/字符串/布尔值拥有方法,但都是不可变的.

javascript中的对象是可变的键控集合(keyed collections)

javascript中的对象是无类别的(class-free),对新属性的名字和值没有约束.

对象适合收集和管理数据,可包含其他对象,容易表示成树形或图形结构.

javascript包括一个原型链特性,允许对象继承.正确使用它能减少对象初始化的时间和内存消耗.

3.1对象字面量

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”

}

};
 

3.2检索

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
 

3.3更新

对象中的值通过赋值语句来更新。

 

3.4引用

对象通过引用来传递,但永远不会被拷贝。

 

 

3.5原型

1.所有通过对象字面量创建的对象都连接到Object.prototype这个对象。

2.javascript提供的实现机制复杂而杂乱,但其实可以被明显地简化 。

3.给Object增加一个beget方法,创建一个使用原对象作为其原型的新对象。

4.原型连接在更新时是不起作用的,当对某个对象做出改变时,不会触及该对象的原型。

5.原型连接只在检索值的时候才被用到。

6.若想要的属性完全不存在于原型链中,结果就是undefined值,这个过程称为【委托】

7.原型关系是动态的,若将新属性添加到原型中,该属性会立刻对所有基于该原型创建的对象可见。

 

3.6反射

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
 

3.7枚举

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]]);

}
 

3.8删除

delete运算符用来删除对象的属性,移除对象中确定包含的属性,不会触及原型链中的任何对象。

删除对象的属性可能会让来自原型链中的属性浮现出来:

another_stooge.nickname //‘nickname1’

//删除another_stooge中的nickname属性,从而暴露出原型的nickname属性

delete another_stooge.nickname;

another_stooge.nickname //‘nickname0’
 

3.9减少全局变量污染

全局变量削弱的程序的灵活性,故应该避免。

1.最小化使用全局变量的一个方法是在应用中值创建唯一一个全局变量:

var MYAPP = {};

 

该变量此时变成应用的容器,只要把多个全局变量都整理在一个名称空间下,将能降低一其他应用程序、组建或类库之间产生糟糕的相互影响。

 

2.用闭包来进行信息隐藏的方式,是另一个减少全局污染的方法。

 

 

 

4

4.1函数对象

1.对象是”名/值”对的集合并拥有一个连到原型对象的隐藏连接。

2.对象字面量产生的对象连接到Object.prototype,函数对象连接到Function.prototype.

3.每个函数在创建时附有两个隐藏属性:函数的上下文和实现函数行为的代码。

4.每个函数对象创建时也附带有一个prorotype属性,它的值是一个拥有construction属性并且值为该函数的对象。

5.注意函数是对象,拥有对象的一些性质如方法等。

6.函数的与众不同之处在于它们可以被调用。javascript在创建一个函数对象时,会设置一个“调用”属性。

 

4.2函数字面量

1.通过函数字面量来创建函数对象:

var add = function (a,b) {

return a + b;

};//创建一个名为add得到变量并把两个数字相加的函数赋值给它。
 

2.通过函数字面量创建的函数对象包含一个连到外部上下文的连接,这称为闭包——javascript强大表现力的根基!

 

4.3调用

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的值,第二个是一个参数数组:

 

4.4参数

1.当函数被调用时,会得到一个附带参数,即argument数组。通过它函数可以访问所有被它调用时传递给它的参数列表,包括那么没有被分配给函数声明时定义的形式参数的多余参数。这使得可以编写一个无须指定参数个数的函数。

 

2.arguments并不是一个真正的数组,只是一个类似数组(array-like)的对象,它拥有一个length的属性,但缺少所有的数组方法。

 

4.5返回

1.return语句可使函数提前返回,return被执行时函数立即返回而不执行余下的语句。

2.一个函数总会返回一个值,若没有指定返回的值,则返回undefined。

3.若函数以在前面加上new前缀的方式来调用,且返回值不是一个对象,则返回this(该新对象)。

 

4.6异常

 

throw语句中断函数的执行,抛出一个exception对象,该对象包含可识别异常类型的name属性和一个描述性的message属性。

该exception对象将被传递到一个try语句的catch从句:

 

try代码块中抛出异常,控制权就会跳转到catch从句。

未完待续。。。

2012文教夏令营

营会终于告一段落了,翻看了自七月以来的所有工作备忘、邮件。此时回顾,文教你又锻炼了我。回想电话联络学生的场景、营会四天三夜的每个细节,以及我坚持在写的营会日记,突然感觉自己矫情了。** **

早上整理了自己的日记、你们的反馈、你们的留言条、我们的照片,然后,就不想说然后了。

有太多的话要说,但打死我也不承认我是多情的 - - !

不说太多,留给自己慢慢体会。

以下,是你们留给我的宝贵财富,感谢文教,更感谢你们!

别忘了来华工找四两哥喝汤啊!!!!!

Part1 文教版


念雯

世界很大,我想要的很少。文教,谢谢!

 

清燕

文教的成员,I love you !

 

宝新

文教好!也祝越办越好!

 

 

嘉奇

因文教而聚,因友谊而欢,因信仰而别。

 

海青

希望文教越来越好!

 

 

第一次参加文教,开心!愿文教的爱能绵延不绝。这次很Happpy!真的!

 

 

智韬

我还会再回来的!

 

念祖

希望文教带领更多的人往前冲冲冲!

 

你们辛苦啦,谢谢你们!

 

 

第一次参加集体活动就是文教了。忘不了,很开心!

 

我爱文教!

 

深深祝愿,一切安好!

 

 

 

静周

拍了很多照片留念,我成人路上的珍贵纪念。经历了一些事情,才会慢慢成长。谢谢文教,辛苦了喵,师兄师姐们!

 

婷婷

我的很多第一次尝试在文教,所以在文教我成长了自己。感谢文教给了我机会,也为我自己能抓住机会而鼓掌。与文教的缘分,待续……

 

 

清燕

那是一种最真诚的交流,一种心与心之间的交流,只可意会不可言传。睡觉时有种叫 “幸福” 的暖流在我心中流动。

 

慧敏

我却收获了欢笑,感受到了文教大家庭的温暖。非常感谢这次营会,真的!

 

大勇

那一刻,我感觉彻底放开了自我,不再有腼腆和不自信的束缚,我的前面不再是巨石,我感觉到了友情,感觉到了自己突破的见证,感觉到了表现自己的欲望……

这次文教夏令营,在这种轻松愉快的氛围,在大家的热情鼓励和帮助下,我终于慢慢走出自己的阴影,释放自我。

 

育广

因为文教而聚在了一起,大家毫无嫌隙地、毫无顾忌地玩在一起,那一个个场景,实在令人难忘。

 

碧莲

I know everyone !

I see everyone !

I hear everyone !

I feel everyone !

I love everyone !

 

 

蒋清

总之总之,参加文教我不会后悔,收获到的如江水般我无法说完。我很喜欢文教,能够加入我觉得意义不在单纯的奖学、助学金。文教传承的感恩、友谊我是真的明白、体会。

 

 

钊漩

在这次营会中,我结识了很多朋友。我想如果没有参加这个营会,我与他们可能永远没有交集。能够认识他们,我感到非常高兴。

 

刘艳

对小赖学长说过,面对未知,人总会有一种莫名的恐惧感。我很害怕那些无法由自己掌控的未来,但文教却告诉我:未知并不可怕,可怕的是那颗将自己尘封的心。我会慢慢学会成长,学会面对,为生活加油喝彩。

 

 

淼锋

美好的时光总是容易让人怀念,不过还好我拍下了很多照片,记住了每一个开心的笑脸。

很爱过去的充满欢笑的这几天。

 

 

凤媚

文教给我的总体印象是很好的,因为她是由很多有心人组织的大家庭,而且她不仅可以在物质上帮助需要的人,更多的是从精神上鼓励他们,使得学生们能首先从心理上战胜自己,超越自己。而且文教让我们明白了 “心连心” 的重要性,做事不能太功利,有时也要做一些无回报的活动,因为都需要我一份爱心。

 

 

海青

希望师兄师姐们都要好好的,永远幸福,forever love!!

 

 

维业

我相信,相信文教会壮大,会越来越好。每一次举办都会让文教越来越强,我也相信文教的精神、爱会永远传承。没有过不去的坎,有了爱,世界会更加美好。

 

 

佳慧

文教真心能做到这样,非常不容易,她让一群不甚熟悉的人High得手舞足蹈,还有谁有这个魔力?

文教给予我们的有物质的,更重要的,在于精神。无形之中,她已经播下了许许多多的种子。

 

 

思征

营会越办越好!

 

清菊

其实还有很多想说的话,但我更想让它们留在我的内心,永远,永远。

念祖

希望时光能停留,可惜,天下没有不散的宴席。

 

翠芬

从师兄师姐身上学到了很多正能量的东西,这使我个人也坚定了一些梦想。当然最大的收获就是认识了好多朋友 ······

总之呢,真的非常喜欢这个活动。

 

宝珠

我喜欢这个大家庭,我想成为其中一员。

 

海珠

只有融入他们,才会真正地感受到温暖。

 

 

杨州

留下太多难以言表的记忆。

欢迎在评论中补充哦O(∩_∩)O~

写在2012暑假

竟然有六天没写日记了。今天比较烦躁,今晚也不想看书,那就做个流水账放在来思碑吧。

1.暑假当家

2号考完试3号下午奔回家,4号去了医院,一直呆到8号奶奶出院,期间在医院病床边寸步不离,再一次感受到了健康的珍贵。

这半个月以来,包揽家务,负责三餐(厨艺见长了哈哈)。白天基本是忙碌的,晚上闲下来看点书玩点电脑打个盹也就过去了。

第一次深深感受到爷爷奶奶当家带大我们的艰辛。

害怕的是【树欲静而风不止,子欲养而亲不待。】但愿二老安好,等到我立业的那天,用我挣的钱享福。

2.CCPS&&UC

a)前天收到燕妮姐的邮件,叫我重新考虑宣传组组长一职,我竟然当即回复:接受挑战,尽力做好。

之前之所以推脱,是因为刚加入新创办的UC俱乐部担任宣传部副部长,恐不能两头兼顾,担当不起。

但其实就像当初犹豫再三才申请加入俱乐部一样,【与其后悔,不如遗憾。】

也正如结果—成为UC的成员参与俱乐部创办初期的建设,【机会是自己把握的。】

身兼二职,也就是说暑假回去,将会有很多事得承担。但希望自己的尽心投入,能收获汇报。

【不逼自己一把,就不知道自己有多优秀。】对吧?

我不能很自信我能做好,但我一定不能退缩不去尝试。

所以,干吧!

b)文教夏令营在即,但联络校方确定营会时间的事迟迟未定,让人着急。

想起去年八月才加入文教,而今年却已经成为活动的负责人了。没有太多资深义工的帮助,校方联络、学生挑选面试、营会开展的工作由我们全

权负责 的确是一个巨大的挑战,但也只能硬着头皮去完成了。

谁知道我的成长少了这步,会有多么残缺呢?希望明后两天搞定校方的事,就全力开展工作。

绝不能退缩,绝不能把活动搞砸,绝不能让文教失望!

3.前端||网络

打开Evernote的《2012暑假计划》,一一列举了期末写好计划在暑假完成的事项,明显感觉力不从心了。

大一下没有专心学课内的东西,一天到晚净面对着电脑,查阅了很多资料、刷了很多的知乎、浏览了很多的招聘网站,试着去规划自己的职业方

向。花了时间尝试了NA、前端,终于发现了自己喜欢的东西。但在这二者之间选择,却又有很多的东西需要去权衡。

【喜欢一件事,心里总会惦记着。】期末面临挂科的风险,却还想把复习的时间拿来学习前端。现在回想起来,也许这就是与职业理想相关的内心渴望吧。

在忙家务的间隙里,坚持多看书吧—争取暑假学完前端基础,多多实践。争取开学前完成自己的个人网站并坚持长期维护。

HTML5,我来了!

 

 

 

《锋利的JQuery》笔记

  1. 1. 1.3.3统一代码风格,方便日后维护
  2. 2. 1.7
  3. 3. ID{
#1.2 JQ的特点
1.轻量级—压缩后只有30K(用Packer)、18K(用Gzip)2.强大的选择器—兼容CSS1到CSS3的选择器并可自定义选择器3.出色的DOM操作的封装

4.可靠的事件处理机制

5.完善的Ajax—所有Ajax操作封装到了函数$.ajax()里

6.不污染顶级变量—JQ只建立一个Jquery的对象,所有函数都在该对象下

7.出色的浏览器兼容性

8.链式操作方式—一组操作,可以直接连写而无重复获取对象

9.隐式迭代

10.行为层与结构层的分离—可用选择器选中元素直接添加事件;后期维护方便

11.丰富的插件支持

12.完善的文档

13.开源

#1.32 在JQ库中,$就是JQ一个简写形式,如$(“#foo”)就代表JQuery(“#foo”)

$(document).ready(function(){

//…

});

可简写为:

$(function(){

//…

});

 

1.3.3统一代码风格,方便日后维护

1.链式操作风格

1)对于同一个对象不超过三个操作的,直接写成一行。

如$(“li”).show().unbind(“click”);

2)对于同一个对象的较多操作,建议每行写一个操作。

行数过多则可以功能块来换行

3)对于多个对象的少量操作,可以每个对象写一行,若涉及子元素则适当缩进。

4)对于多对象的较多操作,则结合第2、3条。

2.给代码添加注释,否则很难看懂代码


#1.4.1了解区分JQ和DOM对象的区别

1.DOM对象

每一份DOM都可以表示成一棵树。

DOM对象可以使用JS中的方法,通过getElementsByTagName或getElementById来获取元素节点(DOM对象)

2.JQ对象

JQ对象就是通过JQ包装DOM对象后产生的对象。

只有JQ对象才能使用JQ的方法。

在JQ对象中不能使用DOM对象的任何方法,反之亦然。

#1.4.2 JQ对象和DOM对象的相互转换

约定定义变量的风格是:获取的对象是JQ对象,则加前缀$.

获取的对象是DOM对象不加前缀$.

1.JQ对象转换成DOM对象

1)若JQ对象是一个数组对象,则通过[index]的方法得到相应的DOM对象

2)通过get(index)方法得到相应的DOM对象

2.DOM对象转换成JQ对象

用$()将DOM对象包装就可以获得相应的JQ对象

我们平时用到的JQ对象都是通过$()函数制造的。

#1.6 开发工具推荐

1.DW

支持提示JQ代码,在http://xtnd.us/dreamweaver/jquery下载插件Jquery...API.MXP

2.Aptana

是Ajax开发IDE

3.JQueryWTP和Spket插件

装在Eclipse上的插件

4.Visual Studio 2008

1.7

1)CSS选择器复习

标签选择器

E{

CSS规则

}

ID选择器

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规则

}

注意,目前并不是所有的浏览器都支持【其他选择器】


2)学习JQ选择器

JQ中的选择器完全继承了CSS的风格

简洁写法:$()作为一个选择器函数

如$(“#ID”)代替了document.ElementsByTagName()

扩浏览器兼容:不像CSS,JQ选择器不用考虑浏览器是否支持这些选择器

JQ选择器的分类

1)基本选择器/

通过id/class/标签名来查找DOM元素

注意id只能使用一次

2)层次选择器/

3)过滤选择器/

以冒号(:)开头,分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤盒表单对象过滤

4)表单选择器

 

#2.5.1 选择器中含有特殊符号的注意事项

1).选择器中含有”.” “#” “(“ “]”等字符时,需要用转义字符”\“(注意是两个反斜杠)

2).JQ1.3.1以后的版本都不能在属性名前加“@”

3)选择器中添加空格可能产生严重错误

#2.7其他选择器

1.JQ选择器是可以进一步拓展的

1)MoreSelectors for jQuery 这插件用于增加更多的选择器

2)Basic XPath插件(使用人数不多且降低了选择器匹配的效率)

2.使用其他CSS选择器的方法

1)document.getElementsBySelector()—-通过选择器来获取文档元素

2)cssQuery()——-通过CSS选择器查找元素
3.querySelectorAll()也是用于实现通过CSS选择器来获取元素的(W3C在Selectors API中的方法)



#3.1 jquery中的DOM操作

1.DOM core

2.HTML_DOM

获取某些对象、属性可用这两个来实现,但显然HTML_DOM比较简短,但只能用来处理WEB文档

3.CSS_DOM用来获取和设置style对象的各种属性

jquery对DOM的各种操作都围绕DOM树展开

1.查找元素节点

 

2.查找属性节点

用attr()方法来获取各种属性的值

创建节点

1.创建节点,建议添加顺序为:元素-文本-属性

var $li_1= $(“<li title=”属性1”>文本1</li>”);

var $li_2= $(“<li title=”属性2”>文本2</li>”);

将新元素插入到节点ul中

$(“ul”).append($li_1);

$(“ul”).append($li_2);(或采用链式写法:$(“ul”).append($li_1).append($li_2);)

注意:1)动态创建的新元素节点需要使用方法才能插入文档中而不会自动添加

2)创建元素时,注意书写的规范性(注意闭合标签和使用标准的XHTML格式)

2.插入节点

几种插入节点的方法——-$(“节点”).方法(“元素”)

1)append()

向每个匹配的元素内部后置内容

2)appendTo()

后置追加到指定的元素中

3)prepend()

向每个匹配的元素内部前置内容

4)prependTo()

后置追加到指定的元素中

5)after()

在每个匹配的元素后插入内容

6)insertAfter()

将所有匹配的元素插入到指定元素的后面

7)before()

在每个匹配的元素之前插入内容

8)insertBefore()

将所有匹配的元素插入到指定的元素的前面

3.删除节点

1)remove()

从DOM中删除所有匹配的元素




该方法返回的是一个指向已被删除的节点的引用,因而可以在以后使用这些元素

2)empty()

清空节点,清空元素的所有后代节点

4.复制节点

复制节点后,新元素并不具有任何行为

注意:若传递true为参数,则表示复制元素的同时复制元素中所绑定的事件

$(this).clone(true).appendTo(“body”);//注意参数true


5.替换节点

replaceWith()

将所有匹配的元素都换成指定的HTML或DOM元素

replaceAll()

与replaceWith()作用相同但颠倒了操作

注意:如果在替换之前已经为元素绑定事件,替换后原先绑定的事件将会与被替换的元素一起消失,需要在新元素上重新绑定事件。

6.包裹节点

wrap()

将某个节点用其他标记包裹起来,不破坏原始文档的语义

wrapAll()

将所有匹配的元素用一个元素来包裹

与wrap()不同,wrap()是将所有的元素进行单独的包裹

wrapInner()

将每一个匹配的元素的子内容(包括文本节点)用其他结构化的标记包裹起来

wrap是外包,wrapInner是内包

 

#3.2.8 属性操作

在JQ中,用attr()方法来获取和设置元素属性,removeAttr()方法来删除元素属性

1.获取属性和设置属性
获取用attr()方法

也可以直接设置

$(“p”).attr(“title”,”my title”);

同时设置多个属性

$(“p”).attr({“title”:”my title”,”name”:”test”});

2.删除属性

用removeAttr()方法删除某个元素的特定属性

$(“p”).removeAttr(“title”);


#3.2.9 样式操作

1.获取样式和设置样式

获取

var p_class$=$(“p”).attr(“class”);

设置

$(“p”).attr(“class”,”high”);

2.追加样式

用addClass()方法

区别:attr()设置样式会覆盖替换,而addClass()则是追加兼并

3.移除样式

用removeClass()方法

$(“p”).removeClass(“high”);//移除<p>元素中值为”high”的class

若要删除多个class,则

$(“p”).removeClass(“high another”);

或者直接使用

$(“p”).removeClass();//默认移除所有class

4.切换样式

toggle()

交替执行代码③、④函数,控制行为上的重复切换

$toggleBtn.toggle(

function(){

//显示元素 代码③

},

function(){

//显示元素 代码④

}

)

toggleClass()

如果类型存在则删除,否则添加。控制样式上的重复切换。

5.判断是否含有某个样式

hasClass()方法,若有则返回true,否则返回false

$(“p”).hasClass(“another”);

等价于:

$(“p”).is(“.another”);


#3.2.10 设置和获取HTML、文本和值

1.html()

读取或者设置某个元素中的HTML内容(与javascript中的innerHTML属性类似)

2.text()

读取或者设置某个元素中的文本内容(与javascript中的innerRext属性类似)

3.val()

读取或者设置元素的值(与javascript中的value属性类似)

元素师文本框、下拉列表、单选框都能返回,若元素为多选,则返回包含所有选择的值的数组

val()方法还能使select、checkbox、radio相应的选项被选中,在表单操作中会经常用到

#3.2.11 遍历节点

1.children()

取得匹配元素的子元素的集合

2.next()

取得匹配元素后面紧邻的同辈元素

3.prev()

取得匹配元素前面紧邻的同辈元素

4.siblings()

取得元素前后所有的同辈元素

5.closest()

取得最近的匹配元素

6.其他方法

find()/filter()/nextAll()/preAll()/parent()/parents()等

#3.2.12 CSS-DOM操作

css()

获取元素的样式属性

设置某个元素的样式

$(“p”).css(“color”); //获取<p>元素的样式颜色

$(“p”).css(“color”,”red”);//设置<p>元素的样式颜色为红色

$(“p”).css({“fontSize”:”30px”,”backgroundColor”:”#888888”});//同时设置字体颜色和背景色

height()

取得匹配元素当前计算的高度值

$(“p”).height(100);//设置高度值为100px

$(“p”).height(“10em”);//设置高度值为10em

css()获得的高度值与样式的设置有关,可能得到“auto”“10px”之类的字符串,而height()方法获得的则是在页面中的实际高度,与样式设置无关且不带单位

width()

取得匹配元素的宽度值(px)

$(“p”).width();//获取宽度值

$(“p”).width(“40px”);设置宽度值

几个常用方法

1.offset()

获取元素在当前视窗的相对位移,返回top和left属性,只对可见元素有效

var offset=$(“p”).offset();//获取offset

var left=offset.left;//获取左偏移

var top=offset.top;//获取上偏移

2.position()

获取元素相对于最近一个position样式属性设置为relative或者absolute的祖父节点的相对位移,也返回top和left属性

var position=$(“p”).position();//获取offset

var left=position.left;//获取左偏移

var top=position.top;//获取上偏移

3.scrollTop()

scrollLeft()

获取元素的滚动条距顶端和左侧的距离

var $p=$(“p”);

var scolltop=$p.scollTop();

var scollleft=$p.scollLeft();

另外,可指定参数让滚动条滚动到指定位置

$(“textarea”).scollTop(300);//元素的垂直滚动条滚动到指定位置

$(“textarea”).scollLeft(300);//元素的横向滚动条滚动到指定位置