为什么同样的indesign渐变颜色移动后颜色变浅,转成智能对象移动颜色也变浅

面板颜色变浅透明
面板颜色变浅透明
让颜色像声音那样可调节,或变成很浅的颜色
不区分大小写匿名
学PS基础:Photoshop 技能167个&经典的Photoshop技巧大全,如果你是初级阶段的水平,熟读此文并掌握,马上进阶为中级水平。绝对不是广告噢。 &常见技巧 经典的Photoshop技巧大全,如果你是初级阶段的水平,熟读此文并掌握,马上进阶为中级水平。绝对不是广告噢。&&  1. 快速打开文件&  双击Photoshop的背景空白处(默认为灰色显示区域)即可打开选择文件的浏览窗口。&  2. 随意更换画布颜色&  选择油漆桶工具并按住Shift点击画布边缘,即可设置画布底色为当前选择的前景色。如果要还原到默认的颜色,设置前景色为25%灰度 (R192,G192,B192)再次按住Shift点击画布边缘。&  3. 选择工具的快捷键&  可以通过按快捷键来快速选择工具箱中的某一工具,各个工具的字母快捷键如下:&  选框-M 移动-V 套索-L 魔棒-W&  喷枪-J 画笔-B 铅笔-N 橡皮图章-S&  历史记录画笔-Y 橡皮擦-E 模糊-R 减淡-O&  钢笔-P 文字-T 度量-U 渐变-G&  油漆桶-K 吸管-I 抓手-H 缩放-Z&  默认前景和背景色-D 切换前景和背景色-X&  编辑模式切换-Q 显示模式切换-F&  另外,如果我们按住Alt键后再单击显示的工具图标,或者按住Shift键并重复按字母快捷键则可以循环选择隐藏的工具。&  4. 获得精确光标&  按Caps Lock键可以使画笔和磁性工具的光标显示为精确十字线,再按一次可恢复原状。&  5. 显示/隐藏控制板&  按Tab键可切换显示或隐藏所有的控制板(包括工具箱),如果按Shift+Tab则工具箱不受影响,只显示或隐藏其他的控制板。&  6. 快速恢复默认值&  有些不擅长Photoshop的朋友为了调整出满意的效果真是几经周折,结果发现还是原来的默认效果最好,这下傻了眼,后悔不该当初呀!怎么恢复到默认值呀?试着轻轻点按选项栏上的工具图标,然后从上下文菜单中选取“复位工具”或者“复位所有工具”。&  7. 自由控制大小&  缩放工具的快捷键为“Z”,此外“Ctrl+空格键”为放大工具,“Alt+空格键”为缩小工具,但是要配合鼠标点击才可以缩放;相同按 Ctrl+“+”键以及“-”键分别也可为放大和缩小图像;Ctrl+Alt+“+”和Ctrl+Alt+“-” 可以自动调整窗口以满屏缩放显示,使用此工具你就可以无论图片以多少百份比来显示的情况下都能全屏浏览!如果想要在使用缩放工具时按图片的大小自动调整窗口,可以在缩放工 具的属性条中点击“满画布显示”选项。&  8. 使用非Hand Tool(手形工具)时,按住空格键后可转换成手形工具,即可移动视窗内图像的可见范围。在手形工具上双击鼠标可以使图像以最适合的窗口大小显示,在缩放工具上双击鼠标可使图像以1:1的比例显示。&  9. 在使用Erase Tool(橡皮擦工具)时,按住Alt 键即可将橡皮擦功能切换成恢复到指定的步骤记录状态。&  10. 使用Smudge Tool(指尖工具)时,按住Alt键可由纯粹涂抹变成用前景色涂抹。&  11. 要移动使用Type Mask Tool(文字蒙版工具)打出的字形选取范围时,可先切换成快速蒙版模式(用快捷键Q切换),然后再进行移动,完成后只要再切换回标准模式即可。&  12. 按住Alt键后,使用Rubber Stamp Tool(橡皮图章工具)在任意打开的图像视窗内单击鼠标,即可在该视窗内设定取样位置,但不会改变 作用视窗。&  13. 在使用Move Tool(移动工具)时,可按键盘上的方向键直接以1 pixel的距离移动图层上的图像,如果先按住Shift键后再按
等待您来回答
I'M QQ领域专家2no(g)=n2o4达到平衡后.慢慢压缩气体体积,平衡向右移动,混合气体颜色变浅.这句话对么?_百度知道
2no(g)=n2o4达到平衡后.慢慢压缩气体体积,平衡向右移动,混合气体颜色变浅.这句话对么?
提问者采纳
不对!压缩,平衡向右移动没错。但是无论怎么移动,新平衡时NO2的浓度一定高于原平衡时的浓度——从勒夏特列原理分析:改变影响平衡的一个条件,平衡移动的结果是 减小 其改变!
提问者评价
其他类似问题
压缩气体的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁恒温条件下,将NO2装入带活塞的密闭容器中,当反应2NO2≒N2O4达到平衡后,慢慢压缩气体体积,下列叙述正确的是(&&& )&&&&&&&&&&&&&
A.若体积减小一半,则压强为原来的两倍 &&
B.平衡向右移动,混合气体颜色一定会变浅 C.若体积减小一半,压强增大,但小于原来的两倍 D.平衡向右移动,混合气
试题及解析
学段:高中
学科:化学
恒温条件下,将NO2装入带活塞的密闭容器中,当反应2NO2≒N2O4达到平衡后,慢慢压缩气体体积,下列叙述正确的是(&&& )&&&&&&&&&&&&&
A.若体积减小一半,则压强为原来的两倍 &&
B.平衡向右移动,混合气体颜色一定会变浅
C.若体积减小一半,压强增大,但小于原来的两倍
D.平衡向右移动,混合气体的平均相对分子量减小
点击隐藏试题答案:
该试题的相关试卷
找老师要答案
考拉金牌语文教师
考拉金牌数学教师
考拉金牌英语教师
大家都在看
热门知识点 & & &&
请选择你的理由
答案不给力
关注考拉官方微信当前位置:&&
本页文章导读:
&&&&?jquery实现多级下拉菜单的实例代码&&&&&&
代码如下:&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&&html xmlns="http://www.w3.org/1999/xhtml"&&head&&title&jquery实现多级下拉菜单-柯......&&&&?基于JQuery的列表拖动排序实现代码&&&&&&
拖动排序,从名字就不难想像,就是按住一行数据拖到想要的排序位置,保存新的排序队列。
首先给列表行建立锚点,绑定mousedown和mouseup事件,当鼠标移动到想要插入的位置时,......&&&&?Javascript 颜色渐变效果的实现代码&&&&&&
下面就是博主的一些思路和解决办法,如果对此没兴趣,想直接使用jquery插件的同学,可以点这里
每一种颜色由RGB组成,每两位为一个16进制数当前颜色代码和目标颜色代码,转换成10......
&&&&&&最新IT科技资讯推荐:
[1]jquery实现多级下拉菜单的实例代码
&&&&来源:&互联网& 发布时间:&
代码如下:&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&&html xmlns="http://www.w3.org/1999/xhtml"&&head&&title&jquery实现多级下拉菜单-柯乐义&/title&&style&/* navigation style */#keleyi-com-nav{height: 39font: 12px Geneva, Arial, Helvetica, sans-background: #2D2D2D;border: 1px solid #323232;
border-radius: 3min-width:500margin-left: 0padding-left: 0}
#keleyi-com-nav li{list-style:display:float:height: 40position:border-right: 1px solid #323232;}
#keleyi-com-nav li a{padding: 0px 10px 0px 30margin: 0px 0;line-height: 40text-decoration:border-right: 1px solid #636161;height: 40color: #FFF;text-shadow: 1px 1px 1px #66696B;}
#keleyi-com-nav ul{background: #f2f5f6; padding: 0border-bottom: 1px solid #DDDDDD;border-right: 1px solid #DDDDDD;border-left:1px solid #DDDDDD;border-radius: 0px 0px 3px 3box-shadow: 2px 2px 3px #ECECEC;-webkit-box-shadow: 2px 2px 3px #ECECEC;-moz-box-shadow:2px 2px 3px #ECECEC;width:170}#keleyi-com-nav .site-name,#keleyi-com-nav .site-name:hover{padding-left: 10padding-right: 10color: #FFF;background: url(/keleyi/phtml/jqmenu/4/logo.png) no-repeat 10px 5width: 160}#keleyi-com-nav .site-name a{width: 129overflow:}#keleyi-com-nav li.facebook{background: url(/keleyi/phtml/jqmenu/4/facebook.png) no-repeat 9px 12}#keleyi-com-nav li.facebook:hover {background: url(/keleyi/phtml/jqmenu/4/facebook.png) no-repeat 9px 12px #010101;}#keleyi-com-nav li.yahoo{background: url(/keleyi/phtml/jqmenu/4/yahoo.png) no-repeat 9px 12}#keleyi-com-nav li.yahoo:hover {background: url(/keleyi/phtml/jqmenu/4/yahoo.png) no-repeat 9px 12px #010101;}
#keleyi-com-nav li:hover{background: #010101;}#keleyi-com-nav li a{display:}#keleyi-com-nav ul li {border-right:border-bottom:1px solid #DDDDDD;width:170height:39}#keleyi-com-nav ul li a {border-right:color:#6791AD;text-shadow: 1px 1px 1px #FFF;border-bottom:1px solid #FFFFFF;}#keleyi-com-nav ul li:hover{background:#DFEEF0;}#keleyi-com-nav ul li:last-child { border-bottom:}#keleyi-com-nav ul li:last-child a{ border-bottom:}/* Sub menus */#keleyi-com-nav ul{display:visibility:position:top: 40}
/* Third-level menus */#keleyi-com-nav ul ul{top: 0left:170display:visibility:border: 1px solid #DDDDDD;}/* Fourth-level menus */#keleyi-com-nav ul ul ul{top: 0left:170display:visibility:border: 1px solid #DDDDDD;}
#keleyi-com-nav ul li{display:visibility:}#keleyi-com-nav li:hover & ul{display:visibility:}&/style&&!--[if IE 7]&&style&#keleyi-com-nav{margin-left:0px}#keleyi-com-nav ul{left:-40}#keleyi-com-nav ul ul{left:130}#keleyi-com-nav ul ul ul{left:130}&/style&&![endif]--&&script type="text/javascript" src="/keleyi/pmedia/jquery/jquery-1.10.2.min.js"&&/script&&script type="text/javascript"&$(document).ready(function () {$("#kel"+"eyi-com-nav li").hover(function () {$(this).children('ul').hide();$(this).children('ul').slideDown('fast');},function () {$('ul', this).slideUp('fast');});});&/script&&/head&&body&&ul id="keleyi-com-nav"&&li &&a href=""& &/a&&/li&&li &&a href=""&导航菜单&/a&&ul&&li&&a href="/a/bjac/veugsmw9.htm"&导航菜单二级分类 >>&/a& &ul&&li&&a href=""&1&/a&&/li&&li&&a href="/a/bjac/r55i6646.htm"&2&/a&&/li&&li&&a href=""&3&/a&&/li&&li&&a href=""&导航菜单三 >>&/a&&ul&&li&&a href=""&导航菜单4&/a&&/li&&li&&a href="/a/bjac/c6gu08gm.htm"&1&/a&&/li&&/ul&&/li&&/ul&&/li&&li&&a href=""&1&/a&&/li&&li&&a href=""&2&/a&&/li&&/ul&&/li& &li &&a href=""&翻页&/a&&ul&&li&&a href=""&1&/a&&/li&&li&&a href=""&2&/a&&/li&&/ul&&/li&&/ul&&/body&&/html&
[2]基于JQuery的列表拖动排序实现代码
&&&&来源:&互联网& 发布时间:&
拖动排序,从名字就不难想像,就是按住一行数据拖到想要的排序位置,保存新的排序队列。
首先给列表行建立锚点,绑定mousedown和mouseup事件,当鼠标移动到想要插入的位置时,将对象行移动到目标行,然后对其经过的所有行进行排序处理。
思路很简单,但这里面仍然有几个问题要注意
1、移动到什么位置可以视作要插入到目标行的位置。2、移动出了顶端和底端时,判断为第一和最后。3、向上移动和向下移动的处理
Javascript里鼠标按下和放开事件为onmousedown,onmouseup,JQuery里是mousedown,mouseup,所以,这里使用mousedown和mouseup
首先,要知道界面有多少行,每一行有多高,因为要判断鼠标的移动距离 代码如下:var tbodyHeight=setting.frame.outerHeight();
//setting.frame,父对象var lineNum=$("."+setting.dgLine).
//setting.dgLine,每一行的classnamevar lineHeight=Math.ceil(tbodyHeight/lineNum);
之所有要取lineNum(行数),除了计算行高外,还有个目的是要使用index(),通过序列索引值来进行移动行到目标位置
当mousedown事件触发后,就要开始计算鼠标移动的距离,用于判断该行到底要移动到什么位置
代码如下:dgid=$(this).attr(setting.id);
//移动行的ID,setting.id,是每一行用来标记ID的名称thisIndex=$("#"+setting.linePre+dgid).index(); //该行的索引,setting.linePre,每一行ID关辍thisLineTop=$("#"+setting.linePre+dgid).offset(). //该行的top值topDistance=thisIndex*lineH
//该行距离第一行顶端的距离downDistance=(lineNum-thisIndex-1)*lineH //该行距离最后一行底端的距离
dgid主要是用来区分每一行的标识,一般的列表都是程序循环输出来的,如果没有这样一个ID,就分不出哪行是哪行,所以,在HTML上,需要定义一个存放ID的家伙。程序通过attr就是来取这个值,保证每一行都有自己唯一的值。
thisLineTop,主要是用来和鼠标移动位置进行高度计算,然后根据行高、索引值来判断是移动到哪一行了。还有个作用是用来确定是否按在了移动锚点上,如果有值,说明是,那后面的mouseup就是成立的,如果没有值,说明没有按到锚点上,mouseup不执行任何操作。为什么要这样做呢?因为不管在页面的什么位置点鼠标,都会触发mouseup事件,如果没有一个判断,就会不停的执行,那就会产生一些问题。
topDistance和downDistance,用来判断鼠标有没有移出列表的范围,如果移除了,也就是鼠标移动的距离大于topDistance或downDistance,那就可以判断为需要移动到第一行或最后一行。
mousedown事件主要做的,就是这几件事情,当然,为了效果,还可以增加一些东西
代码如下:$("#"+setting.linePre+dgid).css('background',setting.lineHighlight); //高亮移动行var left=e.pageX+20;var top=e.pageY;dg_tips(left,top);
//创建一个提示层$('body').css('cursor','move'); //更改页面的鼠标手势$("body").disableSelection(); //禁止按下鼠标后移动鼠标时选中页面元素setting.frame.mousemove(function(e){
//让提示层跟随鼠标移动$("#dgf").css({"left":e.pageX+setting.tipsOffsetLeft+'px',"top":e.pageY+'px'});});
这些的目的,只是让操作起来更有效果,比如高亮行,就是要让用户知道,他们操作的是哪一行。提示层的作用也一样。
关于禁止选中,.disableSelection();这是jQuery_UI里带的方法,如果你有使用jQuery_UI,那可以直接使用它,如果没有使用,可以这样做
代码如下:$('body').each(function() {
$(this).attr('unselectable', 'on').css({
'-moz-user-select':'none',
'-webkit-user-select':'none',
'user-select':'none' }).each(function() {
this.onselectstart = function() { }; });});
取消禁止选择
代码如下:$('body').each(function() {
$(this).attr('unselectable', '').css({
'-moz-user-select':'',
'-webkit-user-select':'',
'user-select':'' });});
考虑到通用性,所以后面的代码里,不会使用.disableSelection();
好了,下面是mouseup事件。这里mouseup事件是绑定在body上的,因为mouseup如果只是绑定在锚点上,那当鼠标移出锚点的时候,再松开鼠标,会发现,这个mouseup事件不执行了,因为它会认为是别的对象的mouseup。所以,最保险的方法是用$('body').mouseup。这样基本上就不会有问题。
mouseup触发后,首先就要判断thisLineTop是不是有值,防止无意义的事件执行。跟着判断鼠标移动的距离是正还是负,也就是向上移动还是向下移动。
var moveDistance=e.pageY-thisLineT
根据不同的方向作不同的处理
代码如下:if(moveDistance&0){ if(thisIndex!=0){
moveDistance=Math.abs(moveDistance);
//为负数的时候,取一下绝对值
if(moveDistance&lineHeight/2){ //判断移动距离是否超过行高的1/2
if(moveDistance&topDistance){ //如果移动距离大于该行到顶边的距离
focusIndex=0;
focusIndex=thisIndex-Math.ceil(moveDistance/lineHeight);
$("."+setting.dgLine).eq(focusIndex).before($("#"+setting.linePre+dgid));//将该行插入目标位置
} }}else{ if(thisIndex!=lineNum-1){
if(moveDistance&lineHeight/2+lineHeight){
if(moveDistance&downDistance){
focusIndex=lineNum-1;
focusIndex=thisIndex+Math.ceil(moveDistance/lineHeight)-1;
$("."+setting.dgLine).eq(focusIndex).after($("#"+setting.linePre+dgid));
之所以判断移动距离是否超过行高的1/2,是因为如果只移动一小点,可以视作不移动。在计算目标索引值的时候,使用了Math.ceil,最进位,而当移动距离大于0的时候,取了进位还要-1,因为是向下嘛。
向上移动和向下移动使用了不同的插入方法,before和after,可以试着想一下为什么要使用before和after。
移动完了,还得把按下鼠标时使用的效果给去除掉
代码如下:$("#dgf").remove();//移除提示层$("#"+setting.linePre+dgid).css('background','');//将高亮的行变为普通dgid='';//将移动行的ID值空thisLineTop=0;//将移动行的Top值至0$('body').css('cursor','default');//更改鼠标手势为默认
基本上的情况就是这样,主要问题就是在处理移动和判断在哪里插入的问题上。其它的都非常简单。
下面给出完整的封装程序,包括更新数据部分
代码如下:/** *
DragList.js*
@author fuweiyi &&*
*/(function($){ $.fn.DragList=function(setting){
var _setting = {
frame : $(this),
dgLine : 'DLL',
dgButton : 'DLB',
id : 'action-id',
linePre : 'list_',
lineHighlight : '#ffffcc',
tipsOpacity : 80,
tipsOffsetLeft : 20,
tipsOffsetTop : 0,
JSONUrl : '',
JSONData : {},
maskLoaddingIcon : '',
maskBackgroundColor : '#999',
maskOpacity : 30,
maskColor : '#000',
maskLoadIcon:'',
var setting = $.extend(_setting,setting);
var dgid='',thisIndex,thisLineTop=0,topDistance,downD
var tbodyHeight=setting.frame.outerHeight();
var lineNum=$("."+setting.dgLine).
var lineHeight=Math.ceil(tbodyHeight/lineNum);
$("."+setting.dgButton).mousedown(function(e){
dgid=$(this).attr(setting.id);
thisIndex=$("#"+setting.linePre+dgid).index();
var left=e.pageX+20;
var top=e.pageY;
thisLineTop=$("#"+setting.linePre+dgid).offset().
topDistance=thisIndex*lineH
downDistance=(lineNum-thisIndex-1)*lineH
$("#"+setting.linePre+dgid).css('background',setting.lineHighlight);
dg_tips(left,top);
$('body').css('cursor','move');
unselect();
setting.frame.mousemove(function(e){
$("#dgf").css({"left":e.pageX+setting.tipsOffsetLeft+'px',"top":e.pageY+'px'});
$('body').mouseup(function(e){
if(thisLineTop&0){
var moveDistance=e.pageY-thisLineT
if(moveDistance&0){
if(thisIndex!=0){
moveDistance=Math.abs(moveDistance);
if(moveDistance&lineHeight/2){
if(moveDistance&topDistance){
focusIndex=0;
focusIndex=thisIndex-Math.ceil(moveDistance/lineHeight);
$("."+setting.dgLine).eq(focusIndex).before($("#"+setting.linePre+dgid));
dg_update(thisIndex,focusIndex);
if(thisIndex!=lineNum-1){
if(moveDistance&lineHeight/2+lineHeight){
if(moveDistance&downDistance){
focusIndex=lineNum-1;
focusIndex=thisIndex+Math.ceil(moveDistance/lineHeight)-1;
$("."+setting.dgLine).eq(focusIndex).after($("#"+setting.linePre+dgid));
dg_update(thisIndex,focusIndex);
$("#dgf").remove();
$("#"+setting.linePre+dgid).css('background','');
thisLineTop=0;
$('body').css('cursor','default');
onselect();
function dg_update(thisIndex,focusIndex){
dg_mask();
var start=thisIndex&focusIndex?thisIndex:focusI
var end=thisIndex&focusIndex?focusIndex:thisI
var ids='',vals='';
for(var i=i&=i++){
ids+=i==start?$("."+setting.dgLine).eq(i).attr(setting.id):','+$("."+setting.dgLine).eq(i).attr(setting.id);
vals+=i==start?i:','+i;
$.getJSON(setting.JSONUrl,{'do':'changeorders','ids':ids,'vals':vals},function(d){
$("#dg_mask").remove();
function dg_mask(){
var W=setting.frame.outerWidth();
var H=setting.frame.outerHeight();
var top=setting.frame.offset().
var left=setting.frame.offset().
var mask="&div id='dg_mask'&&img src='"+setting.maskLoadIcon+"' alt='' /& 正在使劲的保存...&/div&";
$('body').append(mask);
$("#dg_mask").css({"background":"#999","position":'absolute','width':W+'px','height':H+'px','line-height':H+'px','top':top+'px','left':left+'px','filter':'alpha(opacity='+setting.maskOpacity+')','moz-opacity':setting.maskOpacity/100,'opacity':setting.maskOpacity/100,'text-align':'center','color':'#000'});
function dg_tips(left,top){
var floatdiv="&div id='dgf' +setting.tipsOpacity+");moz-opacity:"+setting.tipsOpacity/100+";opacity:"+setting.tipsOpacity/100+";position:left:"+left+"top:"+top+"'&移动一条记录&/div&";
$('body').append(floatdiv);
function unselect(){
$('body').each(function() {
$(this).attr('unselectable', 'on').css({
'-moz-user-select':'none',
'-webkit-user-select':'none',
'user-select':'none'
}).each(function() {
this.onselectstart = function() { };
function onselect(){
$('body').each(function() {
$(this).attr('unselectable', '').css({
'-moz-user-select':'',
'-webkit-user-select':'',
'user-select':''
} }})(jQuery);
代码如下:&table cellpadding="5" cellspacing="0"
id="listtable"& &thead&
&td &拖动&/td&
&td &名称&/td&
&/tr& &/thead& &tbody id="drag_table"&
&!--{loop $lists $k $list}--&
&tr id="list_{$list['id']}" action-id="{$list['id']}" &
action-id="{$list['id']}"&&img src="{SYS_URL}views/admin/images/move.png" alt="" /&&/div&&/div&&/td&
&td&这里是一行&/td&
&!--{/loop}--& &/tbody&&/table&&script type="text/javascript"&$("#drag_table").DragList({ dgLine:'drag_line', dgButton:'drag_orders', id:'action-id', linePre:'list_', JSONUrl:'{_ADMIN}?controller=contents&method=focus_form', maskLoadIcon:'{SYS_URL}views/admin/images/loading.gif'});&/script&
参数主要是dgLine,dgButton,id,linePre和JSONUrl,通过看HTML代码,应该不难理解。
关于拖动排序就是这么多了,当然还可以把效果做得更漂亮些,提示更清楚点,有助于用户体验
[3]Javascript 颜色渐变效果的实现代码
&&&&来源:&互联网& 发布时间:&
下面就是博主的一些思路和解决办法,如果对此没兴趣,想直接使用jquery插件的同学,可以点这里
每一种颜色由RGB组成,每两位为一个16进制数当前颜色代码和目标颜色代码,转换成10进制数后,是有差值的,利用差值,设定总执行次数的步长,计算每一步变更颜色的10进制数利用定时器执行简单的讲,就是将6位颜色代码以每两位转换为10进制数,然后计算两对RGB值的差,根据设定的步长(执行次数),计算每一步需要增加或减少的RGB值,最后变为目标颜色的RGB值
需要解决的问题
将6位颜色代码转换为10进制根据步长计算每一步增加或减少数值使用定时器执行这个增加或减少的过程1、将6位颜色代码转换为10进制
关于16进制转为10进制,学校课本上就已经讲过了。个位*16的0次方,十位*16的1次方,以此类推。颜色是由RGB组成,每两位为一组,如:#123456,R=12,G=34,B=56,但实际上RGB值是10进制,所以,R=12只能说是对应的位置,12转为10进制:2*1+1*16=18,34:4*1+3*16=52,56:6*1+5*16=96,所以RGB=[18,52,96]。
这是数字的,但16进制还有A-F,所以还得先将A-F转为10-15,可以先用一个数组来保存整个16进制对应的数
代码如下:var f=new Array();f['0']=0;f['1']=1;f['2']=2;f['3']=3;f['4']=4;f['5']=5;f['6']=6;f['7']=7;f['8']=8;f['9']=9;f['A']=10;f['B']=11;f['C']=12;f['D']=13;f['E']=14;f['F']=15;
因为颜色代码是不区分大小写的,所以可以先把颜色全部转换为大写
代码如下:code=code.toLocaleUpperCase();//转换为大写接着就是16进制转为10进制
//code即为6位颜色代码,如:f07786;var r=f[code[0]]*16+f[code[1]];var g=f[code[2]]*16+f[code[3]];var b=f[code[4]]*16+f[code[5]];
整个转换的代码,写成一个方法
代码如下:function colorConversion(code){
var len=code.
var f=new Array();
f['A']=10;
f['B']=11;
f['C']=12;
f['D']=13;
f['E']=14;
f['F']=15;
code=code.toLocaleUpperCase();//转换为大写
var s=code.substr(0,1);
if(s=='#'){
code=code.substr(1,6);
var r=f[code[0]]*16+f[code[1]];
var g=f[code[2]]*16+f[code[3]];
var b=f[code[4]]*16+f[code[5]];
return [r,g,b];}
代码中的s,是用来判断颜色代码是否带有#号,有就去掉,最后返回一个包含RGB值的数组
计算增加或减少的步长
比如,设定颜色变化次数为10次,那就需要计算这10次变化,每一次RGB值的增减数值是多少。利用当前颜色的RGB值和目标颜色的RGB的差取绝对值,然后除以10,可以得到一个步长,但这个值很可能是小数,可以把小数舍去,那么在最后一步增减数值的时候,直接变到目标颜色的RGB值就行了
代码如下:var _step=10;var _R_step=parseInt(Math.abs(_thisRGB[0]-_toRGB[0])/_step); //R的增减步长var _G_step=parseInt(Math.abs(_thisRGB[1]-_toRGB[1])/_step); //G的增减步长var _B_step=parseInt(Math.abs(_thisRGB[2]-_toRGB[2])/_step); //B的增减步长
每次执行增减
如果执行次数为10,也就是要连续的执行10次,当_step=1的时候,就算执行完成。那么在增减步长上,就会出现,如果_step=10,那么增减就是1倍步长,如果_step=9,也就是执行到第二步,那增减的就是2倍步长,一直到_step=1,增减9倍步长。这里可以使用这么一句简单的计算
代码如下:var step=10;var _step=//循环体内var s=(step-_step)+1;_step--;
接着判断当前颜色RGB值和目标RGB的是增加还是减少
代码如下:var r=_step==1?_toRGB[0]:(_thisRGB[0]&_toRGB[0]?_thisRGB[0]-_R_step*s:_thisRGB[0]+_R_step*s);var g=_step==1?_toRGB[1]:(_thisRGB[1]&_toRGB[1]?_thisRGB[1]-_G_step*s:_thisRGB[1]+_G_step*s);var b=_step==1?_toRGB[2]:(_thisRGB[2]&_toRGB[2]?_thisRGB[2]-_B_step*s:_thisRGB[2]+_B_step*s);
最后,将颜色输出
代码如下:obj.css({'background-color':'rgb('+r+','+g+','+b+')'});
这里输出的是rgb()的方式,没关系,和颜色代码同理,如果觉得还是输出6位代码,那就将10进制转成16进制就好了
最后就是用定时器来执行,中间还有对速度和计算,这里就不讲了。最后的执行代码:
代码如下:/*参数:obj:目标对象thisRGB:当前背景颜色的6位代码toRGB:目标背景颜色的6位代码thisColor:当前文字颜色的6位代码toColor:目标文字颜色的6位代码step:执行次数speed:执行速度*/function colorGradient(obj,thisRGB,toRGB,thisColor,toColor,step,speed){
var _thisRGB=colorConversion(thisRGB); //16进制转换10进制
var _toRGB=colorConversion(toRGB);
if(thisColor&&toColor){
var _thisColor=colorConversion(thisColor,1);
var _toColor=colorConversion(toColor,1);
var step=step?step:3;
var _step=
var _speed=speed?parseInt(speed/step):30;
//根据总时间计算每次执行的速度
var _R_step=parseInt(Math.abs(_thisRGB[0]-_toRGB[0])/_step);
var _G_step=parseInt(Math.abs(_thisRGB[1]-_toRGB[1])/_step);
var _B_step=parseInt(Math.abs(_thisRGB[2]-_toRGB[2])/_step);
var timer=setInterval(function(){
if(_step&0){
var s=(step-_step)+1;
var r=_step==1?_toRGB[0]:(_thisRGB[0]&_toRGB[0]?_thisRGB[0]-_R_step*s:_thisRGB[0]+_R_step*s);
var g=_step==1?_toRGB[1]:(_thisRGB[1]&_toRGB[1]?_thisRGB[1]-_G_step*s:_thisRGB[1]+_G_step*s);
var b=_step==1?_toRGB[2]:(_thisRGB[2]&_toRGB[2]?_thisRGB[2]-_B_step*s:_thisRGB[2]+_B_step*s);
obj.css({'background-color':'rgb('+r+','+g+','+b+')'});
if(thisColor&&toColor){
var cr=_step==1?_toColor[0]:(_thisColor[0]&_toColor[0]?_thisColor[0]-_R_step*s:_thisColor[0]+_R_step*s);
var cg=_step==1?_toColor[1]:(_thisColor[1]&_toColor[1]?_thisColor[1]-_G_step*s:_thisColor[1]+_G_step*s);
var cb=_step==1?_toColor[2]:(_thisColor[2]&_toColor[2]?_thisColor[2]-_B_step*s:_thisColor[2]+_B_step*s);
obj.css({'color':'rgb('+cr+','+cg+','+cb+')'});
clearInterval(timer);
},_speed);}
这个方法很简单,但渐变的平滑度一般,特别是在一组对象连续执行的时候。只能说,这是一种很吊丝,很笨的方法,大神都是用Tween算法
jQuery颜色渐变插件jquery.animate-colors-min.js
使用方法,直接使用jquery的animate就可以了,只是不用指定当前颜色,程序会自动取当前颜色,不过必须在样式里设定background
代码如下:obj.animate({'background-color':'#ff0000','color':'#000000'});
最新技术文章:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
(C)2012-,站长邮箱:www_169it_(请将#改为@)

我要回帖

更多关于 ps字体颜色渐变 的文章

 

随机推荐