惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
IT之家
IT之家
博客园 - 聂微东
The Cloudflare Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
H
Help Net Security
博客园 - 叶小钗
V
V2EX
WordPress大学
WordPress大学
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
C
Check Point Blog
B
Blog
D
DataBreaches.Net
美团技术团队
罗磊的独立博客

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 我对CSS vertical-align的一些理解与认识(一) « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活
搜狐白社会似iphone短信对话框效果的优化 « 张鑫旭-鑫空间-...
张鑫旭,zhangxinxu · 2009-09-10 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from http://www.zhangxinxu.com
本文地址:http://www.zhangxinxu.com/wordpress/?p=239

一、前言

搜狐有个白社会,今年六七月份露出水面的。其首页css我是从头到尾看了一遍,学了些东西,也用自己的想法优化了些东西。其中之一就是一个显示你或者是好友说了些什么的popup式的对话框,有些形似iphone里面的可爱的短信对话框。看下面的小小截图:

这个对话框效果是不错的,能支持高度上限500像素的文字内容,宽度自动适用于内部的文字内容。
但是参观其HTML代码是背景图片后,发现要实现这样的效果,这代码,至少是这图片肯定是优化不够的。而本文将对比其原来的方法,提供更加大小优化的图片和对应的没有兼容性问题的css代码,看如何将css发挥到机制实现图片背景的优化。

文章主体分三部分,显示展示如何使用搜狐白社会原始版本的图片实现;然后前近一步,使用我处理后图片实现同样的效果;最后将更进一步,使用我再次处理的图片实现更具有扩展性的效果。

二、文章主体

图片处理

1、使用原搜狐白社会对话框背景图片
使用的图片:图片大小为2000像素*1000像素,7.82K,直接显示在文章中不太适合,您可以点击这里查看

2、我对搜狐白社会对话框背景图片处理后的图片
使用的图片:图片大小为1000像素*500像素,3.8K,直接显示在文章里不太合适,您可以点击这里查看

3、我对搜狐白社会对话框背景图片进一步处理后
使用的图片:
现在图片大小为:16像素*25像素,大小281b。

效果表现

以上三种图片实现的最终效果在各个浏览器下的表现如下:

IE6下的三种处理的显示结果

IE6下的三种处理的显示结果


IE7下的三种处理的显示结果

IE7下的三种处理的显示结果


Firefox下的三种处理的显示结果

Firefox下的三种处理的显示结果


chrome下的三种处理的显示结果

chrome下的三种处理的显示结果


Safari下的三种处理的显示结果

Safari下的三种处理的显示结果

简要说明

1、使用搜狐的默认图片
这个图片做得可真是大,2000*1000,将四个角分别定位在图片的四个角落上,然后通过四层标签的嵌套就可以实现自适应内部内容的popup对话框效果。这种方式可以说省掉不少写css的工程师的脑细胞,虽说css实现难度是低了,可以图片大小却7.82K,我是知道为什么白社会打开要慢些了。一个popup背景图片大小7.82K实在是不能容忍的,而且最终实现的效果支持的高度是有限的,最高500像素,超过500像素,布局就会毁掉。看下面的图:

哦,不,我怎么长这个样子了!

css源代码见demo实例页面:狠狠地点击这里

2、我处理后的图片
实现与上面一模一样的效果,但是背景图片却是不一样的,我这里的图片高宽1000*500,面积为原来图片的1/4;大小为原来的一半还要少。但是css方面要花点脑细胞,多层标签间有错位显示以实现良好的表现效果。但是对位优秀的前端,所做的就是尽可能地使用技术优化整个页面。
css源代码见demo实例页面:狠狠地点击这里

3、我进一步处理的图片
这次处理成281b大小的图片,是搜狐白社会的背景图片大小的1/30,已经相差一个数量级别了。更重要的是这里不仅仅是实现了原有的表现,而且已经没有高度和宽度的限制了。唯一的不足就是HTML部分有些复杂,标签较多。但是相比较Google一些产品的HTML标签个数还算精简的。事物都是有两面性的,这里的优点就是图片极小,内部内容不限高宽,就是说无论多长多高的文字都不会有布局问题。不足就是标签数有8个,加上最外标签,共9层标签。这个最外层标签作用是使宽度自适应与内部文字内容,使用:display:inline-block; *display:inline; zoom:1;可以达到类似效果。
此处css代码相对复杂些,里面有些东西还算是比较高级的,其中值得注意的地方之一就是用line-height撑开高度,而不是直接使用height,原因在于height会使div宽度100%显示,撑开外部div。原因或许与height使其haslayout属性有关的。最近关于haslayout的文章也算不少,您如果不是很了解建议去看看,对学习与使用css还是很有帮助的。

还有,这里有一点我可以确定,这一定不是最佳的方法。您有兴趣可以试着用用其他的方法,获取可以找到更加精妙的实现方法的。

css源代码见demo实例页面:狠狠地点击这里

各类方法的取舍还是看您自己了。

源文件下载.zip 15.2K

三、最后小结

要实现上面白社会这样的对话框效果肯定是由更加简约,兼容性扩展性依旧很强的方法的,技术无止境,我技术有限,一定存在更加上乘的方法的,我想只要不断思考,探索,钻研总会找到方法的,这个人可能就是您,您不妨抽个时间研究研究,试验试验。欢迎交流!

本文为原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
本文地址:http://www.zhangxinxu.com/wordpress/?p=239