好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

html5教程-letter-spacing+first-letter实现按钮文字隐藏

小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

&nbs p;

一、文不在长,有货则灵

图片式按钮的文字隐藏看来是大家都比较关注的一个问题(分享讨论、微博转发等可见一斑), text-indent 负值为最常用方法,然问题有三:

较大的负值有 性能问题 ,例如新浪/腾讯微博提交按钮的 -9999em ,大概12~16万像素的宽度,相对于100个显示器宽度,在低配Android pad上,尤其含动画效果的时候,会直接卡爆; FireFox浏览器下虚框。其实问题不大, overflow:hidden 可修复; 不能应用在IE6/IE7伪 inline-block 水平元素上,否则元素会被 text-indent 拐走。

即使有人提出:

{ text-indent: 100%; white-spacing: nowrap; overflow: hidden; }

除了性能有所缓解,后面两个问题依旧存在。

二、法不在高,能用则行

上周分享,有同行提到另外一个隐藏之法,简称为: font: 0/0 a 法。

释义为,字号大小 0 , 行高 0 ,字体 a 是因为就一个字母,换成 b 也是OK的,实际并无 a 字体。日本高中社团要至少4个人才能成立,游泳社就3个人,于是就去田径队找了个旱鸭子来充数,这个旱鸭子就是这里的 a .

一般要配合 overflow: hidden 使用。

实例顶千言,您可以狠狠地点击这里:font:0/0 a与按钮文字隐藏demo

CSS 代码如下:

