jQuery实现的立体文字渐变效果

先截两个图看看:

效果很不错吧?会不会误以为这些字体是图片?这可不是图片,而是用JS实现的

在线演示 http://demo.phpstudy.net/js/gradient-test/demo.htm

下面来简单分享下实现过程及原理(网站中使用了jquery这个lib,我们这里就不再自己单独实现了,我们这里分享的也是jquery的实现方法):

HTML代码:

复制代码 代码如下:

© 2009 Dragon Interactive. All Rights Reserved.

为了便于代码重用,我们通过class来标识出哪些文字需要增加这个特效,这里用的是rainbows。

CSS代码:

复制代码 代码如下:

.rainbows{position:relative;display:block;} .rainbow { background: transparent; display: block; position: relative; height: 1px; overflow: hidden; z-index: 5; } .rainbow span { position: absolute; display: block; top: 0; left: 0px; } .rainbows .highlight { color: #fff; display:block; position: absolute; top: -2px; left: 0px; z-index: 4; } .rainbows .shadow { color: #000; display:block; position: absolute; opacity: 0.5; filter:alpha(opacity=50); top: 2px; left: 2px; z-index: 3; }.rainbows{position:relative;display:block;}

.rainbow {

background: transparent;

display: block;

position: relative;

height: 1px;

overflow: hidden;

z-index: 5;

}

.rainbow span {

position: absolute;

display: block;

top: 0;

left: 0px;

}

.rainbows .highlight {

color: #fff;

display:block;

position: absolute;

top: -2px;

left: 0px;

z-index: 4;

}

.rainbows .shadow {

color: #000;

display:block;

position: absolute;

opacity: 0.5;

filter:alpha(opacity=50);

top: 2px;

left: 2px;

z-index: 3;

}

这里主要说明下highlight和shadow这两个class的意义,其实从字面也基本可以理解,这两个class是为了增加字体的立体性而设定,一个是白色的高亮,一个是黑色阴影。

JS部分:

复制代码 代码如下:

function initGradients(s) { $(function() { $(s).each(function() { var el = this; var from = $(el).attr('gradFromColor')||'#ffffff', to = $(el).attr('gradToColor')||'#000000'; var fR = parseInt(from.substring(1, 3), 16), fG = parseInt(from.substring(3, 5), 16), fB = parseInt(from.substring(5, 7), 16), tR = parseInt(to.substring(1, 3), 16), tG = parseInt(to.substring(3, 5), 16), tB = parseInt(to.substring(5, 7), 16); var h = $(this).height() * 1.5; var html,cacheHTML=[]; this.initHTML = html = this.initHTML||this.innerHTML; this.innerHTML = ''; for (var i = 0; i < h; i++) { var c = '#' + (Math.floor(fR * (h - i) / h + tR * (i / h))).toString(16) + (Math.floor(fG * (h - i) / h + tG * (i / h))).toString(16) + (Math.floor(fB * (h - i) / h + tB * (i / h))).toString(16); cacheHTML.push('' + html + '') } cacheHTML.push('' + html + '','' + html + ''); $(cacheHTML.join('')).appendTo(this) }) }) } //这个部分就是调用了,传入要添加效果的元素,这里可以是jquery的任意选择符。 initGradients('.rainbows'); function initGradients(s) {

$(function() {

$(s).each(function() {

var el = this;

var from = $(el).attr('gradFromColor')||'#ffffff', to = $(el).attr('gradToColor')||'#000000';

var fR = parseInt(from.substring(1, 3), 16),

fG = parseInt(from.substring(3, 5), 16),

fB = parseInt(from.substring(5, 7), 16),

tR = parseInt(to.substring(1, 3), 16),

tG = parseInt(to.substring(3, 5), 16),

tB = parseInt(to.substring(5, 7), 16);

var h = $(this).height() * 1.5;

var html,cacheHTML=[];

this.initHTML = html = this.initHTML||this.innerHTML;

this.innerHTML = '';

for (var i = 0; i < h; i++) {

var c = '#' + (Math.floor(fR * (h - i) / h + tR * (i / h))).toString(16) + (Math.floor(fG * (h - i) / h + tG * (i / h))).toString(16) + (Math.floor(fB * (h - i) / h + tB * (i / h))).toString(16);

cacheHTML.push('' + html + '')

}

cacheHTML.push('' + html + '','' + html + '');

$(cacheHTML.join('')).appendTo(this)

})

})

}

//这个部分就是调用了,传入要添加效果的元素,这里可以是jquery的任意选择符。

initGradients('.rainbows');

代码看起来并不算多,但是如果想明白原理的话还是要认真的理解下这个代码的。

结合JS/CSS我们可以看出其大概的思路如下:

程序首先算出字体所在容器的高度N,然后清空容器内容,并添加N个span,每个span内容都为原容器的文字,每个span的颜色根据渐变色进行计算,而且其中的文字定位都相比之前一个span的文字向上偏移一个像素。CSS中可以看到,每个span的高度都为1。这样,我们就通过N各不同颜色的1px的span把字体“拼”出来了,然后加上“高光/阴影”就搞定。

基于jQuery的立体文字渐变效果相关阅读:

oralce数据库DMP导入导出实例

Novell:Linux桌面应用普及仍需3-5年时间

MYSQL教程:MYSQL列类型(column type)

CSS+XHTML制作的简单网页下拉菜单

在ACCESS中自动压缩当前数据库

日志操作模式,Oracle数据的保护伞

Man指令调用帮助文件来源和语法关键字

