最近在web前端方面的新发现(第二期)

有句话叫做:“善于发现生活中的美好”是吧,那工作呢?善于创新、善于总结这就是工作最大的乐趣吧~~嘻嘻,话不多说,偶要善于实践啦:

一:模块间距
模块间距使用独立div,不再使用margin-bottom,使得模块在布局中更加灵活,如下:
.hr_10{ height:10px;font-size:0;line-height:1px;clear:both;} 注意这里line-height要写1px,否则ie7下面会多出一个像素,啧啧。。

二:图文排列代码与布局、背景代码相分离,从而提升代码复用率

公用html:

<div class=”自定义”>
<dl class=”picnews”>
<dd class=”pic”><a href=”#”><img src=”pic/pic001.jpg” align=”left”></a></dd>
<dt><a href=”#”>懒人们早起该怎么办呢?</a></dt>
<dd>懒人们早起该怎么办呢?顶着一头乱蓬蓬的头发到容,我们最漂亮的发型DIY花最短的时间别这样,请我们即将教系列最快捷,最漂亮的发型DIY,花最短请看以下的内容,我们即将教会你一系列最快捷,最漂亮的发型DIY,花最短的时间,改造最Orz的女人,还等什么,我们一起来…<a href=”#”>【详细】</a></dd>
</dl>
</div>

公用css:

