Archive for September, 2009

September,28th,2009

也谈 CSS Sprites

CSS Sprites 简介:通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技术,目前它已经在网页开发中发展得较为成熟,阿里巴巴各子公司的网页中到处都可发现css sprites 的影子。但CSS Sprites并不是什么金科玉律,但在很多情况下,它有着一定的优势,最重要的是它可以减轻服务器的负载,提高网页加载速度。随着Web设计向着精致、巧妙的方向发展,设计师们开始考虑使用非Javascript的方 式制作鼠标滑过、悬停菜单的效果,这时CSS Sprite应运而生。

说白了,CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。

当页面加载时,不是加载每个单独图片,而是一次加载整个组合图片。这是一个了不起的改进,它大大减少了HTTP请求的次数,减轻服务器压力,同时缩短了悬停加载图片所需要的时间延迟,使效果更流畅,不会停顿。
CSS Sprites应用:在这方面,淘宝网做的比较好,我就以淘宝网为例吧。
[实例一:淘宝频道页面导航]
效果图:

sprites图:

[实例二:淘宝首页]
效果图:

sprites图:

CSS Sprites优点:CSS Sprites为什么突然跑火,跟能够提升网站性能有关。显而易见,这是它的巨大优点之一。
1.利用CSS Sprites能很好地减少了网页的http请求,从而大大的提高了页面的性能,这是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;
2.个人认为CSS Sprites能减少图片的字节,我曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和。
CSS Sprites缺点:诚然CSS Sprites是如此的强大,但是也存在一些不可忽视的缺点。
1.在图片合并的时候,你要把多张图片有序的合理的合并成一张图片,还要留好只够的空间,防止板块内不会出现不必要的背景,否则可能会出现出现干扰图片的情况;这些还好,做痛苦的是在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂;
2.CSS Sprites在开发的时候比较麻烦,你要通过photoshop或其他工具测量计算每一个背景单元的精确位置,这是针线活,没什么难度,但是很繁琐;不过网上已经有高手开发出“CSS Sprites 样式生成工具”,大家可以尝试一下。
3.CSS Sprites在维护的时候比较麻烦,sprites是一般双刃剑,如果页面背景有少许改动,一般就要改这张合并的图片,无需改的地方最好不要动,这样避免改动更多的css,如果在原来的地方放不下,有只能(最好)往下加图片,这样图片的字节就增加了,因为每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐,而且重新算图片的位置(尤其是这种上千px的图)也是一件颇为不爽的事情。当然,在性能的口号下,这些都是可以克服的。
4.由于图片的位置需要固定为某个绝对数值,这就失去了诸如center之类的灵活性。
CSS Sprites总结:性能压倒一切。CSS Sprites非常值得学习和应用,特别是页面有一堆ico(图标)。总之很多时候大家要权衡一下利弊,在决定是不是应用CSS Sprites。为保持兼容性和维护性,sprites图片中的各个部分保持一定的距离是一种不错的做法。

September,28th,2009

javascript反拦截可调节弹出频率背投广告

背投广告特点:
对于背投广告的原理来说并没有什么难度,无非打开的窗口失去焦点(blur),而原来页面得到焦点(focus)。但对于流行的浏览器来说,如果非用户行为的弹出窗口(即onload时,直接window.open),会被浏览器默认拦截。
背投广告,既然被称为广告,那如何才能让广告主的钱花得实在,花得乐意呢?
我们可以增加判断,如果该弹出窗口被浏览器拦截,则只要用户点击页面(onclick)就触发window.open事件,这样一般不会拦截,浏览器会认为这是用户的默认行为。
同时,如果广告总是不断弹出,我想这是对用户的一种折磨,因此设计可调节的弹出频率,比如利用cookie控制一天只可以弹出一次就比较好。

阿里妈妈背投广告代码:

<script type="text/javascript">
//全局变量
var val_pop_w = 950;//广告页面的宽度
var val_pop_h = 90;//广告页面的高度
var val_pop_id = "mm_13250138_1917484_7967317";//广告id
var val_pop_t = 0;//广告距顶top距离
var val_pop_l = 0;//广告距左边left距离
var val_pop_day = 1;//广告频率天
var val_pop_num = 2;//广告频率次数

//添加监听事件
function addListener(element, e, fn){
 element.addEventListener ? element.addEventListener(e, fn, false) : element.attachEvent("on" + e, fn)
}
//删除监听事件
function removeListener(element, e, fn){
 element.removeEventListener ? element.removeEventListener(e, fn, false) : element.detachEvent("on" + e, fn)
}

function openWindowBack(){
 var adPopup = window.open('', '背投广告', 'width=' + (parseInt(val_pop_w) + 1) + ',height=' + (parseInt(val_pop_h) + 1) + ', left=' + val_pop_l + ',top=' + val_pop_t);
 //设置广告页面内容
 var adhtml = "";
 var adjs = "";
 adjs += '<script type="text/javascript">';
 adjs += 'alimama_pid="' + val_pop_id + '";';
 adjs += 'alimama_titlecolor="0000FF";';
 adjs += 'alimama_descolor ="000000";';
 adjs += 'alimama_bgcolor="FFFFFF";';
 adjs += 'alimama_bordercolor="E6E6E6";';
 adjs += 'alimama_linkcolor="008000";';
 adjs += 'alimama_bottomcolor="FFFFFF";';
 adjs += 'alimama_anglesize="0";';
 adjs += 'alimama_bgpic="0";';
 adjs += 'alimama_icon="0";';
 adjs += 'alimama_sizecode="15";';
 adjs += 'alimama_width=' + val_pop_w + ';';
 adjs += 'alimama_height=' + val_pop_h + ';';
 adjs += 'alimama_type=2;';
 adjs += '<\/script><script src="http://a.alimama.cn/inf.js" type=text/javascript><\/script>';
 adhtml += '<html><body style="margin:0;padding:0px;text-align:left;">' + adjs;
 adhtml += '</body></html>';
 adPopup.document.write(adhtml);
}

