中文按钮完美显示方案

2008-12-20 14:17:30

先看这段代码在不同浏览器中的表现。

代码:

<input type="submit" value="提交" /> <input type="submit" value="按钮左右左右内边距会随文本自动增加" /> <input type="reset" value="重置" />

在各浏览器中的表现:

可以明显观察到在默认样式下IE6/7中文按钮显示主要存在两个问题:

  1. 文本无法正常垂直居中
  2. 按钮中文本与左右边框的间距会随文本长度变化,而不是一个固定值

那么一个按钮正常的默认样式是怎么样的?我们可以通过Firebug观察button的“盒模型”,如下图:

Firefox中按钮默认有2px的边框,6px的左右内边距。

注意:以上测试都是在windows经典主题下完成,而不同主题下的按钮的样式是有所差别的。比如我最初使用的MCE 2005主题下按钮的边框宽度为3px。

在上面的测试中似乎IE8 beta2已经比较完美了,其实不然。我们对按钮的高度做一些改变,你就会发现IE8还没有想象中的完美,如下图:

可以看到,事实上IE8(b2)中,按钮中的文本(包括英文文本)是固定在距按钮上边框4px的位置,看起来情况比IE6/7还要糟糕!当然IE8(b2)已经解决了左右内边距随文本变化的问题,而且IE8也还是beta版本,希望能在正式版中修复这些问题。

而对于IE6/7(更低版本没测试)中按钮文本与左右边框的间距随文本长度变化的问题就不仅限于中文文本的按钮,所以似乎早在05年就有人提出了解决办法:http://jehiah.cz/archive/button-width-in-ie

具体方法即是重置padding:

.button{
    overflow:visible; /* for ie6/7 */
    padding:0 6px;
}

该方法存在一个明显的缺点:IE6/8中按钮的高度会增加1px。

(更新说明:经过进一步测试发现IE6/7中文本与左右边框的间距并不是附加在按钮上的左右内边距,而是附加在文本上的某种边距。个人认为overflow:visible;在此正是用于清除该边距。)

而对于中文文本无法正确居中对齐的问题,在我和TZ讨论一天后似乎也没找到一个比较满意的解决方案。暂时只能通过line-height来解决,而且还得使用hack来解决重置padding后增加的1px高度问题。

line-height的具体取值就去这里看看吧:http://fedcn.org/?p=3

XHTML&CSS_reference

2008-11-03 11:31:10

和TZ一起弄的,多的不说了,拖了很长时间了,由于各种原因,与初衷相去甚远。XHTML手册比较像手册,CSS的就像本教程了。但是如果说是教程又显得简单了点,说是手册又详细了点,都不像了~···但是还是有一定参考价值的,比较详细地介绍了一些XHTML和CSS最基础的东西~···
BI地址:http://bbs.blueidea.com/thread-2894326-1-1.html

纯CSS实现tab切换

2008-10-29 22:01:40

Demo

前两天在一个页面中使用锚点时偶然发现了纯CSS实现tab切换的方法,其实在很久很久以前就有人实现过了,但是我从没留心过,也从没看过具体的实现方式。因为JS其实也很简单,但是如果纯CSS能实现当然再好不过了。

但是,遗憾的是这种方法opera不支持~同时这种方法确实限制也比较多,比如往往需要设置另外的样式来区分当前激活的tab,纯CSS显然是无法做到的。所以如果要求不是很高,不用兼容opera,这种纯CSS的写法还是可以选择的!

wordpress主题—ND

2008-10-28 21:30:38

前几天说要做个主题,原因有四:

  1. 原来的techicon真的用了很久了,虽然很好,还是视觉疲劳了
  2. techicon不是自己做的,虽然我改了很多东西~···
  3. techicon的宽度是固定的,晚上回家用宽屏看,很不爽~
  4. 呃~没有4了~···

其实早就在说自己做个theme,也画过好几张图,也写了几段代码,但是每次在中途就被我自己扼杀在摇篮中~:)

ND其实和techicon在布局上差别不大,我太喜欢techicon的三栏布局了,所以继续沿用。配色最开始主体部分用的白色背景,着实闪眼睛,液晶屏更甚,所以最后加了点灰色,减小了对比度,看着舒服多了。

