摘要: 一、JQuery插件 jQuery插件-轻量图片轮换-UISlide jQuery插件-轻量图片轮换2-UISlide2 jQuery插件-轻量弹出层-UIDialog jQuery插件-轻量滚动条-UIScroll二、JS组件 待续三、PS 教程 [译] 用ps创建error水晶小图标 [译] 如何用ps制作火焰字[译] 如何用ps制作泼水字四、PS2HTML 待续阅读全文
posted @ 2012-03-21 16:01 豪情 阅读(114) 评论(1) 编辑

createHtml参考:http://linder0209.iteye.com/blog/1071818

/**
 * 创建html
 * @param o
 * {tag:string,              // 元素的标记名,如果没有,默认为div
     children|cn:string|Array|json, // 子结点对应的json数组或字节点的html或单个json
     html:string,            // 对应的html,如果有cn或children属性就忽略
     style:function|string|json,   // 元素的样式,可以是函数,字符串,json对象
     cls:string,            // 元素的class属性的值
     htmlFor:string           // 元素的For属性,
     x:y                  // x表示其他名字,y表示非函数、非空内容
   }
     var spec = {
         id: 'my-ul',
         tag: 'ul',
         cls: 'my-list',
         style : {width:'20px',height:'30px'},
         // append children after creating
         children: [     // may also specify 'cn' instead of 'children'
             {tag: 'li', id: 'item0', html: 'List Item 0'},
             {tag: 'li', id: 'item1', html: 'List Item 1'},
             {tag: 'li', id: 'item2', html: 'List Item 2'}
         ]
     };
 
*/
function createHtml(o){
    var b = '',
        cn,
        attr,
        val,
        key;
    if(typeof o == 'string'){ // 若是 string 类型,直接返回
        b = o;
    } else if(Ice.isArray(o)){ // 若是 array 类型, 如: [{ tag: 'li', id: 'item0' }]
        for(var i=0,len=o.length; i<len; i++){
            if(o[i]){
                b += createHtml(o[i]);
            }
        }
    } else { // 若是 object 类型
        b += '<' + (o.tag = o.tag || 'div'); // 若没有 o.tag 属性,则默认为 div, 如: <div
        for (attr in o) {
            val = o[attr];
            if(!confRe.test(attr)){ // 忽略 tag|children|cn|html,这四个是需自定义属性
                if(typeof val == 'object'){ // 若是对象类型, 如: style : {width:'20px',height:'30px'}
                    b += ' ' + attr + '="'; // 如: style = "
                    for (key in val) {
                        b += key + ':' + val[key] + ';'; // 如: width=20px;height:30px
                    }
                    b += '"';
                } else { // 若不是对象类型, 如: id: 'my-ul'
                    b += ' ' + ({cls: 'class', htmlFor: 'for'}[attr] || attr) + '="' + val + '"'; // class,for对象处理
                }
            }
        }
        if(emptyTags.test(o.tag)){ // 根据xhtml规定,忽略单标签,如: <hr />, <br />等
            b += '/>';
        } else {
            b += '>'; // 如: <div sytle="width=20px;height:30px">
            if(cn = o.children){
                b += createHtml(cn); // 如: <li id="item0">List Item 0</li><li id="item1">List Item 1</li>
            }
            b += '</' + o.tag + '>'; // 如: </div>
        }
    }
    return b; // 如: <ol style="width:20px;height:80px;"><li id="item0"></li></ol>

/**
 * 向DOM中插入一个HTML片段
 * @param where 插入的html与el的位置关系--- beforeBegin, afterBegin, beforeEnd, afterEnd.
 * @param el 内容元素
 * @param html HTML片段
 
*/
insertHtml: function(where, el, html){
    // innerHTML是只读的:col、 colgroup、frameset、html、 head、style、table、tbody、 tfoot、 thead、title 与 tr
    // http://www.cnblogs.com/rubylouvre/archive/2009/12/14/1622631.html
    var hash = {},
        hashVal,
        rs,
        range,
        setStart,
        frag,
        rangeEl;
    where = where.toLowerCase();
    hash[beforebegin] = ['beforeBegin', 'previousSibling'];
    hash[afterend] = ['afterEnd', 'nextSibling'];
    // 为了使后面的代码更易实现,这地方成两部分实现,
    // 1. 在当前节点的外边插入,就是if外边
    // 2. 在当前节点的里边插入,在if里边做判断
    if(el.insertAdjacentHTML){ // ie
        // 对ie的table进行单独处理
        if(tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))){
            return rs;
        }
        hash[afterbegin] = ['AfterBegin', 'firstChild'];
        hash[beforeend] = ['BeforeEnd', 'lastChild'];
        if((hashVal = hash[where])){
            el.insertAdjacentHTML(hashVal[0], html);
            return el[hashVal[1]];
        }
    } else { // 旧版 firefox, firefox 11 支持 insertAdjacentHTML
        range = el.ownerDocument.createRange();
        setStart = 'setStart' + (endRe.test(where) ? 'After' : 'Before');
        if(hash[where]){
            // setStartAfter() 把该范围的开始点设置为紧邻指定节点的节点之后
            // setStartBefore() 把该范围的开始点设置为紧邻指定节点之前
            range[setStart](el);
            // http://msdn.microsoft.com/zh-cn/library/hh673538(v=vs.85).aspx#createContextualFragment
            frag = range.createContextualFragment(html); // http://www.cnblogs.com/rubylouvre/archive/2011/04/15/2016800.html
            el.parentNode.insertBefore(frag, (beforebegin == where ? el : el.nextSibling));
            return el[(beforebegin == where ? 'previous' : 'next') + 'Sibling'];
        } else {
            rangeEl = (afterbegin == where ? 'first' : 'last') + 'Child';
            if(el.firstChild){
                range[setStart](el[rangeEl]);
                frag = range.createContextualFragment(html);
                if(afterbegin == where){
                    el.insertBefore(frag, el.firstChild);
                } else {
                    el.appendChild(frag);
                }
            } else {
                el.innerHTML = html;
            }
            return el[rangeEl];
        }
    }
    throw '非法插入点 -> "' + where + '"';
}

 

