2007/11/07

用 CSS+DIV+JS 画出windows live messenger

用 CSS+DIV+JS 画出windows live messenger

今天SPACE从麻醉药中醒来,本期望他有个很漂亮的更新,打开后,还是老样子。
人参是土黄色的,逼近红色,红色有给人极至的感觉。凡事有个度,先让自己红一下。

前段时间给自己画了个LOGO ,然后又学习了一下CSS和JS
下面是学习的一个成果
http://keyue.cn/BATE/second.htm

教程如下
首先打开 Dreamweaver 新建一张HTML基本页 基于 xhtml-transitional的

直接进入代码视图(设计视图只看效果)

首先在在body上插入两个JS函数
效果是鼠标在页面上对各个层的切换,这段代码是拷贝应用 (这里暂时用不上z-index多层)
代码如下
var dragEffect;
function moveCurrent()
{
if (!dragging || !current)
return;

if (event.button == 0)
{
releaseCurrent();
return;
}

if (!startedDragging)
{
current.className = 'dragging current window';
startedDragging = true;
}

dragEffect();
}
function releaseCurrent()
{
if (!current)
return;

current.className = 'current window';
dragging = false;
startedDragging = false;
}
function makeUnselectable(e)
{
e.unselectable=true;
if (e.className == 'content')
return;

for (var c=e.firstChild;c;c=c.nextSibling)
if (c.nodeType == 1)
makeUnselectable(c);
}
bodyCSS定义如下:
body {font-family:tahoma;font-size: 12px;padding: 0;margin: 0;vertical-align: middle; overflow:hidden;}


再建一个主体层

这里引用两个JS函数,作用是 鼠标在层上移动时和左键点在层上时改变鼠标样式,并对层的长宽作出改变
代码改下:
var current = null;
var dragging = false;
var startedDragging = false;
function setCurrent(w)
{
if (w != current)
{
// unset old current
if (current)
current.className = 'window';
// set current
current = w;
current.className = 'current window';
// put current on top
document.getElementById("windows").appendChild(current);
}
// init drag
var offsetX = event.x - parseInt(w.currentStyle.left);
var offsetY = event.y - parseInt(w.currentStyle.top);
if (offsetY < dragging =" true;" drageffect =" function()" pixelleft =" event.x" pixeltop =" event.y" width =" parseInt(w.currentStyle.width);" resizex =" offsetX"> width - 10;
var height = parseInt(w.currentStyle.height);
var resizeY = offsetY > height - 10;
if (resizeX || resizeY)
{
dragging = true;
var offsetX = event.x - width;
var offsetY = event.y - height;
dragEffect = function()
{
if (resizeX)
w.style.pixelWidth = event.x - offsetX;
if (resizeY)
w.style.pixelHeight = event.y - offsetY;
}
}
}
}
function calcResize(w)
{
var offsetX = event.x - parseInt(w.currentStyle.left);
var offsetY = event.y - parseInt(w.currentStyle.top);
var width = parseInt(w.currentStyle.width);
var resizeX = offsetX > width - 10;
var height = parseInt(w.currentStyle.height);
var resizeY = offsetY > height - 10;
w.style.cursor = (resizeX||resizeY)?(resizeY?"S":"")+(resizeX?"E":"")+"-resize":"default";
}

fundus层CSS定义如下:
#fundus{z-index:1;position:absolute; height:510px; top:43px; left:790px; width: 220px;}

然后在 fundus层上建立
//阴影层(产生透明阴影)
//颜色过度层(并有透明效果)
//目录层
//头部背景层,产生区别于glass的颜色过度
//面板上部位置
//主要框架
//底部
这个层分开,但用绝对位置(absolute)层叠或分布,主要是防止颜色混合了效果出不来

//阴影层(产生透明阴影) CSS代码:
#shadow{height:100%; width:100%; top:-2px; left:-2px; position:absolute; background-color:#000000;filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=4, makeShadow=true, shadowOpacity=.50); }
这里应用了(CSSfilter) Blur 滤镜 作用是:制作对象内容的模糊效果。
几个参数的作用
enabled Enabled 设置或检索滤镜是否激活。
makeShadow MakeShadow 设置或检索对象的内容是否被处理为阴影显示。
pixelRadius PixelRadius 设置或检索模糊效果的作用深度。
shadowOpacity ShadowOpacity 设置或检索使用 makeShadow 制作成的阴影的透明度(暗度)。

