CSS文本渐变效果

翻译自:web designer wall

另一篇CSS Decorative Gallery我觉得使用的技巧是一样的。

你不想打开PhotoShop制作每一张标题文字图片的渐变效果吧,这次是一个简单的技巧——仅仅使用一张PNG图片来实现所有的标题文本的渐变效果(纯CSS,不添加任何javascript或者flash)。仅仅在<hx>使用一个空的<span>,运用背景图片设置position:absolute覆盖在文本上。这个技巧几乎在所有浏览器上都工作得很好:FireFox,Safari,Opera,就连IE6也很好。想知道如何做的么,继续阅读吧。

Demo

下载示例

特点

  1. 纯CSS技巧,很好的兼容性(include IE6)
  2. 绝佳的美化标题的技巧,不用PS每张标题图片
  3. 可运用与任何web字体,并且文本是可以缩放的

它是如何工作的?

非常简单,在文本上方重复平铺1px宽度的经过透明处理的PNG图片。

screen1

 

Html结构

 

<h1><span></span>CSS Gradient Text</h1>

 

CSS

关键点在于

h1{position:relative}

h1 span{position:absolute}

 

h1 {
  font: bold 330%/100% "Lucida Grande";
  position: relative;
  color: #464646;
}
h1 span {
  background: url(gradient.png) repeat-x;
  position: absolute;
  display: block;
  width: 100%;
  height: 31px;
}

 

就是这么简单,点击示例查看效果。

IE6 Hack

IE6不支持PNG-24,在IE6中要显示透明的PNG下面的这个Hack是必须的(添加在<head>标签的

任何地方).

 

<!--[if lt IE 7]>

<style>
h1 span {
  background: none;
  filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='gradient.png', sizingMethod='scale');
}
</style>

<![endif]-->

jQuery prepend版本(语义化Html文档)

不想在<hx>中添加空的<span>影响语义化编码,你可以用jQuery prepend添加。

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){

  //prepend span tag to H1
  $("h1").prepend("<span></span>");

});
</script>

更多的实例

screen2

不夸张的说,你可以使用这个技巧在所有固定背景颜色的元素上(保持渐变PNG的颜色和背景颜色一样)。

screen3

screen5 

screen4

screen6

screen7

screen8

花样/纹理

也可以用有花纹纹理的背景图片,下面是一个斑马效果的例子,看,多么的具有想象力!

screen9

限制和不足之处

  1. 只能对固定的<hx>背景颜色有用,你的<span>背景图片必须和其一个颜色
  2. 兼顾IE6的话必须使用IE PNG hack
  3. 如果标题文本完全被覆盖的话将无法选择文本
posted @ 2009-12-21 14:18  island205  阅读(1104)  评论(2编辑  收藏  举报