posted @ 2012-04-21 12:02 豪情 阅读(48) 评论(0) 编辑

泼水字教程

原文链接

  1. 按着习惯先看一下结果图:

    在本教程中,我给大家介绍在Photoshop中如何制作泼水文字效果。知识点:笔刷的运用。

  2. 准备工作:

    下载以下素材,水花笔刷是需要付费的,其它倒没什么。另外一点:笔刷在ps载入过多,会影响ps启动速度。谨慎使用。

    水花笔刷下载

    湖面

    字体

  3. 在ps中创建一个新的文件,大小为:940px * 700px ,背景为黑色。并保存,命名为:泼水文字。将湖面的素材打开,并使用套索工具,羽化值为:40px。绘制如图所示的区域,不一定完全相似,太不能偏差太大。

  4. 使用移动工具,将选区内的区域拖拽到刚才新建的泼水文字文件中。并且将其重命名为水波,透明度降低至60%左右。并用大的软橡皮擦工具擦除边缘,使其边缘与背景完全溶入。效果如下图所示:

  5. 复制水波图层两次,分别移动到原水层左侧或右侧。并设置透明度比原来略低,创建境深的感觉。主要还是考察构图能力或透视原则。

  6. 重复复制一次水图层,然后恢复透明度为:100%,并调整位置。

    好吧!这地方我不得不承认国外设计人水平的精湛,反正我经过多次的调整,反复的不断尝试才达到他图中所示的效果。一般的教程省略了这些细节,而恰恰这些细节这是初学者所迷惑的地方。我感觉这是国外教程不可取的地方。

    话又说回来,这地方还是考察你构图能力和对ps软件基本工具的熟练程度。因为将来上面就是所要创建的水波文字,下面的形状堆叠为一个心形才为润合。

  7. 在当前文件的所有图层最上层,创建两个调整图层(图层面板第四个按钮半黑半白),

    曲线:

    色阶:

  8. 在画布上输入任何你喜欢的字:

    斜面浮雕

    渐变叠加

    描边

    效果如图:

  9. 载入文字选区,并新建一层,填充黑色,滤镜 -> 杂色 -> 添加杂色,参数如图所示:

  10. 将杂色图层模式修改为滤色,透明度为35%左右

  11. 创建新层,并命名为:光影,用黑白交替的笔刷,填充以下形状:

    这又是一步省略细节的步骤,这步要不断的调整笔刷的透明度,还间接考验了对光影的把握。光影没有技巧,就是注意平常对生活中物的光影的观赏。总结,高光,反光,背光等。

  12. 新建“水花”,导入相关水花笔刷,在其周围添加。

  13. 运用笔刷添加小溪水的感觉,



  14. 运用白色的画笔慢慢添加水雾和高光的感觉



  15. 为使效果更为显著,利用6px左右的小画笔在文本左右添加小的细节:


  16. 给其它地方添加一些小光点,使某一区域显得更为亮一点。


  17. 可以利用自由变换命令不断的变换光线的形状,以达到最好的效果。


  18. 添加色彩平衡调整图层,


  19. 最终效果如图所示:


