CSSASSCSSASS

三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之

  一种不常用的布局——中间列宽度固定,左右列自适应宽 作者:ONEBOYS    发表时间: 2009年01月18号,星期天     阅读:2,227 次  

三列布局,中间列宽度固定,左右列自适应宽。
在蓝色理想上的一个提问。
这种布局一般来说不大会用上。
(而相对比较常见的是这种布局:左右列固定高度,中间列自适应宽度。
之前写过一种此结构的扩展结构:三列自适应等高且中列宽度自适应布局
用css来实现这种不常见的结构着实也不太容易(或许也是这种结构不流行的一个原因吧)。
实现主要难点在于左右列的宽度计算,假设中间列的宽度为Y,那么左右列的宽度就应该是(100%-Y)/2(左右列等宽情况下)。但是CSS又不支持这种算式计算(当然,ie下有expression,但是这种不标准的东西我们一向是不屑的)。
历数css中,唯一有减法效果的也就margin边距这么一种属性。
所以,我们找到了我们的独木桥——margin。

上下级包含的结构中,如果上级元素(block类型)固定宽度为X,下级元素不定宽,而设置属性margin:50px;那么下级元素的宽度就等于X-2×50px。

如果X是一个百分比的相对数值,那么得到的下级结构的宽度也将是一个相对值。而我们需要的自适应宽正是这么一个相对值。

看代码:

方法中还有个关键的东西,就是padding,margin正负抵消。用来实现左右列的定位(注意,此时宽度并没有达到要求,仍然是50%)。而left:50%,margin-left:-200px两者抵消是实现中间列的居中定位。

这里的效果是左右列等宽,看准了代码中200px,400px的关系,我们也可以实现左右不等宽。

现在,考虑下扩展到到三列自适应等高。
我们实现等高的方法一般都是用padding,margin正负抵消法。而这种方法就与.center中定的属性position:absolute;就产生冲突了。
其实使用absolute定位是我用来避免ie6下三列一行这种布局的宽度溢出的。不用position而用margin定位也是可以的(只是,这样的话,左右不等宽的效果似乎就无法达到了)。
先试试:

代码,为了解决上面提到的在ie6下的问题,而使用了hack:height:400px;_height:393px;(如果对宽度有精确的要求的话,可以考虑统一设为393px好了,因为400px的话在ie7下面也不是很稳定)。

   

  不同编码、浏览器下的尺寸(dimension) 作者:ONEBOYS    发表时间: 2009年01月18号,星期天     阅读:1,276 次  

首先,说明下,第一次测试忽视了一个属性在不同编码,浏览器下的不同解释造成的尺寸不同,即line-height属性。

可以看出:
1,gb2312编码下:
未定高度,由文字填充的block元素在ff和ie下高度一致,
只是inline元素在ie7中要比在ff中较高。

2,utf-8编码下:
inline,block(未定宽高)元素ie和ff的差别就大了。(ff中的inline,block元素都要比ie7中较高)

3.不论在gb2312或utf-8编码下,ff3的显示都是一致的(对照第一幅的左半边和第二幅的左半边)。
而ie7中相差就比较大了(gb2312编码下的inline,block元素都要比utf-8的高)。

4.ff下的bloak元素边框与文字间,上下有一定的间隙(类似padding,但无法去除)。
ff下的inline元素与其他元素上下也有一定间隙(类似margin,但无法去除) 。

另外,图中看不到的:
1.在ie6中,utf8同gb2312的显示是一致的,都同ie7下的gb2312效果(第一幅的右半边)
2.在opera(我一直用的9.6),utf8同gb2312的也是一致的,都同ie7下的utf-8效果(第二幅的右半边)
3.safari同ff3完全一样.utf8同gb2312完全相同。

附代码(需拷到本地,保存为对应编码):

(gb2312)

(UTF-8)

在定义固定的line-height之后,很多差别都消失了(可以比较出line-height在不同编码,浏览器下的默认值啊)。


(区别如图)

   

  input(button)的空隙 作者:ONEBOYS    发表时间: 2009年01月12号,星期一     阅读:1,570 次  

按钮中的文字和边缘都是有一段默认距离的:

在ff下这段距离是由padding产生的,可以直接使用padding:0来去除,但是ie下显然不是由此产生的,请看:

并且ie下的这段空隙还是随着文字的增加而增加的。

那么如何去除ie下的这段空隙呢。
BI上看见的去除方法:

width:auto ;
overflow:visible;

是写给ie的,

padding:0;
是写给ff的。

——-补充——–
发现针对ie的只需用overflow:visible;就可以了。有些纳闷了。。。

   

  第一次真正设计的网站页面,可惜夭折了 作者:ONEBOYS    发表时间: 2009年01月11号,星期天     阅读:1,404 次  

本来设计对我来说就是半吊子。
这个页面是给同学公司做的,不过人家不喜欢,嫌东西少。
的确,细节上没怎么设计好,总的来说是单调了。
保存留念。

   

  互联网发展史 作者:ONEBOYS    发表时间: 2009年01月9号,星期五     阅读:1,144 次  

此视频使用一种叫做PICOL的信息图片做成。PICOL的全称是:绘图交流语言(Pictorial Communication Language),其网站为: picol.org