.picnews dd.pic{ text-indent:0}
.picnews img{ margin:0 10px; border:1px solid #a98678; }
.picnews dt{ font-weight:700; margin:0 0 5px; font-size:13px; height:20px; line-height:20px; overflow:hidden; text-align:center}
.picnews dd{ line-height:20px; text-indent:2em;}

最早处理这种图文排列是用div,左右一个右边一个,或者是直接用图片环绕文本的方法做,但是毫无语义可言,后来用dd、dt的时候也是要不停的定宽度,宽度定义来定义去的,代码显得很冗余。现在可好啦,在dt、dd的基础上巧用图片标签align=”left”,使得其余标签无须再浮动,不仅标签语义化而且代码又简单又模块化,强烈推荐哈~不过我还在考虑要不要拿dt来放图片,,

三:关于分页居中

详见:http://www.baisohu.net/upload/%E5%88%86%E9%A1%B5.html

四:讲究专业态度,将页面主要内容放在前面,次要内容放在后面

因为页面的加载顺序跟代码先后顺序密切相关,这个是老生长谈的了,关键看你的专业态度严不严谨,嘻嘻,特此强调

================================================================

往期回顾:
最近在web前端方面的新发现(第一期):http://www.baisohu.net/?p=645

IE6 position:fixed的尴尬,提供两种方法解决

万恶的IE6不支持position:fixed,解决方法有两种,一种是css,一种是js。
具体请见:http://www.baisohu.net/upload/IE6 positionfixed bug.html
游戏时间:
dnf通关

预知更多游戏资料,请点击这里》》

ps:我真的很鄙视用wp写文章,每次都要写得很辛苦,干脆用dw写了~~

史上最轻便的分页,解决居中问题,免费拿去

无浮动,轻轻松松解决分页居中问题,display:inline-block用在这里很完美(*^__^*), 代码请见:http://www.baisohu.net/upload/分页.html(直接另存为即可 )

经测试通过以下浏览器:ie6\7\8\ff3.6.8\遨游\chrome

预览效果:

最近在web前端方面的新发现

最近身边的朋友都很稀饭在微博上分享信息,生活的、工作的、无聊的、碎碎念的、反正想到什么就说什么,但是这样的信息实在不好管理,它们很零散,它们通常只是大家一时突发奇想或者二度传播的结果,它们没有得到及时的整理和分类,回头想找一条信息真的很难,你或许不记得是哪天唠叨的一句话,你或许不记得有哪个关键字,更糟糕的是你常用的微博打根就不支持站内搜索,所以我说微博就是说”废话“的地方,它的时效性太强,它的信息量非常大、而且快,很少人会去翻阅前几天的东西。当然纯粹的娱乐、视频、冷笑话等除外,想把微博作为一个技术传播平台的话,我想微博真的不适合,最好的分享工具还是传统的博客,比如baisohu.net,这也是之所以我不稀饭在新浪微博扎堆的原由,从某种角度看,我觉得它真的太2了~~

最近“知识管理”这个词挺热门的,呵,我的blog也改名了:白搜狐点内特…我的知识管理工具

回到正题,现整理下最近在web前端方面(哎,说前端有点不好意思啦)的新发现,或者说小发现,分享给大家的同时也整理一下自己的知识。

一:超长字符宽度截取

之前在广大同志的影响下,哥一直用 white-space:nowrap;width:100px;overflow:hidden; 这个来截断字符,但是很不完美的是这个会出现几个像素被截断的情况,谁看谁不爽

现在可好啦,改革开放了,直接定义容器的宽、高、文本高度,然后超出隐藏就ok了,不会出现几个像素被截断的情况,如:width:250px; height:24px; line-height:24px; overflow:hidden; 嗯,感慨新生活很美好~~

二:png8图片透明

之前用透明png8图片做背景都是调用一个js,原来还可以调用一个叫iepngfix.htc(3K)的文件啊,然后在css中将需要使用png的元素与htc文件关联,就是这句话:_behavior:url(images/iepngfix.htc); 注意behavior前要加下划线,只针对ie6,这样别的浏览器就可以不用读取这一句囖,少耗点资源。

不仅可以用png8做背景图片,还可以在html插入png图片哦,前提是要做一张1*1的gif透明图片,否则插入的图片在ie6下面会出现一个红色的叉烧包,具体做法如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<title></title>
<style type=”text/css”>
<!–
/* css里将需要使用png图片的元素与iepngfix.htc关联,确保htc文件中的这个路径(var blankImg = ‘images/blank.gif’)无错即可 */
.npc_con img {_behavior:URL(images/iepngfix.htc);}
.npc_bg {background:url(images/NPC.png) no-repeat;_behavior:URL(images/iepngfix.htc);width:60px;height:110px;}
–>
</style>
</head>
<body>
<div><img src=”images/NPC.png” alt=”" /></div>
<div></div>
</body>
</html>

三:自动换行

旧社会是酱紫的:word-break:keep-all;white-space: nowrap;

新社会呢:word-break:break-all;white-space:normal;word-wrap:break-word; 嗯,皆大欢喜,支持连续的无实义的字符,重点是支持火狐诶~

四:清除浮动

旧社会:

.clear:after { content:”.”; display:block; height:0; clear:both; visibility:hidden;}
.clear {+display:none; clear:both }

其实真的只要酱紫就好了:height:0; line-height:0; font-size:0; overflow:hidden; clear:both; 安全无忧,很早之前就是这样用了,只是后来MS被传统的儒家思想误导了都~

五:label for的巧用

如:

html:

<div>
<label for=”input_search_con”>
<input type=”text” id=”input_search_con” value=”输入后弹出拉框显示结果…” />
</label>
<label for=”btn_search_con”>
<input name=”" type=”button” id=”btn_search_con” />
</label>
</div>

对应css:
#input_search_con{ width:160px; float:left}
#btn_search_con{ width:20px; float:left;}
.input_search{ background:none; border:0; height:18px; margin:0; padding:3px 5px 0 5px; width:160px; color:#9b9b9b;}
.btn_search{background:url(../images/public_icon.gif) no-repeat -32px 5px; width:20px; height:21px; margin:0; padding:0; border:0; cursor:pointer; }

主要是利用label for来定义容器的浮动和宽度,酱紫你的表单元素就可以两两上下对齐啦~~

六:圆角图片边框的最优应用

先对比下两种做法:

方法一,对应的html和css如下:
————————-
<div class=”avatar_48″><img src=”pic/pic002.jpg” /></div>
.avatar_48{background:url(../images/public.gif) 46px -218px no-repeat; display:inline-block; padding:5px; width:140px; height:48px; text-align:center}
————————-

方法二,对应的html和css如下:
————————-
<div class=”intro avatar_48″><img src=”pic/pic002.jpg” /></div>
.intro{ width:150px;text-align:center;}
.avatar_48 img{background:url(../images/public.gif) 0 -218px no-repeat; display:inline-block; padding:5px; width:48px; height:48px;}
————————-

对比了方法一和二,主要的差异请见红色部分,方法二单独定义img标签的css,注意这里的背景图片位置和图片宽度都是固定的,这样做的好处是不仅可以重复利用.avatar_48 img这个css,而且还可以任意定义.intro这个外容器的宽度,而不用像方法一那样img标签的背景图片位置随着容器宽度的变化而变化,方法二可以很方便的解决外容器宽度和居中问题

网页图片优化基本思路

一.压缩图片质量

JPG:可在保真图片色彩度的基础上压缩大小,在网页中只能保持矩形的形态,无透明度,常用于栏目背景主视角大背景等,一般可压缩到50-60%,需综合对比压缩比率效果,对于颜色比较少的图片建议压缩至70%或者保存为gif格式。
GIF:最高色彩只有256,只能用于颜色较为单一的图片,可透明,对于gif而言,色彩越少,文件也就越小。在肉眼可可接受的范围内,尽量将gif色彩数量降低,能够对gif图大小进行有效的优化,常用于小图标圆角边框按钮等。
江湖上的传说:
* 用firework替代photoshop ,fireword出的图片更优。
* 将 Dreamweaver 的默认图像编辑器设为 Fireworks ,那么在 Fireworks 里修改的文件将立即在 Dreamweaver 里更新,不需要用Photoshop 等软件,切换来切换去的了。
* Fireworks很完整的支持网页16 进制的色彩模式,提供安全色盘的使用和转换,支持背景透明,导出的图片又小又漂亮。
* 在线视频(参考):Adobe Fireworks CS4 网页原型设计流程与习惯

二.减少图片数量

减少图片数量,从而减少CSS background images请求
解决方法:CSS Sprite
css sprite是一种网页图片应用处理方式,将icon小图标、按钮、栏目背景图进行分类,然后拼接到一张大图上,具体操作请看第四章。
使用css sprite应注意的事项:
* 在合并图片的时候,要把多张图片有序的合理的合并成一张图片,还要留好足够的空间,防止有效的空间里(或者说固定的高度内)不出现其它背景。
* 开发比较麻烦,你要通过photoshop或其他工具测量计算每一个背景单元的精确位置,这是针线活,没什么难度,但是很繁琐;网上也有一些Css 背景图合并工具,虽然还有一些使用上的不灵活,但是已经比photoshop测量来的方便多了,而且样式直接生成,复制,黏贴就OK了!
* 护的时候比较麻烦,如果页面背景有少许改动,就要改动这张合并的图片,如果在原来的地方放不下,最好往下面加图片,这样图片的字节就增加了,还要改动css。
* CSS Sprites非常值得学习和应用,特别是页面有一堆ico图标的时候 。总之很多时候大家要权衡一下利弊,再决定哪些图片需要应用CSS Sprites。

三.图片命名规则

按图片的用途、功能命名:
公用:public.jpg
标题:title.jpg
按钮:btn.jpg
小图标:icon.gif
按html结构命名:
大背景:full_bg.jpg
头部主视觉背景:header_01.jpg header_02.jpg
导航:nav.jpg nav_on.jpg nav_li.jpg
主体: main.jpg
侧边栏:sidebar.jpg
底部:footer.jpg
按模块命名:
即同个模块下的所有图片拼在一张大图上
严禁以下图片命名:
(.jpg
+.jpg
123.jpg
中文.jpg

四.实例讲解

……

五.页面分析工具

雅虎Yslow(基本)
用于火狐,必需先装firebug才能使用。
谷歌Monster(推荐)
* 检测https协议页面,是否使用了http协议的图片、JS、CSS等;
* 检测CSS、JS、background-image文件是否为404;
* 如果background-image超过6个(可设置检测数量),则提示所有背景图片及大小,超过30KB,标红显示;
HttpWatch (集成在Internet Explorer工具栏 )
谷歌Page Speed
Smush.it(基于 YUI 的在线图片优化工具 )

扩展阅读:
12个基于网页的图片优化工具
SEO优化技巧:16个方法优化网页中的图片

咱~前端开发的人!

什么是前端?
前端工程师=F2E = fee = front-end engineer
前端工程师跟设计师不一样,搞前端的不叫设计师,叫工程师,就是拿蓝图建房子的。很形象,很牛很强大

前端职位:
1. 前端开发工程师 2. 资深前端开发工程师 3. 前端构架师

前端测试环境:
IE6、7、8:http://www.iefans.net/liulanqi-mianfei-xiazai/
IEtester:http://www.ietester.org/
火狐(中/英):http://www.mozillaonline.com/
Google Chromehttp://www.google.com/chrome/
Apple Safari:http://www.apple.com.cn/safari/download/
ps:我的测试环境:ie8安装版,ie6和ie7用ietester测试,火狐为主浏览器

IE 常用调试工具:
1、Microsoft Script Debugger —— Companion.JS need to install this
2、Companion.JS —— Javascript debugger for IE , like Console API feature
3、IE Developer Toolbar —— Like Firebug (DOM/CSS etc)
4、Fiddler —— Web Debugging Proxy
ps:之前有用过IE Developer Toolbar,类似firebug,现在有了ie8(两种浏览器模式,相当于同时装了ie7和ie8),直接按F12(开发者工具),很好用,当然还是ff的firebug更好用囖

火狐插件:
1.CSSViewer:看具体DOM的CSS,Web开发者可以用。
2.Firebug:调试JS的利器,同时也可进行一些简单的DOM Hook。
3.JSView:可以查看当前页面的外埠js和css,这对开发者来说很重要。
4.Web Developer:功能上可能跟Firebug有一些重叠,但是也很强大
5.YSlow:yahoo开发的一个页面评分插件,YSlow以Firefox Add-on的形式发布,并集成到Firebug中,安装前一定要先安装Firebug。
http://developer.yahoo.com/yslow/
http://developer.yahoo.com/performance/rules.html#cdn
6.flagfox:显示网站服务器
ps:我的火狐装备:http://www.baisohu.net/?p=463

—————————————————————————
2008年最佳Web设计/前端开发技巧、脚本及资源总结:http://blog.bingo929.com/best-of-2008-for-web-developers.html
Web前端开发必备手册下载:http://blog.bingo929.com/cheat-sheets-for-web-develop.html
Web前端工程师技能列表:http://www.awflasher.com/blog/archives/906
关注WEB前端开发:http://www.css88.com/
CSS 整形与优化工具:http://www.css88.com/tool/csstidy/
Reset CSS 研究(八卦篇):http://lifesinger.org/blog/2009/03/reset-css-baigua/
让Firefox2和Firefox3在Windows下共存:http://dancewithnet.com/2008/02/01/how-to-run-both-firefox2-and-firefox3-together/

快速定位页面中复杂 CSS BUG 问题

1、检查页面的标签是否闭合
可以用 Dreamweaver 打开文件检查,一般没有闭合的标签,会黄色背景高亮。

2、样式排除法
有些复杂的页面也许加载了 N 个外链 CSS 文件,那么逐个删除 CSS 文件,找到 BUG 触发的具体 CSS 文件,缩小锁定的范围,
然后逐行删除具体的样式定义,定位到具体的触发样式定义,甚至是具体的触发样式属性。

3、模块确认法
可以从页面的 HTML 元素出发。删除页面中不同的 HTML 模块,寻找到触发问题的 HTML 模块。

4、检查是否清除浮动
推荐使用以下清除浮动方法:
.clear:after { content:”.”; display:block; height:0; clear:both; visibility:hidden; }
.clear { clear:both; }

5、检查 IE 下是否触发 haslayout
很多的 IE 下复杂 CSS BUG 都与 IE 特有的 haslayout 息息相关。如果触发了 haslayout,IE 的调试工具 IE Developer Toolbar 中的属性中将会显示 haslayout 值为 -1。

6、边框背景调试法
给元素设置显眼的边框或者背景(比如黑色或红色),进行调试。

div高度自适应

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>解决div高度自适应问题</title>
<style type=”text/css”>
<!–
p{ margin:0; padding:0;   }
–>
</style></head>

<body>
<!– 解决div高度自适应问题,ie6,ie7,ff测试可用,使用时请将外层div高度固定,其他样式自定义,eidt by mmhalj –>
<div id=”textbox” style=”width:380px;height:300px; margin:0 auto;border:1px solid #265492;”>
<div id=”content” style=”width:300px; margin:0 auto;background:#FFFFCC;”>
<p>此处高度300px,超出部分则自动延展</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>此处为超出部分</p>
</div>
</div>
<script type=”text/javascript”>
var a=document.getElementById(“content”);
var b=document.getElementById(“textbox”);
if(a.clientHeight<b.clientHeight)
{
a.style.height=b.clientHeight+”px”;
}
else{
b.style.height=a.clientHeight+”px”;
}
</script>

</body>
</html>