posted @ 2012-04-09 11:43 豪情 阅读(110) 评论(0) 编辑

火焰字教程

原文链接

  1. 按着习惯先看一下结果图:

  2. 火焰字历来是ps社区中的经典教程之一,我这是它的另外一个版本,主要是利用真实火焰结合ps滤镜技术。准备好了,就让我们开始吧!

    ctrl + 双击,新建 600 * 400大小的文件,填充黑色背景,使用文字工具(t)输入数字1, 字体下载,并 ctrl + s 保存当前文字,命为“火焰字”。

  3. 在图层面板数字1图层名称后双击,弹出混合样式对话框,找到外发光选项,按以下参数设置:

  4. 并设置颜色叠加:

  5. 光泽设置:

  6. 内发光设置:

    混合模式为:实色混合,大小:9

  7. 在当前文字图层上单击右键并选择“栅格化”。为防止误操作,也可ctrl + j 创建当前图层副本,然后关闭眼睛隐藏,做为备份。

    然后在当前文字图层下新建空白图层,合并文字与空白图层,使样式完整应用于图层。

    再使用直径大小为200 左右的橡皮擦工具,擦除有尖角的部分,以便癣有空间覆盖火焰。这样效果如下图所示:

  8. 点击滤镜 -> 液化命令,选择向前变形工具,参考如下设置后,使用放大镜可放大局部,不断的对形状进行拖拽处理,使其造型更像火焰袅绕多变,在期间可不断的调整画笔大小、画笔压力以得到最佳的效果。

  9. 下载火焰素材,单击图层面板组中的通道面板,选择绿色通道,并按住ctrl单击绿色通道,得到画面中高光选区,然后点击RGB通道,

  10. 在移动工具的前提下,移动当前选区中的内容到刚才“1”文档处。

  11. 用大小为15px左右的橡皮擦工具,擦除多余的部分,留下围绕1挥舞的火焰形状。

  12. 不断的重复上一步骤,降低图层透明度到:30%,并设置混合模式为叠加。

  13. 重复上一步骤,使整体都有火焰围绕的感觉。

  14. 根据自己的兴趣,可以创建更多的字母火焰。

  15. 也可以放置到其它背景中:

这是另外一位新加坡的同学,根据教程所做:

 本人根据教程所做:

 

PSD 分层文件下载:

http://115.com/file/dpd038if#

以下是根据教程所做:

 

posted @ 2012-03-29 10:48 豪情 阅读(1265) 评论(3) 编辑

ps 版本 cs2 以上。

原文链接:http://pshero.com/photoshop-tutorials/graphic-design/vista-error-icon

