首页 web前端 js教程 百度空间的popup效果分析_javascript技巧

百度空间的popup效果分析_javascript技巧

May 16, 2016 pm 06:59 PM
效果 百度

自从用firefox浏览器以来,就几乎养成了一个习惯,就想用WebDeveloper把一些漂亮网站的js包括css给down下来分析一下,用来学习。

百度空间的弹出窗口和拖拽效果,看起来挺不错的。现在很多知名网站都是用的这样的技术。下面把我down的js代码发出来,我分析了一部分,但是还有很多东西不明白怎么回事,没有写注释的部分,还请高手能帮我解释一下。本人属于初学,有不对的地方还请多多指教。
在声明一条吧,此代码仅做学习用,技术版权属于百度。
主要是一个叫做:popup.js的文件,如下:
/**//*********************************************** 弹出窗口.js**************************************************** **/
//为数组Array添加一个push方法
//为数组的末尾加入一个对象
if(!Array.prototype.push)
{
 Array.prototype.push=function ()
 {
 var startLength=this.length;
 for(var i=0;i {
 this[startLength i]=arguments[i];
 }
 return this.length;
 }
 };

//对G函数的参数进行处理
function G()
{
 //定义一个数组用来保存参数
 var elements=new Array();
 //循环分析G中参数的内容
 for(var i=0;i {
 var element=arguments[i];

 //如果参数的类型为string,则获得以这个参数为ID的对象
 if(typeof element=='string')
 {
 element=document.getElementById(element);
 }
 //如果参数的长度为1
 if(arguments.length==1)
 {
 return element;
 }
 //将对象加入到数组的末尾
 elements.push(element);
 };
 return elements;
};

Function.prototype.bind=function (object)
{
 var __method=this;
 return function ()
 {
 __method.apply(object,arguments);
 };
};

//绑定事件
Function.prototype.bindAsEventListener=function (object)
{
 var __method=this;
 return function (event){__method.call(object,event||window.event);};
};


Object.extend=function (destination,source)
{
 for(property in source)
 {
 destination[property]=source[property];
 };
 return destination;
};


if(!window.Event)
{
 var Event=new Object();
};

Object.extend(
 Event,

 {
 observers:false,
 element:function (event)
 {
 return event.target||event.srcElement;
 },

 isLeftClick:function (event)
 {
 return (((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));
 },

 pointerX:function (event)
 {
 return event.pageX||(event.clientX (document.documentElement.scrollLeft||document.body.scrollLeft));
 },

 pointerY:function (event)
 {
 return event.pageY||(event.clientY (document.documentElement.scrollTop||document.body.scrollTop));
 },

 stop:function (event)
 {
 if(event.preventDefault)
 {
 event.preventDefault();
 event.stopPropagation();
 }
 else 
 {
 event.returnValue=false;
 event.cancelBubble=true;
 };
 },

 findElement:function (event,tagName)
 {
 var element=Event.element(event);
 while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
 element=element.parentNode;
 return element;
 },

 _observeAndCache:function (element,name,observer,useCapture)
 {
 if(!this.observers)
 this.observers=[];
 if(element.addEventListener)
 {
 this.observers.push([element,name,observer,useCapture]);
 element.addEventListener(name,observer,useCapture);
 }
 else if(element.attachEvent)
 {
 this.observers.push([element,name,observer,useCapture]);
 element.attachEvent('on' name,observer);
 };
 },

 unloadCache:function ()
 {
 if(!Event.observers)
 return;
 for(var i=0;i {
 Event.stopObserving.apply(this,Event.observers[i]);
 Event.observers[i][0]=null;
 };
 Event.observers=false;
 },

 观察:函数(元素、名称、观察者、useCapture)
 {
 var element=G(element);
 useCapture=useCapture||false;
 if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
 name='keydown';
 this._observeAndCache(元素、名称、观察者、useCapture);
 }、

 stopObserving:函数(元素、名称、观察者、useCapture)
 {
 var element=G(element);
 useCapture=useCapture||false;
 if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
 name='keydown';
 if(element.removeEventListener)
 {
 element.removeEventListener(name,observer,useCapture);
 }
 else if(element.detachEvent)
 {
 element.detachEvent('on' name,observer);
 };
 }
 }
);

Event.observe(window,'unload',Event.unloadCache,false);



var Class=function ()
{
var_class=function ()
{
this.initialize.apply(this,arguments);
 };
 for(i=0;i {
 superClass=arguments[i];
for(superClass.prototype 中的成员)
 {
 _class.prototype[member]=superClass.prototype[member];
 };
 };
 _class.child=function ()
 {
 返回新的类(this);
 };
 _class.extend=function (f)
 {
for(f 中的属性)
 {
 _class.prototype[property]=f[property];
 };
 };
 返回_class;
};


//改变百度空间的最下面和最低端的p的id值
//如果flag为begin,则为弹出状态的id值
//如果flag为end ,则为非弹出状态的id值,即知道的id值
function space(flag)
{
if(flag=="begin")
{
var ele=document .getElementById("ft");
 if(typeof(ele)!="#ff0000"&&ele!=null)
 ele.id="ft_popup";
 ele=document.getElementById("usrbar");
 if(typeof(ele)!="undefined"&&ele!=null)
 ele.id="usrbar_popup";
 }
 else if(flag=="end")
 {
 var ele=document.getElementById("ft_popup");
 if(typeof(ele)!="undefined"&&ele!=null)
 ele.id="ft";
 ele=document.getElementById("usrbar_popup");
 if(typeof(ele)!="undefined"&&ele!=null)
 ele.id="usrbar";
 };
 };



//**************************************** **************弹出类弹出窗口******************************** ******************************


var Popup=new Class();

Popup.prototype={ 
 //弹出窗口中框架的name名称
 iframeIdName:'ifr_popup',

 initialize:function (config)
 {
 //---------------弹出对话框的配置信息------------------
 //contentType:设置内容区域为什么类型:1为另外一个html文件 | 2为自定义html字符串 3为确认对话框| 4为alert警告对话框
 //isHaveTitle:是否显示标题栏
 //scrollType:设置或获取对话框中的框架是否可被滚动
 //isBackgroundCanClick:弹出对话框后,是否允许蒙布后的所有元素被点击。如果为false的话,就会有全屏蒙布,如果为true,就会去掉全屏蒙布
 //isSupport的话Draging:是否支持拖拽
 // isShowShadow:是否现实遮挡
 //isReloadOnClose:是否刷新页面,并关闭对话框
 //宽度:宽度
 //高度:高度
 this.config=Object.extend({contentType: 1,isHaveTitle:true,scrollType:'yes',isBackgroundCanClick:false,isSupportDraging:true,isShowShadow:true,isReloadOnClose:true,width:400,height:300},config||{});

 //----------------对话框的参数值信息-------------------- ----
 //shadowWidth :阴影的宽度
 //contentUrl :html链接页面
 //contentHtml :html内容
 //callBack 回调:的函数名
 //参数:回调的函数名中传的参数
 //confirmCon :对话框内容
 //alertCon :警告框内容
 //someHiddenTag:页面中需要隐藏的元素列表,以创建分割
 //someHiddenEle:需要隐藏的元素的ID列表(和someToHidden的区别是:someHiddenEle是通过getElementById,而someToHidden是通过getElementByTagName,里面放的是对象)
 //overlay :
 //coverOpacity :蒙布的透明值
 this.info={shadowWidth:4,title:"",contentUrl:"",contentHtml:"",callBack:null,parameter:null,confirmCon:"",alertCon:"",someHiddenTag:"select,object,embed",someHiddenEle:"",overlay:0,coverOpacity:40};

 //设置颜色cColor:蒙布的背景, bColor:内容区域的背景, tColor:标题栏和边框的颜色,wColor:字体的背景色
 this.color={cColor:"#EEEEEE",bColor:"#FFFFFF",tColor:"#709CD2",wColor:"#FFFFFF"};

 this.dropClass=null;

 //用来放置隐藏了的对象列表,在hiddenTag方法中第一次调用
 this.someToHidden=[];

 //如果没有标题栏则不支持拖拽
 if(!this.config.isHaveTitle)
 {
 this.config.isSupportDraging=false;
 }
 //初始化
 this.iniBuild();
 },

 //设置配置信息和参数内容
 setContent:function (arrt,val)
 {
 if(val!='')
 {
 switch(arrt)
 {
 case 'width':this.config.width=val;
 break;
 case 'height':this.config.height=val;
 break;
 case 'title':this.info.title=val;
 break;
 case 'contentUrl':this.info.contentUrl=val;
 break;
 case 'contentHtml':this.info.contentHtml=val;
 break;
 case 'callBack':this.info.callBack=val;
 break;
 case 'parameter':this.info.parameter=val;
 break;
 case 'confirmCon':this.info.confirmCon=val;
 break;
 case 'alertCon':this.info.alertCon=val;
 break;
 case 'someHiddenTag':this.info.someHiddenTag=val;
 break;
 case 'someHiddenEle':this.info.someHiddenEle=val;
 break;
 case 'overlay':this.info.overlay=val;
 };
 };
 },

 iniBuild:function ()
 {
 G('dialogCase')?G('dialogCase').parentNode.removeChild(G('dialogCase')):function (){};
 var op=document.createElement('span');
 op.id='dialogCase';
 document.body.appendChild(op);
 },

 build:function ()
 { 
 //设置全屏蒙布的z-index
 var baseZIndex=10001 this.info.overlay*10;
 //设置蒙布上的弹出窗口的z-index(比蒙布的z-index高2个值)
 var showZIndex=baseZIndex 2;

 //定义框架名称
 this.iframeIdName='ifr_popup' this.info.overlay;

 //设置图片的主路径
 var path="http://img.baidu.com/hi/img/";

 //关闭按钮
 var close='';

 //使用滤镜设置对象的透明度
 var cB='filter: alpha(opacity=' this.info.coverOpacity ');opacity:' this.info.coverOpacity/100 ';';

 //设置全屏的蒙布
 var cover='

';

 //设置弹出的主窗口设置
 var mainBox='';

 //设置窗口标题栏
 if(this.config.isHaveTitle)
 {
 mainBox ='' '

'关闭 '';
 }
 else 
 {
 mainBox =''关闭“”;
 };

 //设置窗口主内容区域
 mainBox ='

' '

';

 //如果有蒙布
 if(!this.config.isBackgroundCanClick)
 {
 G('dialogCase').innerHTML=cover mainBox;
 G('dialogBoxBG').style.height=document.body.scrollHeight;
 }
 else
 {
 G('dialogCase').innerHTML=mainBox;
 }

 Event.observe(G('dialogBoxClose'),"click",this.reset.bindAsEventListener(this),false);

 //如果支持拖动,则设置拖动处理
 if(this.config.isSupportDraging)
 {
 dropClass=new Dragdrop(this.config.width,this.config .height,this.info.shadowWidth,this.config.isSupportDraging,this.config.contentType);
 G("dialogBoxTitle").style.cursor="move";
 };

 this.lastBuild();
 },

 
 lastBuild:function ()
 {
 //设置confim对话框的具体内容
 var confirm=' ' this.info.confirmCon '

';
 //设置警报对话框的具体内容
 var alert='' this.info.alertCon '

';

 var baseZIndex=10001 this.info.overlay*10;
 var coverIfZIndex=baseZIndex 4;

 //判断内容类型决定窗口的主内容区域应该显示什么
 if(this.config.contentType==1)
 {
 var openIframe="";
 var coverIframe="

";
 G("dialogBody").innerHTML=openIframe coverIframe;
 }
 else if(this.config.contentType==2)
 {
 G("dialogBody").innerHTML=this.info.contentHtml;
 }
 else if(this.config.contentType==3)
 {
 G("dialogBody").innerHTML=confirm;Event.observe(G('dialogOk'),"click",this.forCallback.bindAsEventListener(this),false);
 Event.observe(G('dialogCancel'),"click",this.close.bindAsEventListener(this),false);
 }
 else if(this.config.contentType==4)
 {
 G("dialogBody").innerHTML=alert;
 Event.observe(G('dialogYES'),"click",this.close.bindAsEventListener(this),false);
 };
 },

 //重新加载弹出窗口的高度和内容
 reBuild:function ()
 {
 G('dialogBody').height=G('dialogBody').clientHeight;
 this.lastBuild();
 },

 show:function ()
 {
 //隐藏一些在info中制定的元素
 this.hiddenSome();
 //弹出窗口居中
 this.middle();
 //设置阴影
 if(this.config.isShowShadow)
 this.shadow();
 },

 //设置回调函数
 forCallback:function ()
 {
 return this.info.callBack(this.info.parameter);
 },

 //为弹出窗口设置阴影
 shadow:function ()
 {
 var oShadow=G('dialogBoxShadow');
 var oDialog=G('dialogBox');oShadow['style']['position']="absolute";
 oShadow['style']['background']="#000";
 oShadow['style']['display']="";
 oShadow['style']['opacity']="0.2";
 oShadow['style']['filter']="alpha(opacity=20)";
 oShadow['style']['top']=oDialog.offsetTop this.info.shadowWidth;
 oShadow['style']['left']=oDialog.offsetLeft this.info.shadowWidth;
 oShadow['style']['width']=oDialog.offsetWidth;oShadow['style']['height']=oDialog.offsetHeight;
 }, 

 //让弹出窗口居中显示
 middle:function ()
 {
 if(!this.config.isBackgroundCanClick)
 G('dialogBoxBG').style.display='';
 var oDialog=G('dialogBox');
 oDialog['style']['position']="absolute";
 oDialog['style']['display']='';
 var sClientWidth=document.body.clientWidth;
 var sClientHeight=document.body.clientHeight;
 var sScrollTop=document.body.scrollTop;
 //alert("document.body.clientWidth = "   sClientWidth   "ndocument.body.clientHeight"  sClientHeight);
 var sleft=(document.body.clientWidth/2)-(oDialog.offsetWidth/2);
 var iTop=-80 (sClientHeight/2 sScrollTop)-(oDialog.offsetHeight/2);
 var sTop=iTop>0?iTop:(sClientHeight/2 sScrollTop)-(oDialog.offsetHeight/2);
 //alert("var iTop=-80 (sClientHeight/2 sScrollTop)-(oDialog.offsetHeight/2);n"   "sClientHeight is "   sClientHeight   "nsScrollTop is "   sScrollTop);
 //alert("iTop is "   iTop);
 if(sTop<1)
 sTop="20";
 if(sleft<1)
 sleft="20";
 oDialog['style']['left']=sleft;
 oDialog['style']['top']=sTop;
 //alert("sleft is "   sleft);
 //alert("sTop is "   sTop);
 },

 //刷新页面,并关闭当前弹出窗口
 reset:function ()
 {
 if(this.config.isReloadOnClose)
 {
 top.location.reload();
 };
 this.close();
 },

 //关闭当前弹出窗口
 close:function ()
 {
 G('dialogBox').style.display='none';
 if(!this.config.isBackgroundCanClick)
 G('dialogBoxBG').style.display='none';
 if(this.config.isShowShadow)
 G('dialogBoxShadow').style.display='none';
 G('dialogBody').innerHTML='';

 this.showSome();
 },

 //隐藏someHiddenTag和someHiddenEle中的所有元素
 hiddenSome:function ()
 {
 //隐藏someHiddenTag中的所有元素
 var tag=this.info.someHiddenTag.split(",");
 if(tag.length==1&&tag[0]=="")
 {
 tag.length=0;
 }
 for(var i=0;i {
 this.hiddenTag(tag[i]);
 };
 //隐藏someHiddenEle中的所有逗号分割的ID的元素
 var ids=this.info.someHiddenEle.split(",");
 if(ids.length==1&&ids[0]=="")
 ids.length=0;
 for(var i=0;i {
 this.hiddenEle(ids[i]);
 };
 //改变顶部和底部的p的id值为弹出状态的id值,祥见space的实现
 space("begin");
 },

 //隐藏一组元素
 hiddenTag:function (tagName)
 {
 var ele=document.getElementsByTagName(tagName);
 if(ele!=null)
 {
 for(var i=0;i {
 if(ele[i].style.display!="none"&&ele[i].style.visibility!='hidden')
 {
 ele[i].style.visibility='hidden';
 this.someToHidden.push(ele[i]);
 };
 };
 };
 },

 //隐藏单个元素
 hiddenEle:function (id)
 {
 var ele=document.getElementById(id);
 if(typeof(ele)!="undefined"&&ele!=null)
 {
 ele.style.visibility='hidden';
 this.someToHidden.push(ele);
 }
 },

 //将someToHidden中保存的隐藏元素全部显示
 //并恢复顶部和底部的p为原来的id值
 showSome:function ()
 {
 for(var i=0;i {
 this.someToHidden[i].style.visibility='visible';
 };
 space("end");
 }
 };




//********************************************************Dragdrop类(拖拽动作)************************************************************

var Dragdrop=new Class();

Dragdrop.prototype={
 initialize:function (width,height,shadowWidth,showShadow,contentType)
 {
 this.dragData=null;
 this.dragDataIn=null;
 this.backData=null;
 this.width=width;
 this.height=height;
 this.shadowWidth=shadowWidth;
 this.showShadow=showShadow;
 this.contentType=contentType;
 this.IsDraging=false;
 this.oObj=G('dialogBox');
 Event.observe(G('dialogBoxTitle'),"mousedown",this.moveStart.bindAsEventListener(this),false);
 },

 moveStart:function (event)
 {
 this.IsDraging=true;
 if(this.contentType==1)
 {
 G("iframeBG").style.display="";
 G("iframeBG").style.width=this.width;
 G("iframeBG").style.height=this.height;
 };
 Event.observe(document,"mousemove",this.mousemove.bindAsEventListener(this),false);
 Event.observe(document,"mouseup",this.mouseup.bindAsEventListener(this),false);
 Event.observe(document,"selectstart",this.returnFalse,false);
 this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};
 this.backData={x:parseInt(this.oObj.style.left),y:parseInt(this.oObj.style.top)};
 },

 mousemove:function (event)
 {
 if(!this.IsDraging)
 return ;
 var iLeft=Event.pointerX(event)-this.dragData["x"] parseInt(this.oObj.style.left);
 var iTop=Event.pointerY(event)-this.dragData["y"] parseInt(this.oObj.style.top);
 if(this.dragData["y"] iTop=iTop-12;
 else if(this.dragData["y"]>parseInt(this.oObj.style.top) 25)
 iTop=iTop 12;
 this.oObj.style.left=iLeft;
 this.oObj.style.top=iTop;
 if(this.showShadow)
 {
 G('dialogBoxShadow').style.left=iLeft this.shadowWidth;
 G('dialogBoxShadow').style.top=iTop this.shadowWidth;
 };
 this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};
 document.body.style.cursor="move";
 },

 mouseup:function (event)
 {
 if(!this.IsDraging)
 return ;
 if(this.contentType==1)
 G("iframeBG").style.display="none";
 document.onmousemove=null;
 document.onmouseup=null;
 var mousX=Event.pointerX(event)-(document.documentElement.scrollLeft||document.body.scrollLeft);
 var mousY=Event.pointerY(event)-(document.documentElement.scrollTop||document.body.scrollTop);
 if(mousX<1||mousY<1||mousX>document.body.clientWidth||mousY>document.body.clientHeight)
 {
 this.oObj.style.left=this.backData["x"];
 this.oObj.style.top=this.backData["y"];
 if(this.showShadow)
 {
 G('dialogBoxShadow').style.left=this.backData.x this.shadowWidth;
 G('dialogBoxShadow').style.top=this.backData.y this.shadowWidth;
 };
 };
 this.IsDraging=false;
 document.body.style.cursor="";
 Event.stopObserving(document,"selectstart",this.returnFalse,false);
 },

 returnFalse:function ()
 {
 return false;
 }
 };

将上面对popup.js文件做个引用,下面是对这个js文件进行测试的html页面的代码。你可以回去很方便的测试。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PopUpTest.aspx.cs" Inherits="PopUpTest" %>




 无标题页

 

 

 function ShowIframe()
 {
 var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:500});
 pop.setContent("contentUrl","Default.aspx");
 pop.setContent("title","iframe框架示例");
 pop.build();
 pop.show();
 }
 function ShowHtmlString()
 {
 var strHtml = "dsdadsdadasdasddadasddsadads";
 var pop=new Popup({ contentType:2,isReloadOnClose:false,width:340,height:300});
 pop.setContent("contentHtml",strHtml);
 pop.setContent("title","html字符串示例");
 pop.build();
 pop.show();
 }
 function ShowConfirm()
 {
 var pop=new Popup({ contentType:3,isReloadOnClose:false,width:340,height:80});
 pop.setContent("title","confirm对话框示例");
 pop.setContent("confirmCon","confirm对话框的内容");
 pop.setContent("callBack",ShowCallBack);
 pop.setContent("parameter",{id:"pCall",str:"点击确定后显示的字符串",obj:pop});
 pop.build();
 pop.show();
 }
 function ShowAlert()
 {
 var pop=new Popup({ contentType:4,isReloadOnClose:false,width:340,height:80});
 pop.setContent("title","alert警告框示例");
 pop.setContent("alertCon","alert对话框的内容");
 pop.build();
 pop.show();
 }

 
 function ShowCallBack(para)
 {
 var o_pop = para["obj"]
 var obj = document.getElementById(para["id"]);
 o_pop.close();
 obj.innerText = para["str"];

 }

 



 
 


 iframe框架示例
 
 html字符串示例
 
 confirm对话框示例
 
 alert警告框示例
 


 
 


 



代码一堆一堆的啊!那个拖拽的不是很清楚怎么回事?上面的那个class函数也不清楚到底是怎么弄的。凡是没有写注释的地方,基本上就不是很明白。我找时间再分析分析吧!找时间把其它的注释也给写上。如果大家明白的,还请多多指教,越详细越好。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

用户遭遇罕见故障 三星 Watch 智能手表突现白屏问题 用户遭遇罕见故障 三星 Watch 智能手表突现白屏问题 Apr 03, 2024 am 08:13 AM

你可能遇到过智能手机屏幕出现绿色线条的问题,即使没见过,也一定在网络上看到过相关图片。那么,智能手表屏幕变白的情况你遇见过吗?4月2日,CNMO从外媒了解到,一名Reddit用户在社交平台上分享了一张图片,展示了三星Watch系列智能手表屏幕变白的情况。该用户写道:"我离开时正在充电,回来时就这样了,我尝试重启,但重启过程中屏幕还是这样。"三星Watch智能手表屏幕变白这位Reddit用户并未指明这款智能手表的具体型号。不过,从图片上看,应该是三星Watch5。此前,另一位Reddit用户也报告

九州风神阿萨辛 4S 散热器评测 风冷'刺客大师”范儿 九州风神阿萨辛 4S 散热器评测 风冷'刺客大师”范儿 Mar 28, 2024 am 11:11 AM

说起阿萨辛ASSASSIN,相信玩家们一定会想到《刺客信条》中的各位刺客大师,不仅身手了得,而且"躬身于黑暗、服务于光明"的信条,与国内知名机箱/电源/散热器品牌九州风神(DeepCool)旗下的阿萨辛ASSASSIN系列旗舰级风冷散热器不谋而合。最近,该系列的最新产品阿萨辛ASSASSIN4S重磅上线,"西装刺客,再进阶"为高级玩家带来全新的风冷散热体验。外观一览细节满满阿萨辛4S散热器采用双塔构造+单风扇内嵌设计,外面包覆立方体造型的整流罩,整体感极强,并提供白、黑两种配色可选,满足不同色系

deepseek网页版入口 deepseek官网入口 deepseek网页版入口 deepseek官网入口 Feb 19, 2025 pm 04:54 PM

DeepSeek 是一款强大的智能搜索与分析工具,提供网页版和官网两种访问方式。网页版便捷高效,免安装即可使用;官网则提供全面产品信息、下载资源和支持服务。无论个人还是企业用户,都可以通过 DeepSeek 轻松获取和分析海量数据,提升工作效率、辅助决策和促进创新。

2 个月不见,人形机器人 Walker S 会叠衣服了 2 个月不见,人形机器人 Walker S 会叠衣服了 Apr 03, 2024 am 08:01 AM

机器之能报道编辑:吴昕国内版的人形机器人+大模型组队,首次完成叠衣服这类复杂柔性材料的操作任务。随着融合了OpenAI多模态大模型的Figure01揭开神秘面纱,国内同行的相关进展一直备受关注。就在昨天,国内"人形机器人第一股"优必选发布了人形机器人WalkerS深入融合百度文心大模型后的首个Demo,展示了一些有趣的新功能。现在,得到百度文心大模型能力加持的WalkerS是这个样子的。和Figure01一样,WalkerS没有走动,而是站在桌子后面完成一系列任务。它可以听从人类的命令,折叠衣物

春日里的精致光影艺术,哈趣 H2 性价比之选 春日里的精致光影艺术,哈趣 H2 性价比之选 Apr 17, 2024 pm 05:07 PM

随着春天的到来,万物复苏,一切都充满了生机与活力。在这个美好的季节里,如何为家居生活增添一抹别样的色彩?哈趣H2投影仪,以其精致的设计和超高的性价比,成为了这个春天里不可或缺的一道亮丽风景。这款H2投影仪小巧玲珑却不失时尚。无论是放在客厅的电视柜上,还是卧室的床头柜旁,都能成为一道亮丽的风景线。它的机身采用了奶白色的磨砂质地,这种设计不仅让投影仪的外观更显高级,同时也增加了触感的舒适度。米色仿皮纹材质,更是为整体外观增添了一抹温馨与雅致。这种色彩与材质的搭配,既符合现代家居的审美趋势,又能够融入

航嘉 MX750P 全模组电源评测:750W 的白金实力浓缩 航嘉 MX750P 全模组电源评测:750W 的白金实力浓缩 Mar 28, 2024 pm 03:20 PM

ITX平台以小巧的身形吸引了不少追求极致和独特美感的玩家,随着制程的提升和技术的进步,英特尔第14代酷睿和RTX40系显卡都可以在ITX平台中发挥实力,游戏玩家也对SFX电源有了更高的要求。游戏爱好者航嘉推出新的MX系列电源,在满足高性能需求的ITX平台中,MX750P全模组电源的定额功率高达750W,同时通过了80PLUS白金级认证。以下我们就带来这款电源的评测。航嘉MX750P全模组电源采用了简约时尚的设计理念,共有黑白两款供玩家选择,均采用磨砂表面处理,搭配银灰色和红色的字体有很好的质感,

轻松拿捏 4K 高清图像理解!这个多模态大模型自动分析网页海报内容,打工人简直不要太方便 轻松拿捏 4K 高清图像理解!这个多模态大模型自动分析网页海报内容,打工人简直不要太方便 Apr 23, 2024 am 08:04 AM

一个可以自动分析PDF、网页、海报、Excel图表内容的大模型,对于打工人来说简直不要太方便。上海AILab,香港中文大学等研究机构提出的InternLM-XComposer2-4KHD(简写为IXC2-4KHD)模型让这成为了现实。相比于其他多模态大模型不超过1500x1500的分辨率限制,该工作将多模态大模型的最大输入图像提升到超过4K(3840x1600)分辨率,并支持任意长宽比和336像素~4K动态分辨率变化。发布三天,该模型就登顶HuggingFace视觉问答模型热度榜单第一。轻松拿捏

百度息壤贝壳获取方法介绍 百度息壤贝壳获取方法介绍 Mar 28, 2024 am 09:11 AM

在息壤中有不少用户不知道贝壳在哪里,怎么才能获得,有些玩家转了几个小时候都没有找到,下面小编就带来了百度息壤贝壳的获取方法,快来一起看看吧。百度息壤贝壳怎么获得1、首先我们需要来到社区,然后来到下图的这个位置。2、在这里选择目的地,选择进入188层。3、进入到188层后,在周围转悠会有这个提示,点击我知道了就行。4、贝壳的位置可能会有些难找,就在188电梯的后面,有个发光的小点就是贝壳。5、捡贝壳需要用VR手柄才能捡,点击贝壳就可以了。兑换方式1、首先点击页面右上方的“设置”图标,在设置中选择“

See all articles