. BT n {     dis play : inline-block;     width: 52px; h ei ght: 25px;     border: 0;     background:  # f0f0f0 url(/study/image/flash_copy_btn.png);     font: 0/0 a;     overflow: hidden;    /* 抹掉a标签按钮最上面的小点 */ }

说明:

网上有说法是Ch rom e下需要添加 color: transparent , 不过 据我win7 C hr ome浏览器查看,没什么问题,因此CSS中无此声明; overflow: hidden 用来解决IE6浏览器下, a 元素等模拟标签下最顶部残存小点点的问题。 对于原生的 button 按钮元素,此方法表示无能为力,低版本IE浏览器下,小点点依旧存在,如下放大后的截图:

相比 text -i ndent 负值缩进,此方法优点在于可以应用在 inline-block 水平元素上;不足在于不能用在原生的 button 按钮元素上。

因此,还有改进余地以及寻找更好方法的动力。

三、斯是吾法,齐论德馨

此方法是我午饭后打瞌睡的时候想到的,一句话概括就是 let ter -s pacing 负值+ First -letter 伪元素负值实现。

对于新方法,先展示效果才能让 别人 有继续深入的兴趣。您可以狠狠地点击这里:letter-spacing/first-letter与按钮文字隐藏demo

IE6浏览器下的截图如下:

CSS代码如下:

.btn {     display: inline-block;     width: 52px; height: 25px;     border: 0;     background: #f0f0f0 url(/study/image/flash_copy_btn.png);      letter-spacing: -3em;      overflow: hidden; } .btn:first-letter {      m arg in-left: -20em;  }

1. 关于letter-spacing负值
letter-spacing 控制字符间距,可以是负值,可以让字符水 平方 向重叠,甚至倒序排列,如值为 -2em 时候。选择下面下拉值,可以看到不同 letter-spacing 大小对应效果:

更改letter-spacing大小: 2em 1em 0 -1em -2em

我是测试文字!

(function() { VAR eleSel = document.getElementById("letterSpacingSel"), eleP = document.getElementById("letterSpacingP"); eleSel.onchange = function() {eleP.style.letterSpacing = this.value + "em";};})();

于是,如果按钮 text-align 为 left 的话, letter-spacing 值在小于 -2em 的时候,字符都跑到了首字符的左侧(也就是在按钮的外面)。一旦按钮设置了 overflow:hidden , 除了第一个字符,其余字符都隐藏了 !

2. 关于first-letter伪元素
first-letter 伪元素与 first-line 伪元素实际是表兄弟关系, first-line 可以实现IE6/IE7的单标签多背景效果,前不久刚介绍,那 first-letter 呢?

顾名思意, first-letter 控制第一个字符的样式,IE5.5 开始 支持,支持的样式有(参考自MDN):

所有字体相关属性: font , font-style , font-variant , font-weight , font-size , line-height 以及 font-f ami ly . 所有背景相关属性: background-color , background-image , background-pos IT ion , background-re PE at , background-size , 以及 background-attachment . 所有 mar gin 相关属性: margin , margin -t op , margin-right , margin-bottom , margin-left . 所有 padding 相关属性: padding , padding-top , padding-right , padding-bottom , padding-left . 所有border相关属性:缩写的 border , border-style , border-color , border-width 及普通书写的属性。 color 属性。 text-decoration , text-transform , letter-spacing , word-spacing (合适情境下), line-height , float , vert ical -align (只有当 float 为 none 的时候)这些CSS属性们.

要隐藏第一个字符,我采用的就是 margin 负值。例如:

.btn:first-letter {     margin-left: -20em; }

于是, 字符们全部都隐藏了 !

当然,还是有些需要说明的。

3. 其他一些说明:

此方法兼容IE6+, 适用于 inline-block 水平元素,且适用于 button 元素,不过,需要是下面这种写法:

<button type="button/s ub mit">按钮</button>

而不能是这样子:

<input type="button/submit" value="按钮" />

此方法受 text-align 属性影响。 letter-spacing 负值+ first-letter 的 margin 负值适用于 text-align:left; 的情况,如果按钮 text-align 为 right ,则 letter-spacing 以及 first-letter 的 margin 需要使用正值。

值的大小其实没有定值。一般, letter-spacing 绝对值 大于 2em 可以,首字符 margin 可以大一些,demo中是 -20em . 多个 :first-letter 伪元素不要使用逗号分隔,貌似会全部失效,应分开写 使用逗号分隔的时候逗号前面一定要留一个空格,就跟众所周知的 { 前面要留有空格一样,否则,IE6浏览器会忽略这条声明:

  .btn:first-letter, . img :first-letter {     margin-left: -20em; }   .btn:first-letter ,     /* 逗号前需有1个空格 */  .img:first-letter {     margin-left: -20em; } 

未大规模测试,欢迎反馈问题。

在实际应用的时候,我们可以把该功能的CSS独立出来,公共使用,例如:

.notext {     text-align: left;     letter-spacing: -3em;     overflow: hidden; } .notext:first-letter {     margin-left: -20em; }

四、不是会两句古诗就了不起的

其实呢,如果不要兼顾原生 button 按钮,还可以使用 padding 撑开容器 尺寸 隐藏文字的方法,类似下面:

.btn {     display: inline-block;      padding-top: 25px;      width: 52px; height:  0 ;     background: #f0f0f0 url(/study/image/flash_copy_btn.png);     overflow: hidden; }

代码少,理解 简单 ,兼容性还不错。就是不能用在正宗的按钮元素上(IE6/IE7直接隐藏抗议)。

五、孔子曰:“何陋之有?”

letter-spacing + first-letter 隐藏文字的方法动用了伪元素,方法虽糙,但效果不糙。我个人 觉得 比前两种方法都要好一些,您觉得呢?

行文仓促,文中难免有表达不准确之处,欢迎指正;如果有技 术 性错误,务必指出,感谢阅读!

@H_ 512 _349@

(本篇完)

觉得可用,就经常来吧! 欢迎评论哦!  html5教程 ,巧夺天工,精雕玉琢。小宝典献丑了!

总结

以上是 为你收集整理的 html5教程-letter-spacing+first-letter实现按钮文字隐藏 全部内容,希望文章能够帮你解决 html5教程-letter-spacing+first-letter实现按钮文字隐藏 所遇到的问题。

如果觉得 网站内容还不错, 推荐好友。

查看更多关于html5教程-letter-spacing+first-letter实现按钮文字隐藏的详细内容...

  阅读:62次