图标教程

  1. 按着习惯先看一下结果图:

  2. 先让我们看看几个vista系统的图标。下面左侧的这个图标就是我们今天要说的。通过简单的颜色,图标样式的改变,你就可以很容易做出其它图标,很多人已经做出来一些。

  3. 让我们开始吧,先创建一个新文件:ctrl + 双击: 预设 -> web -> 600 X 400

    然后通过图层面板右下角的新建图层按钮新建一图层,双击图层名称,输入border

    如果你当前的工具不是椭圆( Elliptical )选区工具的话,请键盘上的M键,并且使用shift + M,转换到椭圆选区工具上来

  4. 按住shift键不放,从画布的偏左上角处开始点击并拖拽,直到占满整个画布的2/3时松左键。或离顶,右,下,左空白区域相等时松键。

    然后按键盘 D 键,重设前景背影为默认的黑白色,并使用alt + backspace(alt + del)填充前景色给街区。

  5. 保证在不取消选区的前提下,点击菜单命令:选择 -> 修改 -> 收缩 -> 15, 回车,delete(backspace)。

  6. 通过图层面板创建新层,双击图层名称,输入middle,并填充另外一个你喜欢的颜色。

    然后ctrl + d ,取消当前选区, 并ctrl + s 保存文件,命名为 icon。

  7. 现在我们添加一些图层样式,在border图层名称后双击,弹出混合图层样式面板。通过以下参数的设定,使我们的图标有良好的光感效果。

    inerr Glow: 内发光, 混合模式为:正常,不透明度为:100%

    Gradient Overlay: 渐变叠加,角度为:35

    Stoke: 描边

  8. 如果这几步操作对你来说比较不易操作的话,请直接到文章最后下载.PSD文件,以便你更容易的跟上我的思路。

    我们一般通过编辑图层样式来更方便的创建效果。

  9. 然后,在middle图层名称后双击,像前面步骤一样,创建样式。

    Bevel and Emboss: 斜面和浮雕,深度:200,大小:3,

    渐变叠加,角度:135

  10. 这样图标已经有一个大概的模样。

  11. 接下来让我们来添加x。可以使用字体也可以利用ps画出来。由于vista中的x号是两边平行且有圆角,所以我采用一种叫 Army的字体,300pt大小。可以从这儿这儿下载。

  12. 很明显方向不对,需要旋转一下。ctrl+T转换到自由变换工具,按住shift键(使他保持等比且15度角旋转)且让鼠标在变形区域进行旋转,双击变形区域内或回车,以全确定此步操作。然后调整位置使其水平垂直方向相对于icon背景居中。

  13. 通过ctrl+J再复制一个x图层,分别命名为:x-top或x-bottom。

    单击x-top的眼睛小图标,使他暂时隐藏。

  14. 对x-bottom进行3D边缘及阴影的制作,利用外发光添加1px的白边,使其看起来略大于x-top,请参考以下两步进行设定。

  15. 点击x-top,左边的眼睛位置,使其可见。

    像前面一样,添加一个渐变图层,使其看起来有金属质感。

  16. 为使其看起来更有立体的感觉,利用移动工具选中x-botom图层,然后上移或右移使其有下图的效果。

  17. 在这个教程将要结束之前,还要在icon上添加web2.0的一些样式,使其更为完美。由于vista的icon渐变不是规则的,所以还要进行以下的操作:

    在x-top图层上建一新层命为:Highlight,并且保证选中它。然后按住ctrl键单击middle层,获取middle的选区,

  18. 按 D 键,复位ps前景背景色设置,然后 ctrl + backspace ,填充 Highlight 为白色,然后调整填充为10%,使其看起来更为自然。

  19. 在保证选区工具的前提下,移动当前的选区到icon偏右下位置 backspace,留下的部分做为一个高光显示。

  20. 单击这儿下载相关文件。

  21. 做到这儿或许你感觉图标有点不太圆,或许看着不顺眼,好吧,那儿可能出了问题。

    由于ps是像素图软件,所以选区创建的圆不是一个完美的圆,所以在第三步不能用椭圆工具来创建圆,而是用形状工具中的椭圆工具。

    以下是我的PSD文件下载。

    单击下载

posted @ 2012-03-28 14:31 豪情 阅读(1004) 评论(6) 编辑

zencoding自从2009年因html,css的扩展而风靡业界,而webstorm自从2.0之后就已经集成。

无意中被不断输入的console.log,console.dir搞的很恼火,所以才有了今天的js之webstorm。由于其它编辑器对zencoding的外延不是做的很好,现下流行的编辑器里边,只有webstorm才可以扩展以下提到的命令。当然,他除了扩展js之后,还可以扩展:xml,php(phpstorm),xsl,用户也可以自定义添加:JSP,SQL,Haml或者其它的。只是提供一个思路,抛砖引玉,具体的还要看每个人自己的code习惯。webstorm比eclipse,aptana中的更改zencoding方便之处,不用重启。而比其它ide的好处在于,他可以更改。

1. File -> Settings -> Live Templates (即可手动添加, 也可以下载我添加好的文件,下载后放在:C:\Users\用户名\.WebIde10\config\templates)

这里提几个比较重要简单的扩展原则。 

// 1. js 获取元素 ($end$表示光标最后停靠的位置)
w:   window
d:   document
db:  document.body
di:  document.getElementById($END$);
dn:  document.getElementsByName($END$);
dw:  document.write($END$);