var pop_back_ad = function(){
 openWindowBack();
 window.removeListener(document, 'click', arguments.callee);
}

function SetCookie(name, value, day)//三个参数,一个是cookie的名字,一个是值,一个保存天数
{
 var Days = day; //此 cookie 将被保存 1 天
 var exp = new Date(); //new Date("December 31, 9998");
 exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
 document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)//取cookies函数
{
 var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
 if (arr != null)
 return unescape(arr[2]);
 return null;
}
function delCookie(name)//删除cookie
{
 var exp = new Date();
 exp.setTime(exp.getTime() - 1);
 var cval = getCookie(name);
 if (cval != null)
 document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
}

function chkpopad(n, d){
 var i = 1;
 if (getCookie('popnum') == null){
 pop_back_ad();
 SetCookie("popnum", i, d);
 }
 else if (getCookie('popnum')<n){
 pop_back_ad();
 SetCookie("popnum", parseInt(getCookie('popnum')) + 1, d);
 }
}
try{
 chkpopad(val_pop_num,val_pop_day);//设置背投广告的次数和保存cookie的天数
}catch(e){
 window.addListener(document, 'click', function(){
 chkpopad(val_pop_num, val_pop_day);
 });
}
//delCookie("popnum");//删除cookie
</script>

在写的过程中遇到一个问题,就是IE和FireFox对document和window的解析不一样,刚开始我一头雾水,就请教克良同学,他老人家也是头一回遇到,google了很久,终于
在一个外国论坛上找到解决方案,但具体的原因还是不清楚。

//兼容IE和FireFox的监听事件的写法
//添加监听事件
function addListener(element, e, fn){
 element.addEventListener ? element.addEventListener(e, fn, false) : element.attachEvent("on" + e, fn)
}
//删除监听事件
function removeListener(element, e, fn){
 element.removeEventListener ? element.removeEventListener(e, fn, false) : element.detachEvent("on" + e, fn)
}
//删除监听事件:
window.removeListener(window, 'click', arguments.callee);//这种写法只有IE支持
window.removeListener(document, 'click', arguments.callee);//这种写法兼容IE和FireFox
//添加监听事件:
window.addListener(document, 'click', fn);

背投广告相关问题:
当然如果用户浏览器安装了拦截插件,那很有可能不会弹出(比如Firefox的noscript插件,就不允许任何弹出窗)。方法不是绝对的,也不是最好的,只是用最少的时间来做最效率的事情。
可以通过模拟form提交的方式来弹出窗口,穿越性(相对于一般拦截弹窗的插件)很好,不过无法设置sFeatures参数内容。
demo页面:
http://img.alimama.cn/cms/images/1256207772626.html

September,27th,2009

谈谈互联网营销

营销这个字英文叫Markerting,对这个词概念上有很多定义,例如:“在合适的地点,合适的时间,合适的价格出现的合适商品”这是一个运用在麦肯锡的简单现实的定义。“营销从本质上来说就是一个将所有资源进行整编以便满足大众消费者不断变化的需求行为。”这个是我认为更加贴切的市场营销定义。其实不管是什么定义,都是关注于消费者定位以及如何满足消费者需求的。
那么互联网营销呢?简单来说,互联网营销就是利用互联网为手段开展营销活动。我最近两年一直在做互联网营销推广产品。发觉电子商务相对传统行业模式来说,更应注重营销。经常有卖家用户来问我,我要怎么推广我的东西?你们这什么推广产品能适合我用?特别是在人人都有了营销意识的时候。
首先我认为卖家用户必须要先“修炼”。修炼啥?修炼内功,也就是你的产品和服务,这是基础。只有这个保障了,接下去做营销才能顺风顺水。接着说到营销推广具体的招式。也就是做广告的形式。不外乎四种:1、按点击付费,2、包时付费,3、千次展现付费,4、按成交付费。不管是google的Adwords,Adsense。还是百度的竞价词,新浪的媒体广告,阿里妈妈的全国联播,淘宝的直通车,淘宝客等万变不离其中,都包含在这四种形式里。但什么方式适合你,这就是个需要好好研究的问题。这里我拿淘宝现有的几个推广产品分析下。“品牌广告”顾名思义适合那些比较大型的企业。”直通车”适合做单品推广,用户目的明确。“超级麦霸”以主题推广的形式推出,在主题切合的情况下,也同样适合单品推广。“淘宝客”更多的带来长尾流量,并且成交了才付费,相对成本低廉。“钻石展位”适合有了一定的基础,想要建立品牌形象的。对于卖家来说明确自己推广目标和预算,才能更好的帮助其选择推广产品。建立推广目标的依据来自于平时对用户数据的分析和积累。目标定制的越细越清晰,营销方案就会越切合你的推广方向。同时广告的创意能否吸引眼球决定了其转化率。最后说说运营营销,在互联网上,光靠广告推广暂时的曝光已远远不够。建立圈子,发展渠道,树立品牌,扩展影响力和口碑是其想要长久发展必须去跟进的事。
说了一大堆很多人一定觉得奇怪,这貌似不是一个ue来写的东西。我想要做好UE又或者产品设计师,必须深度的了解这个行业的用户需求,行业规则和其特点,你首先要成为资深用户才能更好去支持产品的发展。