理解认识阿里妈妈淘客系统对外接口通用规范

PHP源码之 ext/mysql扩展部分

用JS得到字符串中出现次数最多的字母

MySQL进阶SELECT语法篇

jQuery 学习第六课 实现一个Ajax的TreeView

利用ASP.NET MVC源代码调试你的应用程序

CSS样式按整洁易懂的结构组织

php渐变字,jQuery_jQuery实现的立体文字渐变效果,先截两个图看看: 效果很 - phpStudy...相关推荐

  1. CSS实现的阴影的3D立体文字动画网页源码

    大家好,今天给大家介绍一款,炫酷的阴影的3D立体文字动画网页源码(图1).送给大家哦,获取方式在本文末尾. 图1 由两组文字构成,都有阴影,加上左右晃动,3D效果很明显(图2) 图2 响应式页面,支持 ...

  2. AI制作金属字感的立体文字效果

    (写作时间:2019.6.18 作者:李嘉城) 首先新建文档,然后使用矩形工具(矩形工具快捷键:M)再创建一个矩形,大小是文档的大小.填色:灰色,#949398.从一开始就有一个背景色将使我们在制作文 ...

  3. 文字描边_巧用Illustrator“3D”和“凸出和斜角”功能,制作炫酷立体文字

    今天,我们给大家带来一篇Illustrator实例教程,教大家制作立体炫酷的文字效果. 我们先来看一下最终的效果: 下面,我们就来看一下具体的操作步骤吧! 首先,我们打开Illustrator,新建一 ...

  4. html渐变不兼容,CSS3实现文字渐变效果,兼容性最强系列!

    背景渐变色,多重渐变背景色,在前端领域的使用越来越常见,以及前段时间分享的<CSS多姿多彩的渐变色,前端还需要PS吗?>,通过css就可以制作漂亮的渐变色卡,让前端不再依靠图片实现复杂的效 ...

  5. p字间距 html段落内文字设置字间距间隔

    只对段落p内文字设置字间距,段落<p>是html段落标签,以<p>开始,以</p>结束,通常文章分段使用p标签,而有时小局部布局也可以使用p来布局.通过css设置其 ...

  6. css字体倾斜角度_css如何实现渐变效果?css背景色渐变与文字渐变效果的实现(代码实例)...

    在前端网页开发的时候,往往会用到一些渐变色的效果,这样可以使得前端页面更加美观.那么这些渐变效果是如何用css代码实现出来的?本章就给大家带来css如何实现渐变效果?css背景色渐变与文字渐变效果的实 ...

  7. html文字段落设置,p字间距 html段落内文字设置字间距间隔

    只对段落p内翰墨设置字间距,段落 是html段落标签,以 末尾,以 竣事,通常文章分段运用p标签,而无心小部门布局也大约使用p来布局.经过css设置装备摆设其花色完成排版目标. 这里针对p设置装备摆设 ...

  8. 知意字稿的语音转文字功能真的好用吗?

    知意字稿是知意配音的姐妹产品,我是刚好买了知意配音的永久会员送了一些时长,刚开始觉得没啥用,我一个做短视频的,很少会用到.直到最近开始写论文,让别人帮我录制了老师的指导内容,大概有半个小时,自己听觉得 ...

  9. HTML彩色渐变字效果

    HTML彩色渐变字效果(非常简单,效果好) 一.代码效果 二.效果演示 !当然也可以修改渐变颜色 三.代码 <bstyle="background-image: linear-grad ...

最新文章

  1. ASP.NET中实现打印
  2. 两难!到底用 Spring BeanUtils 还是 Apache BeanUtils?
  3. SQL 登录注入脚本_常见web安全问题,SQL注入、XSS、CSRF,基本原理以及如何防御...
  4. 5.intent_activity
  5. SpringBoot整合RabbitMQ测试
  6. 登台区无效_使用事务数据复制来重放和测试登台服务器上的生产负载
  7. 事业环境因素对项目现场实施的影响
  8. 基于OpenCV实现视频的循环播放
  9. 紫川猜想--第二十二卷第六章
  10. 新导智能融合定位可视化物联系统
  11. 老版人人商城提示“百度未授权地图API”
  12. Xposed小白入门,动态修改IMEI实例代码
  13. 开源Odoo ERP13.2版本模块功能
  14. Oracle实现竖表转横表的几种常用方法(行转列)
  15. one-hot表示和分布式表示
  16. keil MDK5.24打开MDK5.15及以前STM32工程报错Error #545:Required gpdsc file 'FrameworkCubeMX.gpdsc' is missing
  17. 你是否愿意为他人撑起一把伞?
  18. 2014年CCNU-ACM暑期集训总结
  19. 示例:应用WPF开发的仿制GitHub客户端UI布局
  20. 有趣的网站分享——pornhub风格生成器

热门文章

  1. 深入理解 JVM Class文件格式(九)
  2. Codeforces Round #620 (Div. 2) E. 1-Trees and Queries 思维 + LCA
  3. Codeforces Round #709 (Div. 1, based on Technocup 2021 Final Round) A. Basic Diplomacy
  4. [BZOJ2616] SPOJ PERIODNI
  5. cf1552F. Telepanting
  6. P2152 [SDOI2009]SuperGCD
  7. P3265-[JLOI2015]装备购买【线性基,拟阵贪心】
  8. P4331-[BalticOI2004]Sequence数字序列【左偏树】
  9. 【2018.4.7】模拟赛之六-ssl2387 树【图论,树】
  10. jzoj1882-亲戚【并查集】