df: document.createDocumentFragment()
dc: document.createElement();
// this
i: this
t that
t.:that.me = me;
i.:this.me = me;
ts:toString()
// 2. console 相关方法
cl:  console.log($END$);
cd:  console.dir($END$);
cti:console.time('1');
cte:console.timeEnd('1');
// 3. 流程控制
if:
if($END$){        
}
ife:
if($END$){        
else {
}
for:
for(var i=0,len=arr.length; i<len; i++{
    $END$
}
while:
while($END$){
}
fi:
for (var $VAR$ in $ARRAY$) {
  $END$
}
4. 函数创建:
f:  function $END$(){ //  函数表达式
}
vf var $end$ = function(){ // 匿名函数
}
fc:
function $INDEX$(){  // 构造函数
}
$INDEX$.prototype = {
    name: function (){
    }
}
mf: // 字面量式方法创建
$END$: function(){
}
vo:
var $END$ = {
    name: function(){        
    }
}
vf:
var $END$ = function(){
}
bb:
(function(){
    $END$
})();

// 4. jQ 相关方法:
//
 原本想定为$为jq所有方法的始字母,但后来考虑不方便输入直接定为j,只保留一个 $: $();基本选择符:
//
 a. 选择器:
$: $()
#:  $('#$END$')
j:  $('$END$')
>:  $('.$END$') (因为.做为方法调用符,所以为shift + .即为键盘上的 >)
ji:$(this)
// b. event
jc: $().click(function(){
})
jh: $().hover(function(){
});
jb:$().bind('click', function(){
});
jl: $().live('click', function(){});
jd: $().delegate('click', function(){ });

// c.插件模板:
fn:
(function($){
    $.fn.$END$ = function(options){
        var defaults = {             
        };
        opts = $.extend({}, defaults, options);
        return this.each(function(){
        });
    }
})(jQuery);

2. 上面文件,左边即为输入部分,右边为扩展后,如果手动添加,还需要在下方 :

No applicable contexts yet. Define
Define中选择你的类型:

 

 

 

posted @ 2012-03-28 09:52 豪情 阅读(1457) 评论(0) 编辑

图片切换2

 

posted @ 2012-03-27 14:42 豪情 阅读(131) 评论(1) 编辑
摘要: 一、JQuery插件 jQuery插件-轻量图片轮换-UISlide jQuery插件-轻量图片轮换2-UISlide2 jQuery插件-轻量弹出层-UIDialog jQuery插件-轻量滚动条-UIScroll二、JS组件 待续三、PS 教程 [译] 用ps创建error水晶小图标 [译] 如何用ps制作火焰字[译] 如何用ps制作泼水字四、PS2HTML 待续阅读全文
posted @ 2012-03-21 16:01 豪情 阅读(114) 评论(1) 编辑
摘要: jQuery插件-轻量图片轮换-UISlide特点:1. 带标题内容的图片切换。预览图2. 接口简单,因为简单所以修改方便。修改第1行或第4行宽高即可。1.slide_wrap{position:relative;width:710px;height:340px;margin-bottom:5px;border:2pxsolid#ccc;background:#fff;color:#666;overflow:hidden;}2.slide_imglist{}3.slide_imglistli{float:left;margin-right:3px;display:inline;}4.slide阅读全文
posted @ 2012-03-21 15:57 豪情 阅读(519) 评论(3) 编辑
摘要: 参数解释:id:null,//需要赋值的IDcallOnOpen:null,//弹出后调用方法callOnClose:null,//关闭后调用方法eventType:null,//事件类型click,blur,change,dblclick,error,focus,load,mousedown,mouseout,mouseupidContent:null,//需要添加的idwidth:'auto',//宽height:'auto',//高title:'消息',//标题content:'测试内容'//内容直接上代码<!DOCT阅读全文
posted @ 2012-03-19 15:14 豪情 阅读(210) 评论(0) 编辑
摘要: 效果看演示,这是此书第三章的一个例子,与原书中示例不同的是,经过封装,结构更清晰,调用更方便,方法实现也因为封装而做了稍为的改动。其中generateDOM里边几个方法介绍:generateDOM={generate:function(){},//这是入口的核心方法,外部绑定到onclick事件处理//在这中通过walkTheDOMRecursive()递归子节点,调用processNode()方法对节点元素进行转化processNode:function(){},//如果存在诸如:<divclass=""style=""></div&阅读全文
posted @ 2012-02-15 10:46 豪情 阅读(154) 评论(0) 编辑