巧妙利用label标签去除按钮点击或者submit按钮的黑框线

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

HTML的label标签大家应该不会陌生,什么?没用过?那可以好好看下aoao的这篇《各位大大行行好,给checkbox配个老婆(label)吧》文章。一般在表单中使用,给类似的checkbox或者radio框配上label,明显有助于改善用户体验。

这里借用一下aoao的测试示例:


点啊点啊点这里也没用

上面测试示例的代码如下:

1
2
3
<input type="checkbox" name="testtest" id="testtest" />
<label for="testtest">点啊点啊点这里</label><br />
<input type="checkbox" name="testtest" />点啊点啊点这里也没用

好了,明显感觉的出点文字就能勾选的舒坦吧,当然要使这个label生效,我们只需要给input配一个唯一的id号,然后label标签使用for属性写上这个id号就可以了,当然不希望使用id号的话可以通过下面这种方式使用label功能:

1
2
3
4
<label>
<input type="checkbox" name="testtest" />
点啊点啊点这里
</label>

其实就是把input放到label里。好了,说了这么多,其实主要为接下来的正文铺垫一下。

现在做Web UI的都希望自己表单的input按钮多么多么美观,于是使用各种按钮背景,一般情况下我们这样考虑我们按钮的背景:

登录.png

这个背景可以采用简单的渐变或者高光背景然后repeat-x,边框直接设置border就可以了,似乎这种想法没有问题,比如下面简单的渐变背景:

按钮背景.png

然后采用下面的样式针对于按钮(这里CSS进行了简略处理,只作为演示,不保证每个浏览器效果一致):

1
2
3
4
5
6
.button {
  background:#fff url("btnbg.png") repeat-x 0 center;
  height:25px;
  width:130px;
  border: #707070 1px solid;
}
1
<input type="button" class="button" value="登录" />

然后我们的按钮显示如下:

登录按钮演示.png

恩,很好,貌似也没有什么问题,但是我们打开IE7或者IE6浏览器,点击这个按钮的时候就会发现问题所在了:

浏览器测试按钮黑框.png

好吧,万恶的IE,不过IE9下没发现什么问题,IE8没有测试,如果说你不建议点击时的黑框的话,那么如果我们把type设置为submit,是的,提交表单经常需要submit按钮,就像下面这样:

1
<input type="submit" class="button" value="登录" />

你会发现submit初始状态就是这种焦点获取的黑框样式:

submit按钮黑框.png

怎么办?如果设置border:none,也就是说不要border,那么这种黑框就没有了,所以有种解决办法是直接把框写死到背景上,然后去除border,即设置border:none。比如下面这个按钮样式的背景罗列。这种办法的缺点想必大家都清楚,就是灵活性差了点,有多少size的按钮就要准备多少size的背景。

各类按钮背景.png

一直以来我也很天真的认为就这么一种办法了,直到我膝盖中了一箭,偶然一次查看FaceBook的HTML代码发现了其高明之处,FB也使用了边框border,背景是背景的分离办法,但是其在IE7或者IE6下就是没有黑框,实现方法很巧妙,就是利用了label的特性,具体思路就是input按钮去除框线(border:none),然后input外面套上label,border写到label上,由于input被去除了border,所以不会出现黑框,同时外面的label有border,所以用户可以看到正常的框线,当然由于label的特性,你点击label的时候也等于点击了input按钮,哦,对了,为了模拟得更好一点,你可以设置他们的cursor为pointer,改良版的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<style type="text/css">
.button-fixed {
  background:#fff url("btnbg.png") repeat-x 0 center;
  height:25px;
  width:130px;
  border: none;
  margin:0;
  cursor: pointer;
}
 
.button-wrapper {
  display:block;
  padding:0;
  width:130px;
  border: #707070 1px solid;
  cursor: pointer;
}
</style>
label模拟去黑框普通button按钮
<br />
<label class="button-wrapper">
    <input type="button" class="button-fixed" value="登录" />
</label>
<br />
label模拟去黑框submit按钮
<br />
<label class="button-wrapper">
    <input type="submit" class="button-fixed" value="登录" />
</label>

好了,label的又一个妙用我就讲到这里啦!测试代码这里下载:按钮黑框测试.zip

若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!

请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注