马上注册,结交更多好友,享用更多功能,让你轻松玩转小K网。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这是一个使用 HTML + CSS + JavaScript 实现的 QQ2006 像素级复刻项目,重现了80/90后网友的青春记忆——那个伴随我们成长的经典QQ界面!
从登录框的珊瑚蓝渐变,到主面板的好友头像,再到聊天窗口的功能图标,所有素材全部从原版QQ2006安装包提取,力求还原最原始的体验。
「怀旧向」HTML像素级复刻QQ2006经典界面
🎯 为什么做这个?20年前的 QQ2006,是很多80/90后的数字故乡。那时我们还说着“GG/MM”,攒钱买Q秀,为太阳等级熬夜挂机……这个项目不只是UI复刻,更是一次怀旧疗愈。 本项目代码全是业余时间手搓,没有用到 AI,断断续续做了两周。 🌟 未来计划- 增加更多交互逻辑,实现基础聊天功能模拟
- 复刻更多子功能界面,如菜单面板、视频聊天界面等
⚠️ 注意事项- 仅供学习交流,请勿用于商业用途
- 尊重版权,所有素材均来自原版 QQ2006 安装包,版权归腾讯公司所有
🤝 贡献指南如果你对这个项目感兴趣,想一起打造更完整的 QQ2006 复刻版,欢迎提交 PR 或 Issue。让我们一起为这段数字记忆添砖加瓦! 📜 开源许可你可以自由地分享和修改代码,但请保留出处。
让我们一同重温那段青涩时光,用代码致敬经典!
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>QQ2006</title>
- <meta name="author" content="mengkun">
- <link rel="shortcut icon" href="img/qq.png" type="image/x-icon">
- <style>
- * {
- margin: 0;
- padding: 0;
- font-family: '宋体';
- box-sizing: border-box;
- }
-
- html, body {
- width: 100%;
- height: 100%;
- overflow: hidden;
- }
- body {
- font-size: 12px;
- font-family: '宋体';
- background: url('img/bg.jpeg') center center / cover no-repeat fixed;
- }
-
- button {
- outline: none;
- border: none;
- background: transparent;
- background-repeat: no-repeat;
- cursor: pointer;
- }
-
- input {
- font-family: 宋体;
- font-size: 12px;
- outline: none;
- }
-
- img {
- -webkit-user-drag: none;
- }
-
- .drag-parent {
- position: fixed;
- }
-
- /*windows xp UI*/
- .app__header__buttons{opacity:1;height:22px;display:flex;gap:1px;-webkit-box-align:center;align-items:center;margin-top:-1px;margin-right:1px;}
- .app__header__buttons .header__button{margin-right:1px;position:relative;width:22px;height:22px;border:1px solid rgb(255, 255, 255);border-radius:3px;}
- .app__header__buttons .header__button:hover{filter:brightness(120%);}
- .app__header__buttons .header__button:hover:active{filter:brightness(90%);}
- .app__header__buttons .header__button--minimize{box-shadow:rgb(70, 70, 255) 0px -1px 2px 1px inset;background-image:radial-gradient(circle at 90% 90%, rgb(0, 84, 233) 0%, rgb(34, 99, 213) 55%, rgb(68, 121, 228) 70%, rgb(163, 187, 236) 90%, white 100%);}
- .app__header__buttons .header__button--minimize::before{content:"";position:absolute;left:4px;top:13px;height:3px;width:8px;background-color:white;}
- .app__header__buttons .header__button--maximize{box-shadow:rgb(70, 70, 255) 0px -1px 2px 1px inset;background-image:radial-gradient(circle at 90% 90%, rgb(0, 84, 233) 0%, rgb(34, 99, 213) 55%, rgb(68, 121, 228) 70%, rgb(163, 187, 236) 90%, white 100%);}
- .app__header__buttons .header__button--maximize::before{content:"";position:absolute;display:block;left:4px;top:4px;box-shadow:white 0px 3px inset, white 0px 0px 0px 1px inset;height:12px;width:12px;}
- .app__header__buttons .header__button--close{box-shadow:rgb(218, 70, 0) 0px -1px 2px 1px inset;background-image:radial-gradient(circle at 90% 90%, rgb(204, 70, 0) 0%, rgb(220, 101, 39) 55%, rgb(205, 117, 70) 70%, rgb(255, 204, 178) 90%, white 100%);}
- .app__header__buttons .header__button--close::before{content:"";position:absolute;left:9px;top:2px;transform:rotate(45deg);height:16px;width:2px;background-color:white;}
- .app__header__buttons .header__button--close::after{content:"";position:absolute;left:9px;top:2px;transform:rotate(-45deg);height:16px;width:2px;background-color:white;}
- .app__header__buttons .header__button--disable{outline:none;opacity:0.5;}
- .app__header__buttons .header__button--disable:hover{filter:brightness(100%);}
-
- .xp_form{display:flex;position:absolute;padding:3px;background-color:rgb(8, 49, 217);flex-direction:column;border-top-left-radius:8px;border-top-right-radius:8px;}
- .xp_form .header__bg{background:linear-gradient(rgb(0, 88, 238) 0%, rgb(53, 147, 255) 4%, rgb(40, 142, 255) 6%, rgb(18, 125, 255) 8%, rgb(3, 111, 252) 10%, rgb(2, 98, 238) 14%, rgb(0, 87, 229) 20%, rgb(0, 84, 227) 24%, rgb(0, 85, 235) 56%, rgb(0, 91, 245) 66%, rgb(2, 106, 254) 76%, rgb(0, 98, 239) 86%, rgb(0, 82, 214) 92%, rgb(0, 64, 171) 94%, rgb(0, 48, 146) 100%);position:absolute;left:0px;top:0px;right:0px;height:28px;pointer-events:none;border-top-left-radius:8px;border-top-right-radius:8px;overflow:hidden;}
- .xp_form .header__bg::before{content:"";display:block;position:absolute;left:0px;opacity:1;background:linear-gradient(to right, rgb(22, 56, 230) 0%, transparent 100%);top:0px;bottom:0px;width:15px;}
- .xp_form .header__bg::after{content:"";opacity:1;display:block;position:absolute;right:0px;background:linear-gradient(to left, rgb(22, 56, 230) 0%, transparent 100%);top:0px;bottom:0px;width:15px;}
- .xp_form .app__header{user-select:none;display:flex;height:25px;line-height:25px;font-weight:700;font-size:12px;font-family:"宋体";text-shadow:#2f2f2f 1px 1px;color:white;position:absolute;left:3px;right:3px;-webkit-box-align:center;align-items:center;}
- .xp_form .app__header__icon{width:15px;height:15px;margin-left:1px;margin-right:3px;}
- .xp_form .app__header__title{flex:1 1 0%;pointer-events:none;padding-right:5px;letter-spacing:0.5px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
- .xp_form .app__content{flex:1 1 0%;position:relative;margin-top:25px;height:calc(100% - 25px);}
-
-
- .qq-repeat-x {
- repeat: repeat-x;
- }
- .qq-no-repeat {
- repeat: no-repeat;
- }
- .qq-flex-bg {
- position: absolute;
- width: 100%;
- height: 100%;
- display: flex;
- }
- .qq-single-line {
- white-space: nowrap;
- overflow: hidden;
- }
-
- .qq-btn {
- font-size: 12px;
- background: linear-gradient(to bottom, #ffffff, #9FD4FF);
- border: 1px solid #00558E;
- border-radius: 3px;
- cursor: pointer;
- }
- .qq-btn:hover {
- background: linear-gradient(to bottom, #ffffff, #B9E1FF);
- }
-
- .qq-btn:active {
- background: linear-gradient(to bottom, #97C5EC, #D2F8FD);
- }
-
- .qq-panel {
- width: 160px;
- height: auto;
- font-size: 12px;
- font-family: 宋体;
- position: relative;
- border-radius: 8px;
- overflow: hidden;
- user-select: none;
-
- width: 190px;
- height: 580px;
- display: flex;
- flex-direction: column;
- }
-
- .qq-title {
- width: 100%;
- height: 24px;
- display: flex;
- position: relative;
- }
- .qq-title-left {
- background-image: url('img/BackgroundTitleLeft.png');
- background-repeat: no-repeat;
- width: 64px;
- }
- .qq-title-center {
- flex: 1;
- background-image: url('img/BackgroundTitleCenter.png');
- }
- .qq-title-right {
- background-image: url('img/BackgroundTitleRight.png');
- background-repeat: no-repeat;
- width: 14px;
- }
- .qq-title-btns {
- display: flex;
- gap: 1px;
- position: absolute;
- right: 5px;
- top: 5px;
- }
- .qq-title-btns > button {
- width: 16px;
- height: 16px;
- }
- #qq-min {
- background-image: url('img/MinButton_Normal.png');
- }
- #qq-min:hover {
- background-image: url('img/MinButton_Hover.png');
- }
- #qq-min:active {
- background-image: url('img/MinButton_Down.png');
- }
- #qq-color {
- background-image: url('img/ColorButton_Normal.png');
- }
- #qq-color:hover {
- background-image: url('img/ColorButton_Hover.png');
- }
- #qq-color:active {
- background-image: url('img/ColorButton_Down.png');
- }
- #qq-close {
- background-image: url('img/CloseButton_Normal.png');
- }
- #qq-close:hover {
- background-image: url('img/CloseButton_Hover.png');
- }
- #qq-close:active {
- background-image: url('img/CloseButton_Down.png');
- }
- .qq-head {
- width: 100%;
- height: 44px;
- position: relative;
- overflow: hidden;
- }
-
- .qq-head-left {
- background-image: url('img/BackgroundTitleLeft2.png');
- width: 64px;
- }
- .qq-head-center {
- background-image: url('img/BackgroundTitleCenter2.png');
- flex: 1;
- }
- .qq-head-right {
- background-image: url('img/BackgroundTitleRight2.png');
- width: 14px;
- }
-
- #qq-status-pic {
- position: absolute;
- width: 32px;
- height: 32px;
- left: 8px;
- top: 6px;
- cursor: pointer;
- background-image: url('img/avatar/50.png');
- background-size: cover;
- }
-
- #qq-status-btn {
- position: absolute;
- width: 11px;
- height: 36px;
- left: 41px;
- top: 4px;
- background-image: url('img/StatusButton_Normal.png');
- }
- #qq-status-btn:hover {
- background-image: url('img/StatusButton_Hover.png');
- }
- #qq-status-btn:active {
- background-image: url('img/StatusButton_Down.png');
- }
-
- #qq-num {
- position: absolute;
- left: 54px;
- top: 9px;
- width: 109px;
- height: 13px;
- font-family: "MS Sans Serif";
- font-size: 8pt;
- font-weight: 700;
- color: #071E81;
- }
- #qq-num:hover {
- color: #000000;
- }
-
- .qq-head-btns {
- position: absolute;
- left: 54px;
- top: 24px;
- display: flex;
- gap: 6px;
- }
- .qq-head-btns button {
- height: 16px;
- }
- .qq-head-btns button > img {
- vertical-align: middle;
- }
- .qq-head-btns button > label {
- color: #071E81;
- font-family: "MS Sans Serif";
- font-size: 8pt;
- font-weight: 400;
- cursor: pointer;
- height: 16px;
- padding-left: 2px;
- }
- .qq-head-btns button:hover > label {
- color: #FFFFFF;
- }
-
- .qq-body {
- flex: 1;
- position: relative;
- }
- .qq-body-left {
- background-image: url('img/BackgroundL.png');
- width: 11px;
- }
- .qq-body-center {
- background-image: url('img/BackgroundC.png');
- flex: 1;
- }
- .qq-body-right {
- background-image: url('img/BackgroundR.png');
- width: 8px;
- }
-
- .qq-panel-bar {
- position: absolute;
- left: 3px;
- top: 4px;
- width: 29px;
- height: 100%;
- display: flex;
- flex-direction: column;
- }
-
- .qq-panel-bar button {
- background: url('img/panel-bar/barback2_normal.png');
- height: 37px;
- width: 27px;
- margin-top: -4px;
- }
- .qq-panel-bar button:hover {
- background: url('img/panel-bar/barback2_over.png');
- }
-
- .qq-panel-bar button > img {
- vertical-align: super;
- width: 22px;
- height: 22px;
- }
-
- .qq-panel-bar button.active {
- background: url('img/panel-bar/barback_disabled.png');
- z-index: 1;
- }
-
- /* 好友列表 */
- .qq-friend-box {
- position: absolute;
- left: 29px;
- right: 4px;
- height: 100%;
- background: #fff;
- border: 1px solid #2367c3;
- border-radius: 2px;
- overflow: hidden;
- padding: 1px;
- display: flex;
- gap: 1px;
- flex-direction: column;
- }
-
- .qq-friend-box > button {
- text-align: center;
- font-size: 12px;
- width: 100%;
- color: #183c94;
- padding: 1px 0;
- }
- .qq-friend-list {
- flex: 1;
- overflow-y: auto;
- }
-
- .qq-friend-group {
- background-image: url('img/group_close.png');
- background-repeat: no-repeat;
- background-position: 2px 4px;
- padding: 5px 0 5px 20px;
- color: #101c4a;
- cursor: pointer;
- overflow: hidden;
- white-space: nowrap;
- }
- .qq-friend-group.on {
- background-image: url('img/group_open.png');
- }
-
- .qq-friend-item {
- display: flex;
- padding: 4px 0 4px 4px;
- cursor: pointer;
- }
- .qq-friend-avatar {
- width: 40px;
- height: 40px;
- }
- .qq-friend-info {
- padding: 0 0 0 5px;
- overflow: hidden;
- white-space: nowrap;
- }
- .qq-friend-name {
- color: #000400;
- }
- .qq-friend-item.qq-vip .qq-friend-name {
- color: #f00;
- }
- .qq-friend-item.qq-vip .qq-friend-motto {
- color: #ff7d7b;
- }
- .qq-friend-item.qq-offline {
- filter: grayscale(100%);
- }
- .qq-friend-item.qq-offline .qq-friend-name,
- .qq-friend-item.qq-offline .qq-friend-motto {
- color: #a8a8a8;
- }
-
- .qq-friend-icons {
- display: flex;
- gap: 3px;
- }
- .qq-friend-icons div {
- width: 15px;
- height: 15px;
- background-size: contain;
- background-repeat: no-repeat;
- }
- .qq-icon-music {
- background-image: url('img/mms-bar/MMSBar_MediaRing.png');
- }
- .qq-icon-ring {
- background-image: url('img/mms-bar/MMSBar_PhoneRing.png');
- }
- .qq-icon-mobile {
- background-image: url('img/mms-bar/MMSBar_MobileQQ.png');
- }
-
-
- /* 底部的工具栏 */
- .qq-toolbar {
- height: 62px;
- position: relative;
- }
- .qq-toolbar-left {
- background-image: url('img/ToolBarBackgroundL.png');
- width: 15px;
- }
- .qq-toolbar-center {
- background-image: url('img/ToolBarBackgroundC.png');
- flex: 1;
- }
- .qq-toolbar-right {
- background-image: url('img/ToolBarBackgroundR.png');
- width: 15px;
- }
-
- .qq-toolbar-btns {
- position: absolute;
- display: flex;
- overflow: hidden;
- gap: 8px;
- height: auto;
- left: 10px;
- right: 10px;
- top: 12px;
- }
- .qq-toolbar-btns > button {
- width: 16px;
- height: 16px;
- background-size: cover;
- flex-shrink: 0;
- }
- #qq-MenuButton {
- position: absolute;
- left: 0px;
- top: 32px;
- width: 65px;
- height: 24px;
- display: block;
- background-image: url('img/MenuButton_Normal.png');
- background-size: cover;
- cursor: pointer;
- }
- #qq-MenuButton:hover {
- background-image: url('img/MenuButton_Hover.png');
- }
- #qq-MenuButton:active {
- background-image: url('img/MenuButton_Down.png');
- }
- .qq-toolbar-2 {
- top: 37px;
- left: 74px;
- }
- #qq-SearchButton {
- width: 47px;
- background-image: url('img/SearchButton.png');
- background-size: auto 100%;
- padding-left: 18px;
- color: #fff;
- font-family: 'MS Sans Serif';
- font-weight: 400;
- font-size: 8pt;
- }
- #qq-SearchButton:hover {
- color: #000;
- }
-
-
- /* QQ 登陆界面 */
-
- .qq-login {
- width: 325px;
- background-color: #ECF6FF;
- user-select: none;
- padding: 0;
- }
- .qq-login-banner {
- text-align: center;
- height: 47px;
- background-image: url('img/login_banner.png');
- background-size: 100%;
- background-position: top;
- }
- .qq-login-form {
- background: linear-gradient(to bottom, #E4F3FF, #F0F8FF, #F0F8FF, #F0F8FF, #E4F3FF);
- border: 1px solid #2F74C5;
- padding: 18px;
- margin: 6px;
- }
- .qq-login-form-row {
- margin-bottom: 18px;
- display: flex;
- align-items: left;
- position: relative;
- }
- .qq-login-form-row label {
- width: 55px;
- text-align: left;
- margin-right: 7px;
- }
- .qq-login-form-row input {
- width: 150px;
- height: 18px;
- border: 1px solid #7F9DB9;
- padding: 0 2px;
- }
- .qq-login-form-row input[type="checkbox"] {
- width: auto;
- height: auto;
- margin-right: 5px;
- }
- #qq-login-method {
- position: absolute;
- left: 46px;
- top: 4px;
- }
- #qq-login-num {
- height: 20px;
- }
- #qq-login-num-select {
- position: absolute;
- width: 17px;
- height: 18px;
- left: 189px;
- top: 1px;
- background: url('img/dropdown.png');
- }
- #qq-login-num-select:hover {
- background-image: url('img/dropdown_hover.png');
- }
- #qq-login-num-select:active {
- background-image: url('img/dropdown_active.png');
- }
- #qq-login-reg, #qq-login-forget {
- width: 60px;
- margin: 0 0 0 10px;
- }
- #qq-login-forget {
- text-decoration: none;
- white-space: nowrap;
- overflow: hidden;
- }
-
- .qq-login-check {
- margin-bottom: 0;
- }
- .qq-login-check label {
- width: auto;
- text-align: left;
- }
- .qq-login-buttons {
- display: flex;
- padding: 8px 8px 10px;
- }
- .qq-login-buttons button {
- height: 20px;
- width: 75px;
- margin: 0 5px;
- }
- .qq-login-buttons span {
- flex: 1;
- }
-
- /* 登陆中 */
- .qq-logging {
- width: 190px;
- height: 580px;
- display: flex;
- flex-direction: column;
- border-radius: 8px;
- overflow: hidden;
- user-select: none;
- }
- .qq-logging .qq-title {
- height: 190px;
- }
- .qq-logging .qq-title-left {
- background-image: url('img/logging/BITMAP1741_1.png');
- width: 64px;
- }
- .qq-logging .qq-title-center {
- background-image: url('img/logging/BITMAP1734_1.png');
- }
- .qq-logging .qq-title-right {
- background-image: url('img/logging/BITMAP1735_1.png');
- width: 12px;
- }
- .qq-logging .qq-title-btns {
- gap: 0;
- }
- .qq-logging .qq-flex-bg {
- position: relative;
- }
- .qq-logging-body {
- flex: 1;
- }
- .qq-logging .qq-body-left {
- background-image: url('img/logging/BITMAP1736_1.png');
- width: 15px;
- }
- .qq-logging .qq-body-center {
- background-image: url('img/logging/BITMAP1737_1.png');
- width: 15px;
- }
- .qq-logging .qq-body-right {
- background-image: url('img/logging/BITMAP1738_1.png');
- width: 15px;
- }
- .qq-logging .qq-bottom-left {
- background-image: url('img/logging/BITMAP1739_1.png');
- width: 15px;
- }
- .qq-logging .qq-bottom-center {
- background-image: url('img/logging/BITMAP1740_1.png');
- flex: 1;
- }
- .qq-logging .qq-bottom-right {
- background-image: url('img/logging/BITMAP1733_1.png');
- width: 15px;
- }
- .qq-logging-bottom {
- height: 184px;
- overflow: hidden;
- }
- #qq-logging-main {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- position: absolute;
- left: 0;
- right: 0;
- top: 24px;
- bottom: 24px;
- }
- #qq-logging-main p {
- margin: 2px 0 12px;
- }
- #qq-logging-cancel {
- width: 90px;
- height: 26px;
- border: none;
- outline: none;
- background-image: url('img/logging/BITMAP1742_1.png');
- }
- #qq-logging-cancel:hover {
- background-image: url('img/logging/BITMAP1744_1.png');
- }
- #qq-logging-cancel:active {
- background-image: url('img/logging/BITMAP1743_1.png');
- }
-
- .qq-im {
- background: #5db7ff;
- width: 500px;
- height: 460px;
- border-radius: 8px;
- overflow: hidden;
- }
-
-
-
- .qq-im .qq-title-btns {
- gap: 0;
- }
- .qq-im .qq-title-btns > button {
- width: 17px;
- height: 16px;
- }
-
- #qq-im-min {
- background-image: url('img/im/IMMinButton_Normal.png');
- }
- #qq-im-min:hover {
- background-image: url('img/im/IMMinButton_Hover.png');
- }
- #qq-im-min:active {
- background-image: url('img/im/IMMinButton_Down.png');
- }
-
- #qq-im-max {
- background-image: url('img/im/IMMaxButton_Normal.png');
- }
- #qq-im-max:hover {
- background-image: url('img/im/IMMaxButton_Hover.png');
- }
- #qq-im-max:active {
- background-image: url('img/im/IMMaxButton_Down.png');
- }
-
- #qq-im-close {
- background-image: url('img/im/IMCloseButton_Normal.png');
- }
- #qq-im-close:hover {
- background-image: url('img/im/IMCloseButton_Hover.png');
- }
- #qq-im-close:active {
- background-image: url('img/im/IMCloseButton_Down.png');
- }
-
- .qq-title-icon, .qq-title-text {
- position: absolute;
- color: #fff;
- font-weight: bold;
- cursor: default;
- }
- .qq-title-icon {
- background-image: url('img/im/icon.png');
- width: 16px;
- height: 16px;
- left: 5px;
- top: 5px;
- }
- .qq-title-text {
- left: 22px;
- top: 6px;
- }
-
- .qq-skin,
- .qq-contant {
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- display: flex;
- flex-direction: column;
- }
-
- .qq-skin > div {
- display: flex;
- }
- .qq-skin .qq-title-bg {
- height: 26px;
- }
- .qq-skin .qq-body-bg {
- flex: 1;
- }
-
- .qq-im .qq-title-left {
- background-image: url('img/im/IMBorderTop.png');
- width: 25px;
- }
- .qq-im .qq-title-center {
- background-image: url('img/im/IMBorderTop.png');
- background-size: 10000px 26px;
- background-position: top;
- }
-
- .qq-im .qq-bottom-left,
- .qq-im .qq-bottom-center,
- .qq-im .qq-bottom-right {
- background-image: url('img/im/IMBorderBottom.png');
- height: 8px;
- }
- .qq-im .qq-bottom-left {
- width: 10px;
- }
- .qq-im .qq-bottom-center {
- background-size: 10000px 8px;
- background-position: top;
- flex: 1;
- }
- .qq-im .qq-bottom-right {
- width: 10px;
- background-position: right;
- }
-
- .qq-im-big-toolbar {
- margin: 0 4px;
- padding-left: 6px;
- height: 36px;
- background-image: url('img/im/IMBigToolBarBackground.png');
- display: flex;
- }
- .qq-im-big-toolbar button {
- color: rgb(7,30,129);
- font-weight: bold;
- background-repeat: no-repeat;
- background-position: center left;
- background-position-x: 2px;
- padding: 0 8px 0 28px;
- border: 1px solid transparent;
- }
- .qq-im-big-toolbar button:hover {
- border-color: rgb(70,136,201);
- background-color: rgb(130,199,255);
- }
- .qq-im-big-toolbar button:active {
- border-color: rgb(40,99,157);
- background-color: rgb(83,168,245);
- }
- #qq-im-msg {
- background-image: url('img/im/IMBigToolbarMQQ.png');
- }
- #qq-im-video {
- background-image: url('img/im/IMBigToolbarVideo.png');
- }
- #qq-im-audio {
- background-image: url('img/im/IMBigToolbarQQSQQ.png');
- }
- #qq-im-file {
- background-image: url('img/im/IMBigToolbarSendFile.png');
- }
- #qq-im-3d {
- background-image: url('img/im/IMBigToolbar3DShow.png');
- }
- #qq-im-invite {
- background-image: url('img/im/IMBigToolbarInvite.png');
- }
-
- .qq-im-contant {
- display: flex;
- flex: 1;
- gap: 4px;
- padding: 0 8px 8px;
- overflow: hidden;
- min-height: 0;
- }
-
- .qq-im-main {
- display: flex;
- flex-direction: column;
- flex: 1;
- gap: 6px;
- min-height: 0;
- }
- .qq-im-side, .qq-im-chat {
- display: flex;
- flex-direction: column;
- border: 1px solid rgb(53,111,175);
- width: 140px;
- height: 100%;
- overflow: hidden;
- }
-
- /* 聊天框聊天区域 */
- .qq-im-chat {
- width: 100%;
- border-radius: 4px;
- background-color: #fff;
- overflow: hidden;
- min-height: 0;
- }
-
- .qq-im-chat-msg {
- flex: 1;
- display: flex;
- flex-direction: column;
- min-height: 0;
- }
-
- .qq-im-friend-info {
- background: linear-gradient(to bottom, #ffffff, #b6d5f5);
- border-bottom: 1px solid #84a6c6;
- padding: 1px 2px;
- color: rgb(7,30,129);
- cursor: pointer;
- }
- .qq-im-friend-info:hover {
- color: rgb(99,119,190);
- }
- .qq-im-friend-info img {
- width: 20px;
- height: 20px;
- margin-right: 5px;
- vertical-align: sub;
- float: left;
- }
-
- .qq-im-chat-msg-list {
- flex: 1;
- overflow-y: auto;
- overflow-x: hidden;
- padding: 5px;
- min-height: 0;
- max-height: 100%;
- }
- .qq-im-chat-msg-list li p {
- color: #000;
- padding-left: 15px;
- line-height: 1.4;
- }
- .qq-im-chat-msg-list li p:first-of-type {
- color: #210f95;
- padding-left: 0;
- }
- .qq-im-chat-msg-list li.my p:first-of-type {
- color: #2d794b;
- }
- .qq-im-chat-msg-list li p:first-of-type span {
- font-size: 12px;
- padding-left: 8px;
- }
-
- .qq-im-chat-toolbar {
- display: flex;
- align-items: center;
- gap: 4px;
- height: 20px;
- padding-left: 4px;
- background: url('img/im/IMSmallToolbarBackground.png');
- background-size: 10000px 100%;
- background-position: center;
- }
-
- .qq-im-chat-toolbar button {
- width: 18px;
- height: 18px;
- border: 1px solid transparent;
- background-image: url('img/im/IMSmallToolbarFace.png');
- }
-
- .qq-im-chat-toolbar button:hover {
- border-color: rgb(135,164,197);
- background-color: rgb(183,214,245);
- }
- .qq-im-chat-toolbar button:active {
- border-color: rgb(109,146,186);
- background-color: rgb(170,200,230);
- }
- .qq-im-chat-toolbar .im-toolbar-font {
- background-image: url('img/im/IMSmallToolbarFont.png');
- }
- .qq-im-chat-toolbar .im-toolbar-face {
- background-image: url('img/im/IMSmallToolbarFace.png');
- }
- .qq-im-chat-toolbar .im-toolbar-other {
- background-image: url('img/im/IMSmallToolbarOtherContent.png');
- }
- .qq-im-chat-toolbar .im-toolbar-picture {
- background-image: url('img/im/IMSmallToolbarPicture.png');
- }
- .qq-im-chat-toolbar .im-toolbar-catch {
- background-image: url('img/im/IMSmallToolbarCatch.png');
- }
- .qq-im-chat-toolbar .im-toolbar-scene {
- background-image: url('img/im/IMSmallToolbarScene.png');
- }
- .qq-im-chat-toolbar .im-toolbar-bag {
- background-image: url('img/im/IMSmallToolbarSuperbag.png');
- }
- .qq-im-chat-toolbar .im-toolbar-ptt {
- background-image: url('img/im/IMSmallToolbarPtt.png');
- }
- .qq-im-chat-toolbar span {
- background: rgb(114,149,188);
- width: 1px;
- height: 80%;
- }
-
- .qq-im-chat-send {
- height: 70px;
- padding: 4px;
- border: none;
- outline: none;
- resize: none;
- }
-
- .qq-im-btns {
- display: flex;
- height: 20px;
- gap: 5px;
- }
- .qq-im-btns span {
- flex: 1;
- }
- .qq-im-btns .qq-btn {
- padding: 0 2px;
- }
-
- /* 聊天框右侧栏 */
- .qq-im-side-btn {
- position: relative;
- height: 20px;
- width: 100%;
- z-index: 2;
- text-align: left;
- padding-left: 20px;
- background-image: url('img/im/IMSidebarButtonExpand_Normal.png');
- background-size: 1000px 100%;
- }
- .qq-im-side-btn::before,
- .qq-im-side-btn::after {
- position: absolute;
- content: '';
- height: 100%;
- top: 0;
- z-index: -1;
- }
- .qq-im-side-btn::before {
- background-image: url('img/im/IMSidebarButton_Normal.png');
- width: 50px;
- left: 0;
- }
- .qq-im-side-btn::after {
- background-image: url('img/im/IMSidebarMenu_Normal.png');
- width: 33px;
- right: 0;
- }
- .qq-im-side-btn:hover::before {
- background-image: url('img/im/IMSidebarButton_Hover.png');
- }
- .qq-im-side-btn:hover::after {
- background-image: url('img/im/IMSidebarMenu_Hover.png');
- }
- .qq-im-show {
- height: 100%;
- background-size: cover;
- background-position: 50%;
- }
- .qq-im-zone {
- background: #f6f6f6;
- color: #0f0657;
- }
- .qq-im-zone div {
- line-height: 1.4;
- padding: 0 2px;
- }
- .qq-im-zone span {
- color: red;
- }
- </style>
- </head>
-
- <body>
-
- <div class="qq-im drag-parent" style="left: 40%; top: 20%; z-index: 9999">
- <div class="qq-skin">
- <div class="qq-title-bg">
- <div class="qq-title-left"></div>
- <div class="qq-title-center"></div>
- <div class="qq-title-right"></div>
- </div>
- <div class="qq-body-bg">
- <div class="qq-body-left"></div>
- <div class="qq-body-center"></div>
- <div class="qq-body-right"></div>
- </div>
- <div class="qq-bottom-bg">
- <div class="qq-bottom-left"></div>
- <div class="qq-bottom-center"></div>
- <div class="qq-bottom-right"></div>
- </div>
- </div>
- <div class="qq-contant">
- <div class="qq-title drag-handle">
- <div class="qq-title-icon"></div>
- <div class="qq-title-text">与 メ乖乖女ソ 聊天中</div>
- <div class="qq-title-btns">
- <button id="qq-im-min" title="隐藏"></button>
- <button id="qq-im-max" title="最大化"></button>
- <button id="qq-im-close" title="关闭"></button>
- </div>
- </div>
- <div class="qq-im-big-toolbar">
- <button id="qq-im-msg">短信</button>
- <button id="qq-im-video">视频</button>
- <button id="qq-im-audio">语音</button>
- <button id="qq-im-file">传文件</button>
- <button id="qq-im-3d">3D秀</button>
- <button id="qq-im-invite">邀请</button>
- </div>
-
- <div class="qq-im-contant">
- <div class="qq-im-main">
- <div class="qq-im-chat">
- <!-- 聊天内容 -->
- <div class="qq-im-chat-msg">
- <div class="qq-im-friend-info">
- <img src="img/avatar/97.png">
- <p>メ乖乖女ソ(3453674):为了躲开所有结局的可能,你连开始都直接按了暂停键</p>
- </div>
- <ul class="qq-im-chat-msg-list">
- <li class="my">
- <p>痴情梦丶<span>20:37:01</span></p>
- <p>在吗?</p>
- </li>
- <li>
- <p>メ乖乖女ソ<span>20:37:08</span></p>
- <p>原来你也在网上冲浪啊~</p>
- </li>
- </ul>
- </div>
-
- <!-- 聊天工具栏 -->
- <div class="qq-im-chat-toolbar">
- <button class="im-toolbar-font"></button>
- <button class="im-toolbar-face"></button>
- <button class="im-toolbar-other"></button>
- <span></span>
- <button class="im-toolbar-picture"></button>
- <button class="im-toolbar-catch"></button>
- <button class="im-toolbar-scene"></button>
- <button class="im-toolbar-bag"></button>
- <button class="im-toolbar-ptt"></button>
- </div>
-
- <!-- 聊天发送框 -->
- <textarea class="qq-im-chat-send"></textarea>
- </div>
- <div class="qq-im-btns">
- <button class="qq-btn">聊天记录(H)</button>
- <button class="qq-btn">消息模式(T)</button>
- <span></span>
- <button class="qq-btn">关闭(C)</button>
- <div style="display: flex; gap: 2px;">
- <button class="qq-btn" id="btn-send-msg">发送(S)</button>
- <button class="qq-btn" style="padding: 0;">↓</button>
- </div>
- </div>
- </div>
- <div class="qq-im-side">
- <div style="flex: 1">
- <button class="qq-im-side-btn">对方形象</button>
- <div class="qq-im-show" style="background-image: url('img/im/show1.gif')"></div>
- </div>
- <div class="qq-im-zone qq-single-line">
- <button class="qq-im-side-btn">个人空间</button>
- <div>摘要:若无法为你撑起晴空,那我便陪你共沐风雨</div>
- <div>日记:<span>48</span>条/<span>169</span>评论</div>
- <div>相册:<span>12</span>张/<span>23</span>评论</div>
- <div>收藏:<span>62</span>个</div>
- </div>
- <div style="flex: 1">
- <button class="qq-im-side-btn">我的形象</button>
- <div class="qq-im-show" style="background-image: url('img/im/show3.gif')"></div>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <!-- QQ 主面板 -->
- <div class="qq-panel drag-parent" style="left: 70%; top: 10%;">
- <!-- 标题栏 -->
- <div class="qq-title drag-handle">
- <div class="qq-title-left"></div>
- <div class="qq-title-center"></div>
- <div class="qq-title-right"></div>
- <div class="qq-title-btns">
- <button id="qq-min" title="隐藏"></button>
- <button id="qq-color" title="颜色改变"></button>
- <button id="qq-close" title="关闭"></button>
- </div>
- </div>
- <!-- 用户信息头部 -->
- <div class="qq-head">
- <div class="qq-flex-bg">
- <div class="qq-head-left"></div>
- <div class="qq-head-center"></div>
- <div class="qq-head-right"></div>
- </div>
- <div id="qq-status-pic" title="修改个人资料"></div>
- <button id="qq-status-btn" title="更改状态"></button>
- <label id="qq-num">痴情梦丶(在线)</label>
- <div class="qq-head-btns">
- <button id="qq-mail" title="收发邮件">
- <img src="img/MailButton.png" /><label>(0)</label>
- </button>
- <button id="qq-security" title="安全中心">
- <img src="img/security_normal.png" />
- </button>
- <button id="qq-payment" title="我的钱包">
- <img src="img/payment.png" />
- </button>
- </div>
- </div>
- <!--主面板区域-->
- <div class="qq-body">
- <div class="qq-flex-bg">
- <div class="qq-body-left"></div>
- <div class="qq-body-center"></div>
- <div class="qq-body-right"></div>
- </div>
- <div class="qq-panel-bar">
- <button id="qq-FriendButton" title="QQ好友面板" class="active"><img src="img/panel-bar/FriendButton.png"/></button>
- <button id="qq-SBuddyButton" title="互动空间"><img src="img/panel-bar/SBuddyButton.png"/></button>
- <button id="qq-MobileButton" title="我的无线乐园"><img src="img/panel-bar/MobileButton.png"/></button>
- <button id="qq-RtxButton" title="企业好友面板"><img src="img/panel-bar/RtxButton.png"/></button>
- <button id="qq-ContentsButton" title="网络杂志面板"><img src="img/panel-bar/ContentsButton.png"/></button>
- <button id="qq-CustomButton" title="用户自定义面板"><img src="img/panel-bar/CustomButton.png"/></button>
- <button id="qq-EaseButton" title="音乐中心"><img src="img/panel-bar/EaseButton.png"/></button>
- <button id="qq-NetDiskButton" title="网络硬盘"><img src="img/panel-bar/NetDiskButton.png"/></button>
- <button id="qq-AllButton" title="综合业务面板"><img src="img/panel-bar/IntegratePanel.png"/></button>
- <button id="qq-PanelMngButton" title="面板管理器"><img src="img/panel-bar/BlankPanel.png"/></button>
- </div>
-
- <div class="qq-friend-box">
- <button class="qq-btn">QQ好友</button>
- <div class="qq-friend-list">
- <div class="qq-friend-group">
- 我的好友(19/26)
- </div>
- <div class="qq-friend-group on">
- 家人(5/13)
- </div>
- <div class="qq-friend-item">
- <img class="qq-friend-avatar" src="img/avatar/16.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">阿辉</p>
- <p class="qq-friend-motto">人生沟坎多因能力不足,门槛高低全凭实力</p>
- <div class="qq-friend-icons"></div>
- </div>
- </div>
- <div class="qq-friend-item qq-vip">
- <img class="qq-friend-avatar" src="img/avatar/22.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">哎哟喂</p>
- <p class="qq-friend-motto">我爱吃红烧肉</p>
- <div class="qq-friend-icons">
- <div class="qq-icon-music"></div>
- <div class="qq-icon-mobile"></div>
- </div>
- </div>
- </div>
- <div class="qq-friend-item">
- <img class="qq-friend-avatar" src="img/avatar/5.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">小王子</p>
- <p class="qq-friend-motto">我珍忄昔、祢鳪忄董,我放掱、你却拉住我。。</p>
- <div class="qq-friend-icons">
- <div class="qq-icon-music"></div>
- </div>
- </div>
- </div>
- <div class="qq-friend-item">
- <img class="qq-friend-avatar" src="img/avatar/7.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">happy</p>
- <p class="qq-friend-motto"> </p>
- <div class="qq-friend-icons">
- <div class="qq-icon-mobile"></div>
- </div>
- </div>
- </div>
- <div class="qq-friend-item">
- <img class="qq-friend-avatar" src="img/avatar/9.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">木子</p>
- <p class="qq-friend-motto">你也在网上冲浪啊</p>
- <div class="qq-friend-icons">
- </div>
- </div>
- </div>
- <div class="qq-friend-item">
- <img class="qq-friend-avatar" src="img/avatar/11.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">灰</p>
- <p class="qq-friend-motto">有事请留言</p>
- <div class="qq-friend-icons">
- <div class="qq-icon-music"></div>
- <div class="qq-icon-mobile"></div>
- </div>
- </div>
- </div>
- <div class="qq-friend-item qq-offline">
- <img class="qq-friend-avatar" src="img/avatar/18.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">爱拼才会赢</p>
- <p class="qq-friend-motto">我还年轻,所以我可以</p>
- <div class="qq-friend-icons">
- </div>
- </div>
- </div>
- <div class="qq-friend-item qq-offline">
- <img class="qq-friend-avatar" src="img/avatar/100.png"/>
- <div class="qq-friend-info">
- <p class="qq-friend-name">最深的记忆</p>
- <p class="qq-friend-motto">把你留在心中</p>
- <div class="qq-friend-icons">
- <div class="qq-icon-mobile"></div>
- </div>
- </div>
- </div>
- <div class="qq-friend-group">
- 同学(28/37)
- </div>
- <div class="qq-friend-group">
- 陌生人
- </div>
- <div class="qq-friend-group">
- 黑名单
- </div>
- </div>
-
- <button class="qq-btn">手机好友</button>
- <button class="qq-btn">群/校友录</button>
- <button class="qq-btn">最近联系人</button>
- </div>
- </div>
-
- <!--底部工具栏区域-->
- <div class="qq-toolbar">
- <div class="qq-flex-bg">
- <div class="qq-toolbar-left"></div>
- <div class="qq-toolbar-center"></div>
- <div class="qq-toolbar-right"></div>
- </div>
- <div class="qq-toolbar-btns">
- <button id="qq-MobileMsgButton" title="发送手机消息" style="background-image: url('img/MobileMsgButton.png')"></button>
- <button id="qq-GameButton" title="QQ游戏" style="background-image: url('img/GameButton.png')"></button>
- <button id="qq-TTButton" title="腾讯TT浏览器" style="background-image: url('img/TTButton.png')"></button>
- <button id="qq-ChatRoomButton" title="进入聊天室" style="background-image: url('img/ChatRoomButton.png')"></button>
- <button id="qq-QQHome" title="QQ空间" style="background-image: url('img/QQHome.png')"></button>
- <button id="qq-QQMusicButton" title="QQ音乐" style="background-image: url('img/QQMusicButton.png')"></button>
- <button id="qq-QQTVButton" title="网络电视(QQLive)" style="background-image: url('img/QQTVButton.png')"></button>
- <button id="qq-Pet" title="QQ宠物" style="background-image: url('img/OpenPet.png')"></button>
- </div>
- <div id="qq-MenuButton"></div>
- <div class="qq-toolbar-btns qq-toolbar-2">
- <button id="qq-MsgManagerButton" title="信息管理器" style="background-image: url('img/MsgManagerButton.png');background-size: auto;width: 19px"></button>
- <button id="qq-SearchButton" title="查找用户">查找</button>
- </div>
- </div>
- </div>
-
- <!-- QQ 登录窗口 -->
- <div class="xp_form drag-parent" style="z-index: 10; left: 10%; top: 36%;">
- <div class="header__bg"></div>
- <header class="app__header drag-handle">
- <img src="img/qq.png" alt="QQ用户登录" class="app__header__icon" draggable="false">
- <div class="app__header__title">QQ用户登录</div>
- <div class="app__header__buttons">
- <button class="header__button header__button--minimize"></button>
- <button class="header__button header__button--maximize header__button--disable"></button>
- <button class="header__button header__button--close"></button>
- </div>
- </header>
- <div class="app__content">
- <div class="qq-login">
- <div class="qq-login-banner"></div>
- <div class="qq-login-form">
- <div class="qq-login-form-row">
- <label for="qq-login-num">
- QQ号码
- <img id="qq-login-method" src="img/select.png">
- </label>
- <input type="text" id="qq-login-num" placeholder="<请在这儿输入QQ号码>">
- <button class="qq-btn" id="qq-login-reg">申请号码</button>
- <button id="qq-login-num-select"></button>
- </div>
- <div class="qq-login-form-row" style="align-items: flex-end">
- <label for="qq-login-password">QQ密码</label>
- <input type="password" id="qq-login-password" placeholder="">
- <a href="https://accounts.qq.com/find/password" target="_blank" id="qq-login-forget">忘了密码?</a>
- </div>
- <div class="qq-login-form-row qq-login-check">
- <label style="width: 55px"></label>
- <input type="checkbox" id="qq-login-auto" checked>
- <label for="qq-login-auto">自动登录</label>
- <input type="checkbox" id="qq-login-hide">
- <label for="qq-login-hide">隐身登录</label>
- </div>
- </div>
- <div class="qq-login-buttons">
- <button class="qq-btn" style="width: 78px">高级设置 ↓</button>
- <span></span>
- <button class="qq-btn" id="loginBtn">登录</button>
- <button class="qq-btn" id="registerBtn">取消</button>
- </div>
- </div>
- </div>
- </div>
-
- <!-- 登录中窗口 -->
- <div class="qq-logging drag-parent" style="left: 28%; top: 10%;z-index:999">
- <!-- 标题栏 -->
- <div class="qq-title drag-handle">
- <div class="qq-title-left"></div>
- <div class="qq-title-center"></div>
- <div class="qq-title-right"></div>
- <div class="qq-title-btns">
- <button id="qq-min"></button>
- <button id="qq-close"></button>
- </div>
- </div>
-
- <div class="qq-logging-body qq-flex-bg">
- <div class="qq-body-left"></div>
- <div class="qq-body-center"></div>
- <div class="qq-body-right"></div>
- </div>
- <div class="qq-logging-bottom qq-flex-bg">
- <div class="qq-bottom-left"></div>
- <div class="qq-bottom-center"></div>
- <div class="qq-bottom-right"></div>
- </div>
- <div id="qq-logging-main">
- <img src="img/logging/BITMAP1710_1.png">
- <img src="img/logging/START_GIF1704_1.gif">
- <p>正在登录</p>
- <button id="qq-logging-cancel"></button>
- </div>
- </div>
-
-
- <script>
- const playAudio = url => new Audio(url).play().catch(e => console.error('播放失败:', e));
-
- document.addEventListener('DOMContentLoaded', () => {
-
- document.getElementById('btn-send-msg').onclick = () => {
- playAudio('sound/msg.mp3');
- };
-
- document.getElementById('qq-MsgManagerButton').onclick = () => {
- playAudio('sound/system.mp3');
- };
-
- document.getElementById('qq-im-msg').onclick = () => {
- playAudio('sound/msg.mp3');
- };
-
- document.getElementById('qq-im-video').onclick = () => {
- playAudio('sound/call.mp3');
- };
-
- document.getElementById('qq-im-audio').onclick = () => {
- playAudio('sound/call.mp3');
- };
-
- playAudio('sound/msg.mp3');
-
- /* 拖拽移动窗口 */
- document.querySelectorAll('.drag-parent').forEach(parent => {
- const handle = parent.querySelector('.drag-handle');
- if (!handle) return;
-
- let isDragging = false;
- let startX, startY, startLeft, startTop;
-
- const getPosition = (el) => {
- const style = window.getComputedStyle(el);
- return {
- left: parseInt(style.left, 10) || 0,
- top: parseInt(style.top, 10) || 0
- };
- };
-
- handle.addEventListener('mousedown', (e) => {
- e.preventDefault();
- isDragging = true;
- const pos = getPosition(parent);
- startLeft = pos.left;
- startTop = pos.top;
- startX = e.clientX;
- startY = e.clientY;
- });
-
- handle.addEventListener('touchstart', (e) => {
- e.preventDefault();
- isDragging = true;
- const pos = getPosition(parent);
- startLeft = pos.left;
- startTop = pos.top;
- startX = e.touches[0].clientX;
- startY = e.touches[0].clientY;
- }, { passive: false });
-
- const moveHandler = (e) => {
- if (!isDragging) return;
- const clientX = e.clientX ?? e.touches?.[0]?.clientX;
- const clientY = e.clientY ?? e.touches?.[0]?.clientY;
-
- parent.style.left = `${startLeft + (clientX - startX)}px`;
- parent.style.top = `${startTop + (clientY - startY)}px`;
- };
-
- document.addEventListener('mousemove', moveHandler);
- document.addEventListener('touchmove', moveHandler, { passive: false });
-
- const endHandler = () => isDragging = false;
- document.addEventListener('mouseup', endHandler);
- document.addEventListener('touchend', endHandler);
- });
- });
- </script>
-
- </body>
- </html>
复制代码
|