好久没来post了,最近实在太忙了,一人做着大量的工作,不过好处就是积累的更多的经验(我这样安慰自己)。下面来看看HTML与CSS中一些不起眼的细节吧。

Img中的alt标签用得较多,多是用来显示图片的替换文字的,比如图片无法正常显示时,若想加一些提示信息或者图片信息,就可以使用这个标签。而title属性也是实现类似的功能的,当用户将鼠标放到图片上的时候,图片上会浮出一个标签显示设置的相应内容。但他们确实是有区别的:

alt属性会被搜索引擎取到,也就是说做SEO的时候很有帮助。而title更多是从用户角度来看的,增强用户体验用的。在IE下两者显示功能几乎相同,但alt会被搜索引擎抓取。

当然上述只是我觉得不起眼的不同点,还有一些其他的不同。比如适用标签不同,alt只能用在img、area和input上,而title能用在很多标签上。还有显示的最大字符长度等。


在第一篇里简单介绍了函数的四种调用方法,这里再来详细说一下this的意义与用法。

this具体是指什么,在java权威指南中如此定义:函数在被调用时会拥有一个值,就是本次调用的上下文(context),这个就是this关键字的值。“如果函数挂载在一个对象上,作为对象的一个属性,就称它为对象的方法。当通过这个对象来调用函数时,该对象就是此次调用的上下文,也就是该函数的this的值。”

和变量不一样,this没有作用域的限制,当该函数没有上下文时,函数中的this通常是undefined或者是全局的window。比如:

var a = 0;
function s() {
    var a = 1;
    console.log(this.a);
}
var b = s;
b();
Read More...

你们的想法不错,但这个项目太大了,完全不适合你们做完创业项目去做,你们很难找到这么多钱来做;

你们的市场有问题,很多人都是QQ、微信的用户,它们已经做的不错了,你凭什么还去做这块市场;

你们现在的团队都不齐,想干这事,太难了,路比你们想的要难多了;

我不知道你们是怎么想的,但我觉得你们都不是圈里面知名人物,凭什么找到这么多资源去实现你们所谓的梦想;

你们的产品我觉得OK,但是你们的运营打算怎么做,品牌怎么推广出去,这些你们还没有想清楚,你这项目很危险。

Read More...

typeof是用来返回数据类型的一元运算符,比如typeof x或typeof(x)就是返回变量x的数据类型,下面是返回值列表:

undefined     "undefined"
null          "object"
true,false    "boolean"
number,NaN    "number"
String        "string"
function      "function"
object        "object"
Read More...

CSS3里有一个新东西,叫做transition,它可以实现许多属性改变时的动画效果。比如width改变,shadow改变等等。他有几种浏览器兼容性写法(以0.6秒动画为例):

 -webkit-transition: 0.6s;
 -moz-transition: 0.6s;
 -ms-transition: 0.6s;
 -o-transition: 0.6s;
 transition: 0.6s;

IE要在10或以上才可以,其它主流浏览器基本都支持。上面的CSS样式写在某个类里面,当某些属性改变时,这些改变就会以0.6s长的动画来显示效果。那么哪些效果才可以触发transition的效果呢?

Read More...

Javascript中的this的确是比较灵活,与传统面向对象编程不同,Javascript的函数有很多调用方法,这就使得this的用法也有很多变化。在学习this用法前,最好先了解一共有哪些函数调用方法,这样学习起来就轻松很多了。

1. 函数调用模式

这是最为普通的调用模式,函数只是作为函数来调用。

var number = 1
function func() {
    console.log(this.number);
}
func(); // 1

这个直接调用函数func,console上一定会显示1,因为此时this指的就是window。换一种方法写:

function func() {
    var number = 0;
    console.log(this.number);
}
func();// undefined
Read More...

Javascript中可以自定义某种功能,并把它加到基本类型中去来方便自己的程序。比如我想给函数加一个功能,是每次给prototype添加方法时用更方便的方法。那么我们就可以自定义这个方法,也就是基本类型功能的扩展。

给Function.prototype添加方法将使得所有的函数都将可以使用这个方法:

Function.prototype.method = function(name, func) {
    if(!this.prototype[name]) {
        this.prototype[name] = func;
    }
    return this;
}
Read More...

做Js压缩或者文件内容压缩时经常会用到字符串处理与字符替换,较为常用的方法是正则表达式的方法。

试想一种情况,你想在一大堆数据中寻找特定的文字,比如,作为一个数据监管员,你想查看数据中有没有敏感字符,于是你想找“China”的数据。那正则表达式就是/bChina/b/g。

/b是表示寻找字符串的,中间的China就是要寻找的字段。最后面的/g表示这是全局查找,出现多少次都算找到,不加这个就只能算查找一次第一次出现的China。这种有特殊意义的字符就是元字符,当然这只是一点点正则表达式的内容,下面是一些常用的语法。

Read More...

Hack就是考虑兼容性针对各大浏览器写代码的过程,在css3出现以后,兼容性问题越来越明显,现在主要设计方案有两种叫法:优雅降级和渐进增强。

优雅降级 (Graceful Degradation) 就是在设计页面时就从最优css效果开始,逐渐向后的兼容老版本浏览器,它侧重先使用高级css样式达到最佳效果,对于不兼容的浏览器,采用“poor,but passable”的策略。

渐进增强(Progressive Enhancement)与优雅降级正好相反,它是优先兼容老版本浏览器,满足最基本功能,在设计时就先以较为基本的css样式为基准,然后向前增加新浏览器版本支持的效果。

了解了这两个概念,再来看Hack。

Css Hack是较为常用的一种,对于像IE6和IE7的老版本浏览器来说,Hack是非常必要的。IE6能优先识别 "*" 与 "_" , IE7优先识别*,因为现在几乎已经不单独区分IE6和IE7了,所以在写Css的时候都是加上 "*"。这个有什么用呢,看下面的一个例子。我们想在高级浏览器上显示带透明的效果,用RGBA方法,但是IE旧的浏览器明显不支持,那么我们用优雅降级的方法,在这个地方我们用白色背景来代替(其实filter可以实现)

.opacity-class {
    background-color: rgba(0,0,0,0.5);
    *background-color: #ffffff;
}
Read More...

闭包是什么意思,我查过Javascript的解释,发现定义看的迷迷糊糊:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

刚开始的时候对这个定义的理解实在不懂,后来慢慢应用上才明白,我的理解就是,闭包的表现形式是一个function嵌套一个function,而外层function的返回就是内层的function,当外界调用外层函数而获得内层函数时,就算是一个闭包。当然这种说法仅限于我自己的理解,而真正的运作原理涉及一些概念,如作用链域,GC回收和函数嵌套等。比如下面这个例子。

function a() {
    var i = 0;
    function b() {
        i++;
    }
    return b;
}
var c = a();
Read More...