热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

同志们帮忙看看CSDN上的这个网页效果是怎么实现的?

就是鼠标移动到用户头像上时出现一副框框,里面写着这个用户的帐号,昵称,最新帖子等。我想知道怎么实现这个效果,我想大致的思路应该是鼠标划过头像区域时显示了另外一个图片(我已经用资源查看器查过了,那个框框
就是鼠标移动到用户头像上时出现一副框框,里面写着这个用户的帐号,昵称,最新帖子等。我想知道怎么实现这个效果,我想大致的思路应该是鼠标划过头像区域时显示了另外一个图片(我已经用资源查看器查过了,那个框框确实是一副图片),我比较头疼的是这个图片定位是怎么定位的,还有上面的字是怎么定位的。这个是css实现的还是 Javascript实现的(如果不考虑字的来源),最好来段代码,我是新手,还望多多包涵。

10 个解决方案

#1


这划过的时候不是个DIV么,怎么变图片了。整个FIREBUG看看你就知道了。

#2


鼠标 移到  头像上 获取 相对的 位置  
弹出的div 设置offsetLeft,offsetTop值

#3


引用 2 楼 vnetcbd 的回复:
鼠标 移到  头像上 获取 相对的 位置  
弹出的div 设置offsetLeft,offsetTop值

除了这个以外,因为这个弹出层是在其他层之上,所以必须把它的CSS属性里的z-index:1000,设置得高一点!
其实图就是放在
里,
,位置由div来控制,让JS去动态设置DIV的位置,就像2#所说的方法!

#4


这个是需要css+js来实现的,提供一种方案:
在头像img后面插入需要鼠标经过显示的图层,设置该图层display:none;(css,这个图层position需要设置absolute),(当然图层上面的数据,应该是从后台获取的js),鼠标经过时,显示该图层(js)

#5


这个是需要css+js来实现的,提供一种方案:
在头像img后面插入需要鼠标经过显示的图层,设置该图层display:none;(css,这个图层position需要设置absolute),(当然图层上面的数据,应该是从后台获取的js),鼠标经过时,显示该图层(js)

#6


再详细一点啊,晕,技不如人,唉

#7




function showUserCard(sender, username) {
    if (!window.loaded) return; // 未加载
    if (!currentUserCard) {
        //if (!panelTopicAdmin) return; 
        currentUserCard = new CsdnUserCard(); //*/
    }
    var point = absolutePoint(sender);
    currentUserCard.owner = sender;
    currentUserCard.show(point.x + 65, point.y, username, sender.src);
    currentUserCard.mouseover = function(e) {
        var element = typeof event != "undefined" ? event.srcElement : e.target;
        var hotCard = false;
        while (element) {
            hotCard = element == currentUserCard.owner || element == currentUserCard.div_card;
            if (hotCard) break;
            element = element.parentNode;
        }
        if (!hotCard) {
            removeEventHandler(document, "mouseover", currentUserCard.mouseover);
            currentUserCard.close();
        }
    }
    addEventHandler(document, "mouseover", currentUserCard.mouseover);
}

#8


/*//
标题:用户资料
设计:ZswangY37
版权:CSDN.NET
版本:2008103101
//*/

function CsdnUserCard() {
    this.hot = false;

    this.div_card = document.createElement("div");
    with (this.div_card.style) {
        borderStyle = "none";
        borderWidth = "0";
        display = "none";
        width = "357px";
        height = "194px";
        position = "absolute";
        textAlign = "left";
        background = "transparent url(/u/ui/styles/default/topic/bgUserCard.gif) no-repeat scroll 0 0";
        fontFamily = "Verdana,Arial,Helvetica,sans-serif";
    }
    this.div_card.card = this;
    document.body.appendChild(this.div_card);

    this.table_card = document.createElement("table");
    with (this.table_card.style) {
        top = "12px";
        left = "56px";
        position = "relative";
        width = "290px";
    }
    this.table_card.cellSpacing = "0";
    this.table_card.cellPadding = "0";
    this.table_card.border = "0";
    this.div_card.appendChild(this.table_card);

    this.tr_card = this.table_card.insertRow(-1);
    this.td_left = this.tr_card.insertCell(-1);
    with (this.td_left.style) {
        lineHeight = "170%";
        textAlign = "center";
        verticalAlign = "top";
        width = "80px";
    }
    this.a_face = document.createElement("a");
    this.a_face.target = "_blank";
    this.a_face.title = "进入个人空间";
    this.a_face.style.color = "#01359D";
    this.a_face.target = "_blank";
    this.td_left.appendChild(this.a_face);

    this.td_right = this.tr_card.insertCell(-1);
    with (this.td_right.style) {
        lineHeight = "170%";
        textAlign = "left";
        verticalAlign = "top";
    }

    this.img_face = document.createElement("img");
    this.a_face.appendChild(this.img_face);
    with (this.img_face.style) {
        border = "1px solid #5B7790";
        width = "70px";
    }

    this.br_face = document.createElement("br");
    this.td_left.appendChild(this.br_face);

    this.a_space = document.createElement("a");
    this.a_space.innerHTML = "个人空间";
    this.a_space.title = "进入个人空间";
    this.a_space.target = "_blank";
    this.td_left.appendChild(this.a_space);
    with (this.a_space.style) {
        color = "#01359D";
        textDecoration = "none";
        verticalAlign = "middle";
    }

    this.br_space = document.createElement("br");
    this.td_left.appendChild(this.br_space);

    this.a_addFriend = document.createElement("a");
    this.a_addFriend.target = "_blank";
    this.a_addFriend.title = "加为好友";
    this.td_left.appendChild(this.a_addFriend);

    this.img_addFriend = document.createElement("img");
    this.img_addFriend.src = "http://c.csdn.net/bbs/f/i/blank.gif";
    this.a_addFriend.appendChild(this.img_addFriend);

    with (this.img_addFriend.style) {
        background = "transparent url(/u/ui/styles/default/topic/addFriend.gif) no-repeat scroll 0 0";
        height = "17px";
        marginBottom = "5px";
        width = "61px";
        border = "medium none";
    }

    this.br_addFriend = document.createElement("br");
    this.td_left.appendChild(this.br_addFriend);

    /*
    this.a_message = document.createElement("a");
    this.a_message.target = "_blank";
    this.a_message.title = "发消息";
    this.td_left.appendChild(this.a_message);

    this.img_message = document.createElement("img");
    this.img_message.src = "http://c.csdn.net/bbs/f/i/blank.gif";
    this.a_message.appendChild(this.img_message);

    with (this.img_message.style) {
    background = "transparent url(/u/ui/styles/default/topic/sendIMMsg.gif) no-repeat scroll 0 0";
    height = "17px";
    marginBottom = "5px";
    width = "61px";
    border = "medium none";
    }

    this.br_message = document.createElement("br");
    this.td_left.appendChild(this.br_message);
    */

    this.a_blog = document.createElement("a");
    this.a_blog.target = "_blank";
    this.a_blog.title = "浏览博客";
    this.td_left.appendChild(this.a_blog);

    this.img_blog = document.createElement("img");
    this.img_blog.src = "http://c.csdn.net/bbs/f/i/blank.gif";
    this.a_blog.appendChild(this.img_blog);

    with (this.img_blog.style) {
        background = "transparent url(/u/ui/styles/default/topic/goBlog.gif) no-repeat scroll 0 0";
        height = "17px";
        marginBottom = "5px";
        width = "61px";
        border = "medium none";
    }

    this.span_username = document.createElement("span");
    this.span_username.innerHTML = "帐号:";
    this.td_right.appendChild(this.span_username);

    this.a_username = document.createElement("a");
    with (this.a_username.style) {
        color = "#01359D";
        fontStyle = "normal";
        textDecoration = "none";
    }
    this.td_right.appendChild(this.a_username);

    this.br_nickname = document.createElement("br");
    this.td_right.appendChild(this.br_nickname);

    this.span_nickname = document.createElement("span");
    this.span_nickname.innerHTML = "昵称:";
    this.td_right.appendChild(this.span_nickname);

    this.a_nickname = document.createElement("a");
    this.a_nickname.innerHTML = "载入中...";
    with (this.a_nickname.style) {
        color = "#01359D";
        fontStyle = "normal";
        textDecoration = "none";
    }
    this.td_right.appendChild(this.a_nickname);

    this.br_nickname = document.createElement("br");
    this.td_right.appendChild(this.br_nickname);

    this.span_topics = document.createElement("span");
    this.span_topics.innerHTML = "最新帖子:";
    this.td_right.appendChild(this.span_topics);

    this.br_topics = document.createElement("br");
    this.td_right.appendChild(this.br_topics);

    this.ol_topics = document.createElement("ol");
    this.td_right.appendChild(this.ol_topics);

    this.li_topics = {};
    this.a_topics = {};
    for (var i = 0; i < 3; i++) {
        this.li_topics[i] = document.createElement("li");
        this.li_topics[i].style.listStyleType = "decimal";
        this.a_topics[i] = document.createElement("a");
        this.a_topics[i].target = "_blank";
        with (this.a_topics[i].style) {
            color = "#01359D";
            textDecoration = "none";
        }
        this.li_topics[i].appendChild(this.a_topics[i]);
        this.li_topics[i].style.display = "none";
        this.ol_topics.appendChild(this.li_topics[i]);
    }

    this.a_more = document.createElement("a");
    this.a_more.innerHTML = "更多帖子...";
    this.a_more.title = "浏览更多发帖";
    this.a_more.target = "_blank";
    this.td_right.appendChild(this.a_more);

    with (this.a_more.style) {
        marginLeft = "90px";
        color = "#01359D";
        fontStyle = "normal";
        textDecoration = "none";
    }
}

CsdnUserCard.prototype.close = function() {
    this.div_card.style.display = "none";
    if (typeof this.onclose == "function") this.onclose(this);
}

CsdnUserCard.prototype.show = function(left, top, username, face) {
    this.username = username;
    this.a_face.href = "http://hi.csdn.net/" + username;
    this.a_space.href = "http://hi.csdn.net/" + username;
    this.a_addFriend.href = "http://webim.csdn.net/AddFriends/" + username + ".ashx";
    //this.a_message.href = "http://webim.csdn.net/Messages/" + username + ".ashx";
    this.a_blog.href = "http://blog.csdn.net/" + username;
    this.a_username.href = "http://hi.csdn.net/" + username;
    this.a_nickname.href = "http://hi.csdn.net/" + username;
    this.a_more.href = "https://forum.csdn.net/PointForum/Forum/UserTopicList.aspx?user=" + username;
    var userCard = this;
    if (!CsdnUserCard.userInfos[username]) {
        for (var i = 0; i < 3; i++)
            this.li_topics[i].style.display = "none";
        callScript("https://forum.csdn.net/PointForum/UserCard.ashx?user=" + username, function() {
            userCard.doUserChange(username);
        });
    }
    else this.doUserChange(username);
    this.div_card.style.left = left + "px";
    this.div_card.style.top = top + "px";
    this.div_card.style.display = "";
    this.a_username.innerHTML = username;
    this.img_face.src = face;
}

CsdnUserCard.prototype.doUserChange = function(username) {
    if (this.username != username) return;
    if (!CsdnUserCard.userInfos[username]) return;
    this.a_nickname.innerHTML = CsdnUserCard.userInfos[username].nickname;
    for (var i = 0; i < 3; i++) {
        if (CsdnUserCard.userInfos[username].topicList[i]) {
            this.a_topics[i].href = CsdnUserCard.userInfos[username].topicList[i].url;
            var text = CsdnUserCard.userInfos[username].topicList[i].text;
            text = text.replace(/\s \s/g, " ").replace(/                 replace(/>/g, ">").replace(/"ed;/g, '"');
            this.a_topics[i].innerHTML = text.match(/^[\s\S]{1,12}/)[0].replace(/[<>" ]/g, function($0) {
                return { "<": "<", ">": ">", " ": " " } [$0];
            });
            /*this.a_topics[i].innerHTML = text.replace(
            /^(.{12})(.*?)$/, "$1…").replace(/@/g, '@').replace(/&(?![a-z]+;)/g, '&');*/
            this.a_topics[i].title = text;

            this.li_topics[i].style.display = "";
        } else this.li_topics[i].style.display = "none";
    }
}

CsdnUserCard.userInfos = {};

function UserCardCallback(json) {
    if (typeof json == "undefined" || !json.username) return;
    CsdnUserCard.userInfos[json.username] = json;
}

原来是zswang清洁工大师的大作,难道是csdn的员工?
详细参考:
http://topic.csdn.net/u/t5/t5.js

#9


http://hi.csdn.net/zswang

[img=http://topic.csdn.net/u/t5/t5.js][/img]

#10


已经说的那么明显了!简单不能再简单了,CSDN只是隐藏了个人信息,然后指向头像再显示而已,而且样式已经控制了它的位置!

推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
author-avatar
阿笨猫
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有