遗憾:

  1. CSS中两处使用了hack~···(静态页面很完美,套上WP的主题标签,出问题了~至今没有得解!)
  2. Micro-Blogging页面fanfou API中的时间格式太BT了吧~很脑残!
  3. widget支持有点问题,但是我不用widget,无视~···

Firefox,Opera不支持通用字体系列名定义

2008-10-13 12:27:07

为了保证页面字体的通用和兼容性,通常都会为字体设置一个字体系列,而且往往会在最后加上该类别字体的通用字体系列名。如:

p{font-family:Arial, Helvetica, sans-serif;}
h1{font-family:"Times New Roman", Times, serif;}
pre{font-family:"Courier New", Courier, monospace;}

但是事实证明Firefox和Opera并不支持通用字体系列名称的字体定义!事实说明一切

2008-10-14日更新

非常感谢Csineneo的留言,Firefox和Opera必须手动设置通用字体方可生效!但是我仍然有一点疑问,不管是FF还是Opera这个过程都无疑增加了用户的使用难度,而且用户“不准确”的设置必然影响页面的显示效果,毕竟不是所有的用户都知道哪些字体属于衬线字体,哪些字体属于非衬线字体,哪些字体属于等宽字体~···难道FF和Opera无法自动选择合适的通用字体?

附:List Of Web Safe Fonts

textarea,input和select的继承性

2008-09-11 13:22:12

在目前我所有的浏览器中,textarea,input和select这三个标签默认无继承性。测试

IE8 beta2和非IE浏览器中通过为样式属性指定继承性(inherit)可解决该问题。测试

IE7及以下版本此三个标签的继承性问题尚无法解决。只能通过另为其书写样式达到效果。测试

不可能完成的任务

2008-09-01 12:09:20

唉,我怎么会认为它是不可能完成的任务呢~···

要求:1.完成如上布局;2.#main宽度自适应;3.代码顺序#header、#main、#sidebar、#footer。

如果#sidebar能放在#main前面当然就非常简单了~···但是不可以~···

最终解决方案:(查看演示

<!--css-->
#header{height:80px; background:#CCC;}
#center{overflow:hidden; zoom:1;}
#main_wrapper{float:left; width:100%; margin-top:10px; margin-left:-210px;}
#main{height:400px; margin-left:210px; background:#999;}
#sidebar{float:right; width:200px; margin-top:10px; height:450px; background:#AAA;}
#footer{height:50px; margin-top:10px; background:#CCC;}
<!--css-->
<!--xhtml-->
<div id="center"></div>
<!--xhtml-->

囧~···鸡蛋,白菜,鞋底板~···来的更猛烈些吧~···

还有其他方法么?欢迎补充~···

BTW:来两个三列的12

不同浏览器对表格边框处理差异

2008-07-30 17:43:46

最近一直和表格打交道,发现各浏览器对表格边框的处理不尽相同,以致影响到最终的显示。这一问题主要是Firefox与非Firefox浏览器对表格边框处理上的差异。

可简单地用以下表达式表示(tableWidth为表格的视觉上的实际宽度,width为定义宽度):

FF:tableWidth = width+borderWidth/2

非FF浏览器:tableWidth = width;

测试l链接

FF中可能导致的问题

补充:尽管FF中表格在视觉上的宽度大于定义宽度,但其在文档中的实际宽度仍是最初的定义宽度,故其不会在文档中占用其定义大小外的空间。测试链接

td之overflow:hidden

2008-07-08 16:08:25

table-layout

语法:
  table-layout : auto | fixed
  参数:
  auto : 默认的自动算法。布局将基于各单元格的内容。表格在每一单元格读取计算之后才会显示出来。速度很慢
  fixed : 固定布局的算法。在这算法中,水平布局是仅仅基于表格的宽度,表格边框的宽度,单元格间距,列的宽度,而和表格内容无关

隐藏对象内的多余文本,一般做法:

selector{width:*px; white-space:nowrap; overflow:hidden;} 但是这段代码用在td上不会生效,单元格依然会被撑开~···

解决办法:同时为其table定义width:*; table-layout : fixed OK:多余文本已经被自动隐藏

WordPress纯净主题

2008-07-08 09:39:20

5key那里的,很早前在GR里看到,后来又找很久,刚才翻GR又无意翻到~记下~···

原文地址:http://5key.net/blog/index.php/2008/06/10/wordpress-theme-framework-whiteboard/

Page 1 of 3123»