`

由图形化按钮引出的相关hack

阅读更多

原文转自 小麦 http://www.mikkolee.com/73

图形化按钮,就类似这个样子的:

当然,它其实就是一张图片而已。这样做纯粹是为了好看。这里探讨的不是怎么设计这种按钮,而是怎么在网页里把它做出来。这里要提几个要求:
A. 语义化。如果这个按钮叫“完成注册”,就要在HTML中写出这四个字,以保证只读HTML的情况下也知道这个按钮是什么文字。
B. display:inline。用display:block可以很容易的调整大小。但是如果一横排并列两个按钮,就比较难解决。用float?不好。万一我需要两个按钮并排,且居中,用float会增加更多额外的代码。
C.理所当然,跨平台兼容性。所以inline-block的想法,在IE6上就行不通。

有几种方法可以做这种按钮:
1. 用image类型的input标签,或是button标签。这样做最大的问题是,必须在HTML里引用图片地址。我个人是倾向于不要将修饰图片地址放在HTML代码里。结构和表现要分离嘛。此外,用button环绕img,你会惹一堆布局上的麻烦。

2. 用a标签,CSS加背景。这种方法挺容易。但是有几个问题:
a) 对inline的a标签设置高宽,你会遇到一堆麻烦事儿。
b) 此外,为了达到要求A,需要在a里面写入文字,并且将文字隐藏掉。这里如果用text-indent的话,就不能用inline了。另外一个方法是 vertical-align,但是,这个属性基本上被我废止。原因是vista里,用微软雅黑及vertical-align,你会遇到很可怕的事情 。记住要求C:跨平台兼容性。
c) 用a标签,你还得写JS来提交表单,麻烦。

3. a标签环绕图片。这个同样不是太好,理由在1和2里都有讲。(但它倒是可以满足要求B:display:inline)

4. 用buton类型的input,加CSS背景。这种方法看上去是可以满足要求A和B。关键的问题是:在保证跨平台兼容性的同时,如何隐藏掉button的文字。

我这里给出一个比较好的方法:

input {
    border:none;
    width:120px;
    height:24px;
    background:url(http://www.mikkolee.com/blog/wp-content/uploads/2008/11/login.png) no-repeat 0 0;
    text-indent:-3000px;
    overflow:hidden;
    cursor:pointer;
}
* input {*text-indent: 0;*padding:0 0 0 120px;}  /*hacked for IE*/


解释一下:在FF3和Chrome中,将按钮的text-indent设为-3000px,就可以将文字隐藏。但同样的设置在IE下,会导致按钮本身也跟着跑到-3000px的位置去,除非按钮被声明为display:block(但这就不满足要求B了)。

对此有一个巧妙的解决办法:首先用hack在IE里将text-indent恢复。然后再将左padding设置成120px,和width一样。这个方法之所以很妙,是因为按钮是唯一一个不遵守盒模型的元素 ,无论在哪个浏览器下。所以将左padding设为和width一样宽,会将真正的文字空间压缩到0!。

但是这个解决办法在FF中却会有问题。原因是,即使文字空间压缩到0,FF仍然会将文字显示出来,而不受overflow的影响(事实上这样处理是符合标准的,理由自己思考一下)。所以仍然要写text-indent。

还有一个问题是,在Opera里,左padding要设为差不多180才能将文字隐藏。原因不详。至少我用的9.2版本是如此。所以上面的代码在Opera中并不兼容,需要再单独为Opera做hack。

还有一层更深入的思考:那为啥不就将padding: 0 0 0 180px以正常的形式写到CSS中呢?这个就作为思考题啦,提示一下,180px会对FF造成不利影响。

综上呢,我给的代码是多一不可,缺一不可的(当然,我没写对Opera的变态hack,因为这家伙已经开始背叛标准了,而且不同版本之间兼容性很差,所以放弃掉它)。

此外还可以补充一下,cursor:pointer是为了增强可用性。这是个很奇怪UX问题,如果是正常的button,鼠标不改变,也不会觉得奇怪。但是如果按钮没有突起感,鼠标移上之后不变形,就会感觉是不可点。

分享到:
评论

相关推荐

    EAS模板引入引出

    ### EAS模板引入引出知识点详解 #### 一、EAS系统简介 EAS(Enterprise Application Suite)系统是一种广泛应用于企业内部管理的信息技术平台。它能够集成企业的各种业务流程,如财务管理、人力资源管理、供应链...

    redis-desktop-manager-0.8.8.384.exe redis桌面图形化工具

    Redis Desktop Manager是一款强大的开源软件,专门用于管理Redis数据库的桌面图形化工具。它为用户提供了一个直观、用户友好的界面,使非技术用户也能轻松地与Redis进行交互。这个工具简化了Redis数据库的日常管理和...

    新人教版数学四年级下册第七单元《图形的运动》教学设计.pdf

    在情境导入中,教师通过展示教材第82页的轴对称图形,引导学生观察和欣赏图形,并引出问题:这些图形漂亮吗?它们有什么特征?学生讨论后,教师明确:这些图形都是轴对称图形。如果一个图形沿着一条直线对折,两侧的...

    K3_BOM单引出引入方法.doc

    在IT行业的ERP(企业资源规划)系统中,K3系统是一款广泛应用的企业管理软件,由金蝶软件开发。其中,BOM(Bill of Materials,物料清单)是制造行业中一个非常重要的概念,它列出了产品结构中所有组件、子组件、...

    引出端及整体安装件强

    根据提供的信息,我们可以了解到这份文档主要涉及的是GBT 2423.60-2008《电工电子产品环境试验 第2部分:试验方法 试验U:引出端及整体安装件强度》的相关内容。虽然部分内容仅显示了标准分享网站的信息,并没有提供...

    计算机图形学试题及答案

    参数法适合表示数学定义的图形,而点阵法则用于表示像素化的图像。 3. **逐点比较法**:这是一种绘制直线的算法,每绘制一个像素点就与理想直线进行比较,以确定下一个像素的位置。 4. **连通多边形**:如果在...

    K3标准凭证引入、引出

    ### K3标准凭证引入、引出相关知识点 #### 一、概述 金蝶K3是一款广泛应用于企业财务管理的软件,其强大的凭证引入引出功能极大地提高了财务工作的效率。本文档旨在帮助用户理解K3凭证引入引出的基本概念、操作...

    欧姆龙小型导线引出型(非变调光) EE-SX91.pdf

    欧姆龙小型导线引出型(非变调光) EE-SX91pdf,欧姆龙小型导线引出型(非变调光) EE-SX91:通过M3螺钉安装,满足客户对小型化传感器的需求。“入光时ON”和“遮光时ON”两种输出。尺寸小巧,有5种型号备选,故而应用...

    金蝶AIS账套数据引出工具V1.0

    四、电脑上的office环境无法引出数据(特别是只安装了WPS的情况下某些异常情况时) 五、忘记账套密码时查看数据 六、引出内容包括:科目资料表,核算项目表,记账凭证,核算分类表 使用方法: 1.先打开附带的引出...

    一年级数学下册认识图形二说课稿PPT学习教案.pptx

    - 通过谈话导入,回顾上学期学习过的立体图形,如圆柱体、正方体、长方体和球,然后引出平面图形的概念。 - 学生活动:观察和触摸立体图形,发现它们的某个面是平的,理解“面”的平直特点。 - 学生分组归类平面...

    小学数学认识图形说课PPT学习教案.pptx

    - **导入新课**:通过故事引出各种立体图形,激发学生的好奇心。 - **自主探索**:让学生观察并理解平面图形来源于立体图形的表面。 - **合作交流**:小组活动,让学生尝试将立体图形的面转移到纸上。 - **拓展...

    中班数学:复习几何图形.doc

    首先,通过“引出课题”环节,教师逐步展示四种图形,引导孩子们识别并描述它们的特征。这种方法能够吸引孩子们的注意力,同时让他们在观察和表达中加深对图形的认识。 接下来是“游戏稳定”环节,这是教学的重点。...

    一年级数学下册《认识图形》教案1 北师大版.doc

    为此,教师需准备多媒体课件、立体图形实物、平面图形以及相关操作材料,如白纸和彩笔。 教学流程分为引入新课、探究新知和巩固拓展三个阶段。首先,通过展示漂亮的城堡,引导学生识别不同形状的立体图形,并引出...

    电子功用-改善了散热性及轻量化的输出端子前方引出式电容器用外壳

    从标签“资料 文档”可以推断,压缩包内包含的"改善了散热性及轻量化的输出端子前方引出式电容器用外壳.pdf"是一个PDF文档,详细阐述了相关的技术资料,可能是研究报告、产品手册或者技术规格书。 在电容器设计中,...

    2020春一年级数学下册四有趣的图形第1课时认识图形教案北师大版

    课程流程包括以下几个环节:首先,通过创设城堡情境,引出平面图形的概念,让学生初步了解并说出已知的图形名称。接着,让学生在实物中寻找平面图形,体验“面”在“体”上的概念,理解平面图形的平滑特性。然后,...

    图形娃娃找家.doc

    在活动中,教师首先通过引入“图形妈妈”这一角色,激发孩子们的兴趣,让孩子们了解图形妈妈因为找不到她的宝宝而伤心,从而引出寻找和分类图形娃娃的任务。这个环节旨在以生动有趣的方式吸引幼儿的注意力,使他们在...

    幼儿园小班数学教案 认识图形.doc

    - **故事引入**:通过讲述小白兔房子被风吹破的故事,引出不同形状的房顶(三角形)、房身(正方形)和门(圆形),让幼儿在故事情境中自然接触和讨论这些基本图形。 - **复习图形**: - 展示“花招箱”,老师...

    五年级数学上册 组合图形的面积 1教案 北师大版 教案.doc

    教学设计分为五个环节:首先,通过复习已学的基本图形及其面积公式,引出组合图形的概念。然后,通过实际问题(如计算客厅地板面积),引导学生观察图形特点,尝试独立或小组合作解决问题。在这个过程中,重点讨论...

Global site tag (gtag.js) - Google Analytics