原文转自 小麦 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(Enterprise Application Suite)系统是一种广泛应用于企业内部管理的信息技术平台。它能够集成企业的各种业务流程,如财务管理、人力资源管理、供应链...
Redis Desktop Manager是一款强大的开源软件,专门用于管理Redis数据库的桌面图形化工具。它为用户提供了一个直观、用户友好的界面,使非技术用户也能轻松地与Redis进行交互。这个工具简化了Redis数据库的日常管理和...
在情境导入中,教师通过展示教材第82页的轴对称图形,引导学生观察和欣赏图形,并引出问题:这些图形漂亮吗?它们有什么特征?学生讨论后,教师明确:这些图形都是轴对称图形。如果一个图形沿着一条直线对折,两侧的...
在IT行业的ERP(企业资源规划)系统中,K3系统是一款广泛应用的企业管理软件,由金蝶软件开发。其中,BOM(Bill of Materials,物料清单)是制造行业中一个非常重要的概念,它列出了产品结构中所有组件、子组件、...
根据提供的信息,我们可以了解到这份文档主要涉及的是GBT 2423.60-2008《电工电子产品环境试验 第2部分:试验方法 试验U:引出端及整体安装件强度》的相关内容。虽然部分内容仅显示了标准分享网站的信息,并没有提供...
参数法适合表示数学定义的图形,而点阵法则用于表示像素化的图像。 3. **逐点比较法**:这是一种绘制直线的算法,每绘制一个像素点就与理想直线进行比较,以确定下一个像素的位置。 4. **连通多边形**:如果在...
### K3标准凭证引入、引出相关知识点 #### 一、概述 金蝶K3是一款广泛应用于企业财务管理的软件,其强大的凭证引入引出功能极大地提高了财务工作的效率。本文档旨在帮助用户理解K3凭证引入引出的基本概念、操作...
欧姆龙小型导线引出型(非变调光) EE-SX91pdf,欧姆龙小型导线引出型(非变调光) EE-SX91:通过M3螺钉安装,满足客户对小型化传感器的需求。“入光时ON”和“遮光时ON”两种输出。尺寸小巧,有5种型号备选,故而应用...
四、电脑上的office环境无法引出数据(特别是只安装了WPS的情况下某些异常情况时) 五、忘记账套密码时查看数据 六、引出内容包括:科目资料表,核算项目表,记账凭证,核算分类表 使用方法: 1.先打开附带的引出...
在这一阶段,设计了三个与图形相关的游戏:“捉迷藏”游戏让孩子们在背景图中寻找并计数图形,通过游戏的方式加强他们对图形的识别能力;“小小邮递员”游戏则是将图形与实际生活结合,孩子们需要根据动物的喜好,...
- 通过谈话导入,回顾上学期学习过的立体图形,如圆柱体、正方体、长方体和球,然后引出平面图形的概念。 - 学生活动:观察和触摸立体图形,发现它们的某个面是平的,理解“面”的平直特点。 - 学生分组归类平面...
- **导入新课**:通过故事引出各种立体图形,激发学生的好奇心。 - **自主探索**:让学生观察并理解平面图形来源于立体图形的表面。 - **合作交流**:小组活动,让学生尝试将立体图形的面转移到纸上。 - **拓展...
- **故事引入**:通过讲述小白兔房子被风吹破的故事,引出不同形状的房顶(三角形)、房身(正方形)和门(圆形),让幼儿在故事情境中自然接触和讨论这些基本图形。 - **复习图形**: - 展示“花招箱”,老师...
8. 电力照明和电信布置图形符号:包括发电厂和变电所、电信局局和机房设施、线路、配线、电什、配电箱、控制台、控制设备、用电设备、插座、开关和照明灯照明引出线等。 电气图形符号大全还包括其他一些类别,如...
1. **创造性思维活动**:这是图形创意的创新源泉,通过独特的思考方式,如逆向思维(由结果推演出原因)和发散思维(由一点引出多点创意),推动设计的创新和突破。 2. **逆向思维**:这是一种反向推理的思考方式,...
6. **标准化和兼容性**:随着电子政务的标准化发展,电机引出线固定结构也需要符合相关行业标准,以便与其他系统或设备无缝对接。 7. **成本效益**:在满足以上要求的同时,还需要考虑到成本控制,选择性价比高的...