//颜色过度层(并有透明效果) CSS代码:
#glass{position: absolute; border:1 solid black;top: 0px;left: 0px;width: 100%;height: 100%; background-color:#FFFFFF; filter: alpha(opacity=70, style=1, finishOpacity=95,startx=50,starty=50,finishx=50, finishy=0);}
这里应用了(CSSfilter)alpha 滤镜 作用是:调整对象内容的透明度,可以设置整体透明度,或线性渐变和放射渐变的透明度。
几个参数的作用
enabled Enabled 设置或检索滤镜是否激活。
style Style 设置或检索透明渐变的样式。
opacity Opacity 设置或检索透明渐变的开始透明度。
finishOpacity FinishOpacity 设置或检索透明渐变的结束透明度。
startX StartX 设置或检索透明渐变开始点的水平坐标。
startY StartY 设置或检索透明渐变开始点的垂直坐标。
finishX FinishX 设置或检索透明渐变结束点的水平坐标。
finishY FinishY 设置或检索透明渐变结束点的垂直坐标。

//目录层
只有几个字
Ginseng Msg Bate

CSS代码:
#menu{position:absolute; height:30px; left:5px; line-height:30px;}

//头部背景层 CSS代码:
#headg{position:absolute; top:36px; left:3%; width:94%; height:80px; background-color:#000000;filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=1, makeShadow=true, shadowOpacity=.25);}
这里也应用了Blur滤镜。

//面板上部位置 CSS代码:
#head{position:absolute; top:36px; left:3%; width:94%; height:80px; background-color:#FFFFFF; border:1 solid #AAAAAA;}
这个层上放置
//颜色过度 CSS代码:
#inhead{position:absolute;width:100%; height:100%;background-color:#aaaaaa; filter: alpha(opacity=80, style=1, finishOpacity=0,startx=50,starty=70,finishx=50, finishy=0)
alpha(opacity=80, style=1, finishOpacity=30,startx=50,starty=70,finishx=50, finishy=100)}
应用两上alpha 双层过度

//放置头像 CSS代码:
#imageh{position:absolute; top:10; left:10; height:40; width:40;border:1 solid #AAAAAA; background-color:#87CAD0; cursor:pointer;}

// 下拉框一 呢称

CSS代码:
#comboxname{position:absolute; top:9; left:60; height:20;}

头 // 下拉框二 个人消息

CSS代码:
#comboxmes{position:absolute; top:30; left:60; height:20;}

//邮箱及其它



CSS代码:
#mail{top:53px; left:10; position:absolute; width:90%; height:16;}

//主要框架 CSS代码:
#list{position:absolute; top:125; left:3%; width:94%; height:70%; background-color:#FFFFFF;}
放置主窗体:
//左边选择窗体 CSS代码:
#leftlist{ position:absolute;width:33px; height:40px;border:1 solid #AAAAAA; border-right-color:#FFFFFF; cursor:pointer;}

//内容窗体 CSS代码:
#context{position:absolute; left:32px; top:39;width:expression(this.parentElement.offsetWidth-32); height:70%;border:1 solid #AAAAAA ;border-top-color:#FFFFFF;}
用表达式定位。


//搜索框 CSS代码:
#searchbar{position:absolute; left:32px; top:0; width:expression(this.parentElement.offsetWidth-32); height:40px;border:1 solid #AAAAAA; border-left-color:#FFFFFF; line-height:38px;}
同上 表达式定位。

//广告窗体 CSS 代码:
#adr{position:absolute; top:85%; left:0;; width:90%; height:15%; background-color:#CCCCFF; border:1 solid black; cursor:pointer;}


最后是底部
//底部 CSS 代码:
#bottom{position:absolute; top:95%; width:90%; height:3%; left:3%;}

几个控件的代码
#tsear{height:20px;color:#AAAAAA; width:150px;}
#bsearch{width:100%; height:16; color:#AAAAAA; font-size:12px}
#flashc{ z-index:1;position:absolute; top:30;left:600;}
#ads{width:97%; background:#000000; height:200px;}
select{background-color:#EEEEEE; border:0;}


好了 完成了 在这个基础上再加上AJAX技术,作个在线的MSN没问题,效果跟软件界面一样好。
注(这里应用了CSS滤镜,XPsq2会限制这些代码,要取消限制后观看代码)

上面都用唯一的ID来区别各个层,来分清各个层的作用和伴置。了解CSS代码的效果和JS代码的效果。
再看一次页面吧
http://keyue.cn/BATE/second.htm
posted on 2006-04-21 22:22 ginseng 阅读(221) 评论(0) 编辑 收藏

No comments: