在给标题、列表等做图标的时候,正确的方法是设背景。比如:
h2 {background:url(some.gif) no-repeat left top;}
但我做出来的效果在Firefox里面总是不显示图片,而在IE就正常,很郁闷。后来仔细检查,才发现代码跟上面不太一样:
h2 {background:url(some.gif) no-repeat fixed left top;}
去掉fixed,Firefox就能正常显示了。
no-repeat fixed,是设页面背景时做顺手了的,而在给标题、列表设背景时也没多想,习惯性地就敲出来了。
CSS看似简单,水还是挺深啊。
2006-09-21
2006-09-18
[链接] 空白显示页面问题的解决
点击访问原作
在windows操作系统上使用IE作为浏览器时。常常会发生这样的问题:在浏览使用UTF-8编码的网页时,浏览器无法自动侦测(即没有设定“自动选择”编码格式时)该页面所用的编码。即使网页已经声明过编码格式:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
,由此造成某些含有中文UTF-8编码的页面产生空白输出。
如果使用的是Mozilla、Mozilla Firefox、Sarafi的浏览器这不会造成这个问题。这是由于IE解析网页编码时以HTML内的标签优先,而后才是HTTP header内的讯息;而mozilla系列的浏览器则刚刚相反。
由于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,使浏览器解析、输出<title></title>的内容时,如果在</title>前有奇数个全角字符时,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字,导致IE无法读完<title>部分,使整个页面为空百输出。而这个时候如果察看源文件的话,会发现实际上整个叶面全部已经输出了。
因此最简单的解决办法是再网页文件的<head></head>标签中一定要把字符定义<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
放在<title></title>之前。
2006-09-15
Blogger beta
试用了一下Blogger beta,功能的确加强了很多,表面上最突出的就是Label。这个功能的确很实用,也是Blogger因为没有提供这个功能而一直以来被诟病之处。看来Blogger beta要在这个问题上打个翻身仗。
Label,在大部分网站一般叫做Tag,反正是一回事,就是给主题添加一些简短的描述,然后就可以通过众多描述的共同之处进行分类。
最需要这个功能的其实是图片网站,比如flickr。因为Blog之流尚可通过文本搜索,进行人工的查找。效果自然不如Tag来得好,但总算有此功能。但图片站可就十分依赖Tag技术了。用户对同一张的描述会产生两维的效果,一维是广度——描述差异性越多,再次找到它的可能性就越高;另一维是深度——描述的相同性越高,就越接近图片主题的本质。比如一幅树叶的图片,最容易想到的Tag就是“树叶”,但也有可能是“黄色”;因为它是黄色的树叶;也可能是“秋”,因为它是秋天的树叶;也可能是“五角”,因为它有着五角的外形……
这应该跟人工智能有关吧?不懂,瞎猜。
但实际上Blogger beta最大的变化之处是骨子里的,网络重构。新的模板必须采用严格的XHTML 1.0 Strict!内置的转换标记也是一套全新的系统,这些都增加了用户自定义模板的难度——要从Blogger转向Blogger beta并不是一件轻松愉快的事情;除非你采用那些老老实实的模板。
其他的诸如翻页功能、新的档案文件列表方式,相较而言都是小儿科了。
现在对我来说,遇到一个具体问题:我正试图把诗歌栏目也转向Blogger,但Blogger对帖子日期有限制,只支持最早到1990年,那么我80年代的作品就无法有正确时间了,虽然作品不多,但这总是不爽。试用Blogger beta发现它对日期的支持要好的多,还是方便的手工输入方式——那么到底用哪个?还是两个都不用,用MySQL+PHP自己做?
Blog这东西提供了一种网页(网站)结构与内容分离的极为便利的方式,不用还真是可惜啊。
Label,在大部分网站一般叫做Tag,反正是一回事,就是给主题添加一些简短的描述,然后就可以通过众多描述的共同之处进行分类。
最需要这个功能的其实是图片网站,比如flickr。因为Blog之流尚可通过文本搜索,进行人工的查找。效果自然不如Tag来得好,但总算有此功能。但图片站可就十分依赖Tag技术了。用户对同一张的描述会产生两维的效果,一维是广度——描述差异性越多,再次找到它的可能性就越高;另一维是深度——描述的相同性越高,就越接近图片主题的本质。比如一幅树叶的图片,最容易想到的Tag就是“树叶”,但也有可能是“黄色”;因为它是黄色的树叶;也可能是“秋”,因为它是秋天的树叶;也可能是“五角”,因为它有着五角的外形……
这应该跟人工智能有关吧?不懂,瞎猜。
但实际上Blogger beta最大的变化之处是骨子里的,网络重构。新的模板必须采用严格的XHTML 1.0 Strict!内置的转换标记也是一套全新的系统,这些都增加了用户自定义模板的难度——要从Blogger转向Blogger beta并不是一件轻松愉快的事情;除非你采用那些老老实实的模板。
其他的诸如翻页功能、新的档案文件列表方式,相较而言都是小儿科了。
现在对我来说,遇到一个具体问题:我正试图把诗歌栏目也转向Blogger,但Blogger对帖子日期有限制,只支持最早到1990年,那么我80年代的作品就无法有正确时间了,虽然作品不多,但这总是不爽。试用Blogger beta发现它对日期的支持要好的多,还是方便的手工输入方式——那么到底用哪个?还是两个都不用,用MySQL+PHP自己做?
Blog这东西提供了一种网页(网站)结构与内容分离的极为便利的方式,不用还真是可惜啊。
2006-09-14
h#标签的缺省值
h#的margin,在IE里面缺省值为0,但在Firefox和Safari里面top有个大约10px。后者比较奇怪。
所有有些地方需要强制指明h# {margin-top:0;}
里昂:皇家马德里中场休息时发现上述问题。里昂打得不错,皇马整体性太差了,光有大牌是不行的!其实里昂阵中也不乏骁将,尤其是新生代的法国国家队几个核心,只不过名气尚且不大而已。
2:0到70分钟了,继续看。
所有有些地方需要强制指明h# {margin-top:0;}
里昂:皇家马德里中场休息时发现上述问题。里昂打得不错,皇马整体性太差了,光有大牌是不行的!其实里昂阵中也不乏骁将,尤其是新生代的法国国家队几个核心,只不过名气尚且不大而已。
2:0到70分钟了,继续看。
2006-09-09
更正一下
Feed的几个技术里面说:
因此我就修改了一下,获得另一个全站Blog的RSS聚合:
http://feedjumbler.com/users/ivox/all/rss.xml
FeedJumbler生成聚合会有个问题,即我下次更改、增加RSS地址后,新生成的聚合就会有不同的名字。
今天又研究了一下,在FeedJumbler注册以后,其实会获得一个固定的RSS地址,其对应的聚合可以根据自己的需要进行修改。因此我就修改了一下,获得另一个全站Blog的RSS聚合:
http://feedjumbler.com/users/ivox/all/rss.xml
Feed的几个技术
首先是聚合。我很奇怪会有那么多桌面的RSS聚合阅读器,那些东西想来也的确不错,但何不就在线阅读呢?
针对我自己的这些Blog,聚合的意义很简单,就是把内容组织到一起,按时间顺序排下来——但如此简单一个要求,网上竟然找不到现成、合适的script。我查了算起来一整天的资料,总算明白AJAX不能跨域查询,OK!但我们不是非用AJAX不可啊。
Safari的RSS阅读器对我来说就十分理想。我甚至把那个.js文件抄过来好好研究了好一阵,但终于还是放弃了。毕竟自己不是专业的Coder哈。
找不到合适的资料跟搜索引擎有极大关系。下午4点左右我试了一下在Google里面用“combine rss script”来搜索——这下豁然开朗了,总算找到一大堆在线聚合的网站。
接下来的事情就是研究到底哪个更好用……比较了无数了,总算暂时选定了lazytom's FeedJumbler。这个聚合服务并不是有多好,总算能用了。
有了聚合,本站首页就可以显示各个栏目的文章了,但Blogger放在我的FTP上的RSS有些问题。最好的解决办法就是把Blog放去Blogspot.com——反正现在这家速度还满快,那就放过去好了。同时这样也解决另一个很烦人的问题:由于Blog生成的文件极多,GoLive在发布、更新的时候速度超慢!现在删掉了大量文件,自然就好多了。
Adobe也该打五十大板,GoLive的FTP模块效率实在太低,还超级占资源。
FeedJumbler生成聚合会有个问题,即我下次更改、增加RSS地址后,新生成的聚合就会有不同的名字——原来的应当还能用吧,但订阅了旧的聚合的用户就不能得到新栏目的更新状况了。
这样就要用到FeedBurner了。这项服务的基本内容就是把有可能变化的、不好记的、乱七八糟的,如此等等的RSS重新包装一番,再赋予一个好记的、稳定的名字。其实就跟我们用域名来代替IP一样。
好了,本站永久性的Feed就这样炮制出来了!欢迎订阅——
http://feeds.feedburner.com/ivox
针对我自己的这些Blog,聚合的意义很简单,就是把内容组织到一起,按时间顺序排下来——但如此简单一个要求,网上竟然找不到现成、合适的script。我查了算起来一整天的资料,总算明白AJAX不能跨域查询,OK!但我们不是非用AJAX不可啊。
Safari的RSS阅读器对我来说就十分理想。我甚至把那个.js文件抄过来好好研究了好一阵,但终于还是放弃了。毕竟自己不是专业的Coder哈。
找不到合适的资料跟搜索引擎有极大关系。下午4点左右我试了一下在Google里面用“combine rss script”来搜索——这下豁然开朗了,总算找到一大堆在线聚合的网站。
接下来的事情就是研究到底哪个更好用……比较了无数了,总算暂时选定了lazytom's FeedJumbler。这个聚合服务并不是有多好,总算能用了。
有了聚合,本站首页就可以显示各个栏目的文章了,但Blogger放在我的FTP上的RSS有些问题。最好的解决办法就是把Blog放去Blogspot.com——反正现在这家速度还满快,那就放过去好了。同时这样也解决另一个很烦人的问题:由于Blog生成的文件极多,GoLive在发布、更新的时候速度超慢!现在删掉了大量文件,自然就好多了。
Adobe也该打五十大板,GoLive的FTP模块效率实在太低,还超级占资源。
FeedJumbler生成聚合会有个问题,即我下次更改、增加RSS地址后,新生成的聚合就会有不同的名字——原来的应当还能用吧,但订阅了旧的聚合的用户就不能得到新栏目的更新状况了。
这样就要用到FeedBurner了。这项服务的基本内容就是把有可能变化的、不好记的、乱七八糟的,如此等等的RSS重新包装一番,再赋予一个好记的、稳定的名字。其实就跟我们用域名来代替IP一样。
好了,本站永久性的Feed就这样炮制出来了!欢迎订阅——
http://feeds.feedburner.com/ivox
2006-09-08
Blogger的几个用法
今天最重要的事情就是把“爱好”这个栏目Blog化了。当中涉及到好几个技术问题。
图片浮动是很容易实现的。但按照Blogger提供的,也就是通常的方式,图片只能在Blog内文里面浮动,并不影响日期和标题;并且那种浮动是围绕式浮动,跟我需要的效果不同。
好在Blogger的模板定制能力够强,内文也支持DIV。那么我就有办法了。 办法的关键是在设置里面里面取消浮动对齐方式!然后在内文里面把图片放在一个DIV里面令其float:left;,而把文字放在另一个DIV里面,令其float:right;。
另一个同样关键之处就是在模板里面把日期和标题放在一个DIV里面,令其也float:right;。
实际效果见“爱好”栏目。
把页面直接放在blogspot.com会有很多好处,但有个前提:去掉Nav条。
做起来倒是简单,在CSS里面放入这段就好:
图片浮动是很容易实现的。但按照Blogger提供的,也就是通常的方式,图片只能在Blog内文里面浮动,并不影响日期和标题;并且那种浮动是围绕式浮动,跟我需要的效果不同。
好在Blogger的模板定制能力够强,内文也支持DIV。那么我就有办法了。 办法的关键是在设置里面里面取消浮动对齐方式!然后在内文里面把图片放在一个DIV里面令其float:left;,而把文字放在另一个DIV里面,令其float:right;。
另一个同样关键之处就是在模板里面把日期和标题放在一个DIV里面,令其也float:right;。
实际效果见“爱好”栏目。
把页面直接放在blogspot.com会有很多好处,但有个前提:去掉Nav条。
做起来倒是简单,在CSS里面放入这段就好:
2006-09-07
2006-09-05
dp.SyntaxHighlighter
这个页面工具太赞了!
在WebReference闲逛的时候,发现了这个dp.SyntaxHighlighter。其作用是高亮页面内的源代码,效果见WebRef的文章。
更赞的是,dp.SyntaxHighlighter不但支持各种源代码,还是一个免费工具!
我会把这个工具用到本站上。
在WebReference闲逛的时候,发现了这个dp.SyntaxHighlighter。其作用是高亮页面内的源代码,效果见WebRef的文章。
更赞的是,dp.SyntaxHighlighter不但支持各种源代码,还是一个免费工具!
我会把这个工具用到本站上。
2006-09-02
2006-08-31
filter造成页面刷新失败
一直都有发现我的部分页面存在一个问题:页面一些元素在滚动时会消失或破碎,比如Flash或者下拉框。实际上并没有消失,只是在滚动时这些元素刷新失败,所以就看不到了。而这个问题也仅仅存在于IE,或IE内核的比如Maxthon当中,Firefox或Safari就很正常。
本站最近一次更新取消了原来设计的一个很酷的效果:鼠标悬停关闭按钮时,整个页面变成黑白。
这个效果基于CSS之filter特效,但只有IE才支持。而本站首页现在不用弹出新窗口打开,那个关闭按钮意义就不大了。如此等等,那就取消吧。
取消filter特效以后,CSS中定义的filter属性也顺手删除了,这时意外地发现:页面元素刷新失败的问题不存在了!
IE啊IE,让我们说什么好呢?
本站最近一次更新取消了原来设计的一个很酷的效果:鼠标悬停关闭按钮时,整个页面变成黑白。
这个效果基于CSS之filter特效,但只有IE才支持。而本站首页现在不用弹出新窗口打开,那个关闭按钮意义就不大了。如此等等,那就取消吧。
取消filter特效以后,CSS中定义的filter属性也顺手删除了,这时意外地发现:页面元素刷新失败的问题不存在了!
IE啊IE,让我们说什么好呢?
2006-08-30
一些收获
总算把“布局和表现分离”这一思路落实到了云影的Blog上。这几天研究下来,还是有些收获的。
在兼容性方面,应该优先考虑更规范的浏览器。在IE和Firefox之间,更规范的当然就是后者了。所以大部分调试工作应该放在Firefox当中,而不是IE当中进行。
多层背景的放置,有一个小技巧。首先,与内容无关的图片,按WEB规范应该做成背景图,而这并不光是规范问题,把图片做成背景还非常有利于定位。
我在云影的Blog里就是这样做的,有一层真正的页面背景,还有一层背景其实是顶部的Banner。最初我是把页面背景放在body标记里面、居中,而Banner是放在一个Headbox的div层里面、居中。
问题就出现了——在Firefox里面看,一切正常,但在IE里面,Banner比预想的位置偏左了1px!如果把body的左边距设成1px,那么在IE里面看上去就正常了,但在Firefox里面,Banner又会向右偏1px。
基于上面的“在兼容性方面,应该优先考虑更规范的浏览器。”,可以判定这是IE的Bug!但仍然要解决这个问题。
同时,这样的布局还带来别的问题——如果浏览器窗口缩小,在Firefox里面毫无问题,上下两层图片对应的位置保持不变;而在IE里面,body里面的背景边上却会出现一段未曾预料的边距。糟糕的IE!
如何解决?其实不难想到——把页面背景从body里面拿出来放在页面最外层那个定位容器里面就好。于是以上两个问题:偏移和边距,都解决了。
云影的Blog是放在Blogcn的。这是一家极其糟糕的Blog提供商,技术方面乏善可陈。但抱怨归抱怨,问题还是要解决。我在做这个“布局与表现分离”的过程中,遇到最大的问题就是Blogcn的标记兼容性太差。
模板里面没法放!DOCTYPE声明。
这样的后果就是没法让IE和Firefox对BOX的解释取得一致。在没有适当的!DOCTYPE声明时,IE里面的BOX尺寸是含边框、内边距在内的,而按WEB规范,这样是错误的。
那么如何在没有!DOCTYPE声明的情况下,让IE听话一点呢?我想到一个办法:嵌套DIV,让两层div的边框和内边距均为0,而内层div的外边距就充当了如果使用单层DIV时的内边距。
因为这两层DIV当中,边框和内边距都为0,所以不管浏览器加不加这两个尺寸,都没影响了。
这个技巧附带的好处是:在保持布局跨浏览器的兼容性的同时,可以使用一些IE特殊的属性,比如滚动条的自定义。按规范不应当这样做,但其实这样也满有趣。
对于嵌套DIV情况下,如何让外层DIV的高度自适应内层DIV,网上的论述很多了。就是让内层DIV具有float属性,成为浮动层,并在下边加上一个控制DIV,具有clear:both属性。
综合一下,还应该加上两条:
浮动层还应该具有display:inline;属性,以解决IE莫明其妙的边框加倍问题;
控制层为了不影响布局,可以把height、font-size和line-height设为0。
有一个调试中的技巧,可能大部分coder早就在用了,不过对我来说还是一个新的收获,因为毕竟以前还没有切实、全面地采用DIV+CSS。
具体做法是在调试时把各个DIV都加上“border:1px solid #color;”这样的属性。很简单,但很有效。
最后,我发现采用DIV+CSS、布局与表现分离的思路,用文本编辑器来写网页其实更方便、更舒服了。
在兼容性方面,应该优先考虑更规范的浏览器。在IE和Firefox之间,更规范的当然就是后者了。所以大部分调试工作应该放在Firefox当中,而不是IE当中进行。
多层背景的放置,有一个小技巧。首先,与内容无关的图片,按WEB规范应该做成背景图,而这并不光是规范问题,把图片做成背景还非常有利于定位。
我在云影的Blog里就是这样做的,有一层真正的页面背景,还有一层背景其实是顶部的Banner。最初我是把页面背景放在body标记里面、居中,而Banner是放在一个Headbox的div层里面、居中。
问题就出现了——在Firefox里面看,一切正常,但在IE里面,Banner比预想的位置偏左了1px!如果把body的左边距设成1px,那么在IE里面看上去就正常了,但在Firefox里面,Banner又会向右偏1px。
基于上面的“在兼容性方面,应该优先考虑更规范的浏览器。”,可以判定这是IE的Bug!但仍然要解决这个问题。
同时,这样的布局还带来别的问题——如果浏览器窗口缩小,在Firefox里面毫无问题,上下两层图片对应的位置保持不变;而在IE里面,body里面的背景边上却会出现一段未曾预料的边距。糟糕的IE!
如何解决?其实不难想到——把页面背景从body里面拿出来放在页面最外层那个定位容器里面就好。于是以上两个问题:偏移和边距,都解决了。
云影的Blog是放在Blogcn的。这是一家极其糟糕的Blog提供商,技术方面乏善可陈。但抱怨归抱怨,问题还是要解决。我在做这个“布局与表现分离”的过程中,遇到最大的问题就是Blogcn的标记兼容性太差。
模板里面没法放!DOCTYPE声明。
这样的后果就是没法让IE和Firefox对BOX的解释取得一致。在没有适当的!DOCTYPE声明时,IE里面的BOX尺寸是含边框、内边距在内的,而按WEB规范,这样是错误的。
那么如何在没有!DOCTYPE声明的情况下,让IE听话一点呢?我想到一个办法:嵌套DIV,让两层div的边框和内边距均为0,而内层div的外边距就充当了如果使用单层DIV时的内边距。
因为这两层DIV当中,边框和内边距都为0,所以不管浏览器加不加这两个尺寸,都没影响了。
这个技巧附带的好处是:在保持布局跨浏览器的兼容性的同时,可以使用一些IE特殊的属性,比如滚动条的自定义。按规范不应当这样做,但其实这样也满有趣。
对于嵌套DIV情况下,如何让外层DIV的高度自适应内层DIV,网上的论述很多了。就是让内层DIV具有float属性,成为浮动层,并在下边加上一个控制DIV,具有clear:both属性。
综合一下,还应该加上两条:
浮动层还应该具有display:inline;属性,以解决IE莫明其妙的边框加倍问题;
控制层为了不影响布局,可以把height、font-size和line-height设为0。
有一个调试中的技巧,可能大部分coder早就在用了,不过对我来说还是一个新的收获,因为毕竟以前还没有切实、全面地采用DIV+CSS。
具体做法是在调试时把各个DIV都加上“border:1px solid #color;”这样的属性。很简单,但很有效。
最后,我发现采用DIV+CSS、布局与表现分离的思路,用文本编辑器来写网页其实更方便、更舒服了。
2006-08-27
DIV + CSS 布局的几点体会
这个周末,白天接待彩虹,晚上研究网页设计到很晚,总算搞清楚了几个问题。有点累,倒也值得。
IE计算div的宽度,通常会忽略margin、border和padding的宽度属性,而Safari、Firefox不会。为了保持布局跨浏览器的一致性,必须在网页的head里面加上一段!DOCTYPE声明。
另一个涉及跨浏览器一致性的布局问题是li标记的list-style,在Firefox里面被解释得比较奇怪。务必留意。
学会了嵌套DIV情况下,如果让外层div的高度自适应子div的高度。这种情况经常出现在两列布局情况下。比如一列Blog正文,一列Sidebar。往往这两列都不可能正好等高,所以它们的背景就会出现高差,如果你不希望看到结果,最容易的解决办法就是把这两列div放置到一个外层的div当中,而用这个外层div的背景来替代列背景。但在普通情况下,这个外层div并不会如我们所愿——它并不会自动适应子div的高度。
解决这个问题的关键有两点:
第一:在子div中使用float属性;
第二:不指定浮动层的position属性。
多重Style的问题。虽然目前Firefox已经支持这个CSS官方要求的特性,但实际使用的时候,遇到的问题还是不少。IE和Safari根本就不支持,如果要实现用户选择Style,就得用script来处理。script还不够,比如在一个Blog里面,用户选择了“风格二”,但他在点击链接、评论或存档文件之后,或刷新之后,又回到了缺省页面——那么又得加上Cookie来存储用户选用的那个风格表……真是麻烦啊!
所以如果我要使用多重风格,我就只会简单地在页面告诉用户:如果你想使用多重风格,请使用Firefox浏览本页。
这样算是为Firefox做广告吧?呵呵。
多重风格必须要建立在DIV+CSS基础上。如果靠Table布局,改改颜色、字体什么的没问题,但做不到比如交换左右两列的位置之类的变化。
另外一个要点:把你能想到的所有内容都用div做出来。如果在某个风格里,你不想显示某些内容,很简单,用display:none把它们隐藏就好了。
IE计算div的宽度,通常会忽略margin、border和padding的宽度属性,而Safari、Firefox不会。为了保持布局跨浏览器的一致性,必须在网页的head里面加上一段!DOCTYPE声明。
另一个涉及跨浏览器一致性的布局问题是li标记的list-style,在Firefox里面被解释得比较奇怪。务必留意。
学会了嵌套DIV情况下,如果让外层div的高度自适应子div的高度。这种情况经常出现在两列布局情况下。比如一列Blog正文,一列Sidebar。往往这两列都不可能正好等高,所以它们的背景就会出现高差,如果你不希望看到结果,最容易的解决办法就是把这两列div放置到一个外层的div当中,而用这个外层div的背景来替代列背景。但在普通情况下,这个外层div并不会如我们所愿——它并不会自动适应子div的高度。
解决这个问题的关键有两点:
第一:在子div中使用float属性;
第二:不指定浮动层的position属性。
多重Style的问题。虽然目前Firefox已经支持这个CSS官方要求的特性,但实际使用的时候,遇到的问题还是不少。IE和Safari根本就不支持,如果要实现用户选择Style,就得用script来处理。script还不够,比如在一个Blog里面,用户选择了“风格二”,但他在点击链接、评论或存档文件之后,或刷新之后,又回到了缺省页面——那么又得加上Cookie来存储用户选用的那个风格表……真是麻烦啊!
所以如果我要使用多重风格,我就只会简单地在页面告诉用户:如果你想使用多重风格,请使用Firefox浏览本页。
这样算是为Firefox做广告吧?呵呵。
多重风格必须要建立在DIV+CSS基础上。如果靠Table布局,改改颜色、字体什么的没问题,但做不到比如交换左右两列的位置之类的变化。
另外一个要点:把你能想到的所有内容都用div做出来。如果在某个风格里,你不想显示某些内容,很简单,用display:none把它们隐藏就好了。
2006-07-27
上网之必要
为了规划新的个人网站,昨晚将飞机上的PHP+MySQL重新捣腾了一晚上,以便学习、调试。
其实前年春节在家就已经搞好了,但OSX升级以后就将很多设置破坏了——以前有人提到过,并且提出了解决办法,但我试了之后显然无效。
昨晚搞得还算顺利,PHP很快搞定,MySQL从内部访问毫无问题,从外部访问始终不行。PHP调试页里面反映的mysql.sock路径和MySQL反映的路径不同,但我不知道怎么改——现在想起来真该死,应该可以spotlight的吧?
最关键的问题是现在我上不了网,在需要查找资料的时候,才发现google、baidu之必要!上网之必要! 这不?一早来到办公室,立刻就找到某Blog里面关于相同症状的描述和解决办法。
我本想留言感谢这个Blog作者,不料要注册才行——那还是算了吧,呵呵。
昨晚搞得还算顺利,PHP很快搞定,MySQL从内部访问毫无问题,从外部访问始终不行。PHP调试页里面反映的mysql.sock路径和MySQL反映的路径不同,但我不知道怎么改——现在想起来真该死,应该可以spotlight的吧?
最关键的问题是现在我上不了网,在需要查找资料的时候,才发现google、baidu之必要!上网之必要! 这不?一早来到办公室,立刻就找到某Blog里面关于相同症状的描述和解决办法。
我本想留言感谢这个Blog作者,不料要注册才行——那还是算了吧,呵呵。
2006-07-20
Blog究竟是什么?
这个问题是问Blogcn和广大Blog用户的。
我早已发现Blogcn提供的Blog里面,“引用”功能是无效的——总是报告“缺少参数!!”。前几天我给Blogcn的技术支持打了电话,报告了这个严重Bug。接电话的小伙子听得时分茫然,明显没有遭遇过这个问题。我不得不耐心细致地给他讲解了问题的症状。
几天后,Blogcn总算作出了反应,但不是改正,而是儿戏地把“引用”链接改成了“####”!
为什么一个大型的Blog提供商居然无视Blog的引用功能?
为什么千万计的用户居然无视Blog引用功能不健全的严重Bug?
难道说Blog就仅仅是一个廉价的普通网站?对于这些家伙来说——
Blog究竟是什么?
我早已发现Blogcn提供的Blog里面,“引用”功能是无效的——总是报告“缺少参数!!”。前几天我给Blogcn的技术支持打了电话,报告了这个严重Bug。接电话的小伙子听得时分茫然,明显没有遭遇过这个问题。我不得不耐心细致地给他讲解了问题的症状。
几天后,Blogcn总算作出了反应,但不是改正,而是儿戏地把“引用”链接改成了“####”!
为什么一个大型的Blog提供商居然无视Blog的引用功能?
为什么千万计的用户居然无视Blog引用功能不健全的严重Bug?
难道说Blog就仅仅是一个廉价的普通网站?对于这些家伙来说——
Blog究竟是什么?
2005-12-02
2005-08-19
关于“隆重成立:所有DSLR无PS俱乐部!”
口水贴……
Resize本身就是一个严重失真的后期操作。
从技术上讲,既然要Resize,就势必要做Sharpen。Resize之后不做Sharpen的片子大多没法看。
Sharpen是一个很考验技巧、眼光和趣味的操作——甚至是一系列操作。但为了弥补Resize对片子效果的损害,这是必须的。
Resize本身就是一个严重失真的后期操作——这句话是像素层面上讲的。对像素而言,Photoshop的每一个操作,不论Resize还是Sharpen,都是损害!
但从效果而言,适度的Sharpen能够挽回Resize丢失的细节,使得缩小的图片更接近原来的效果。
毕竟你要的是像素,还是效果?
什么是适度的Sharpen?
建议参考D100Fans的相关文章。为了获得更好的Sharpen结果,你必须使用多种复杂的Photoshop技术,必须涉及色阶、蒙版、通道种种概念——而这些就是楼主所不提倡的“PS”。
除非你不Resize,否则你必须“PS”。
楼主对PS的理解太浅。
Resize本身就是一个严重失真的后期操作。
从技术上讲,既然要Resize,就势必要做Sharpen。Resize之后不做Sharpen的片子大多没法看。
Sharpen是一个很考验技巧、眼光和趣味的操作——甚至是一系列操作。但为了弥补Resize对片子效果的损害,这是必须的。
Resize本身就是一个严重失真的后期操作——这句话是像素层面上讲的。对像素而言,Photoshop的每一个操作,不论Resize还是Sharpen,都是损害!
但从效果而言,适度的Sharpen能够挽回Resize丢失的细节,使得缩小的图片更接近原来的效果。
毕竟你要的是像素,还是效果?
什么是适度的Sharpen?
建议参考D100Fans的相关文章。为了获得更好的Sharpen结果,你必须使用多种复杂的Photoshop技术,必须涉及色阶、蒙版、通道种种概念——而这些就是楼主所不提倡的“PS”。
除非你不Resize,否则你必须“PS”。
楼主对PS的理解太浅。
2005-08-03
用Photoshop Script来加Logo
加LOGO,首先你需要有一个自己的LOGO,然后把这段代码放在加框的Script里面:
这是定义放置logo图案的目标图档。如果放在在流行的那个加框程序里面,可以不要这一行,但要把后面的frameDoc改成AD。
var logofile = new File("e:/my documents/fishlogo on white.psd");
这是定义logo文件的地址,一定要改成自己的那个。
var logoDoc = open(logofile);
打开logo文件,并定义它。
logoDoc.mergeVisibleLayers();
合并logo的图层。
logoDoc.resizeCanvas(frameDoc.width,frameDoc.height,AnchorPosition.BOTTOMRIGHT);
这是一个关键步骤,把logo图案的画布尺寸改成跟目标图档一样大,如此才能保证把logo复制过去后位置精确。
BOTTOMRIGHT,意味着logo位置是相对右下角固定。各位应该根据自己摆放logo的习惯调整。
logoDoc.layers[0].duplicate(frameDoc,ElementPlacement.PLACEATBEGINNING);
这一步是复制logo的图层到目标图档。
logoDoc.close(SaveOptions.DONOTSAVECHANGES);
关闭logo图档。
DONOTSAVECHANGES,意味着不保存。
另外的提示:
Logo文件的画布尺寸应该具有某个边角的尺寸特性,这样才能精确放置。
详解:
var frameDoc = activeDocument;这是定义放置logo图案的目标图档。如果放在在流行的那个加框程序里面,可以不要这一行,但要把后面的frameDoc改成AD。
var logofile = new File("e:/my documents/fishlogo on white.psd");
这是定义logo文件的地址,一定要改成自己的那个。
var logoDoc = open(logofile);
打开logo文件,并定义它。
logoDoc.mergeVisibleLayers();
合并logo的图层。
logoDoc.resizeCanvas(frameDoc.width,frameDoc.height,AnchorPosition.BOTTOMRIGHT);
这是一个关键步骤,把logo图案的画布尺寸改成跟目标图档一样大,如此才能保证把logo复制过去后位置精确。
BOTTOMRIGHT,意味着logo位置是相对右下角固定。各位应该根据自己摆放logo的习惯调整。
logoDoc.layers[0].duplicate(frameDoc,ElementPlacement.PLACEATBEGINNING);
这一步是复制logo的图层到目标图档。
logoDoc.close(SaveOptions.DONOTSAVECHANGES);
关闭logo图档。
DONOTSAVECHANGES,意味着不保存。
另外的提示:
Logo文件的画布尺寸应该具有某个边角的尺寸特性,这样才能精确放置。
订阅:
博文 (Atom)