Browse Source

首页+二级

master
xuhuajiao 11 months ago
parent
commit
f24f342611
  1. 18
      css/common.css
  2. 477
      css/index.css
  3. 7
      css/libs/animate.min.css
  4. 187
      css/libs/reset.css
  5. 90
      css/plugins/gridNavigation.css
  6. 486
      css/style.css
  7. BIN
      fonts/PingFang.ttc
  8. BIN
      fonts/斗鱼追光体.ttf
  9. BIN
      images/an-bottom.webp
  10. BIN
      images/animation.webp
  11. BIN
      images/bg.mp4
  12. BIN
      images/header-btn-hover.png
  13. BIN
      images/header-btn.png
  14. BIN
      images/header.png
  15. BIN
      images/icon_home_full.png
  16. BIN
      images/icon_my_full.png
  17. BIN
      images/icon_play_o_full.png
  18. BIN
      images/img-bg.png
  19. BIN
      images/index-an1.webp
  20. BIN
      images/index-an2.webp
  21. BIN
      images/index-an3.webp
  22. BIN
      images/index-an4.webp
  23. BIN
      images/index-an5.webp
  24. BIN
      images/index-an6.webp
  25. BIN
      images/index-box.png
  26. BIN
      images/index-box2.png
  27. BIN
      images/left.png
  28. BIN
      images/page-box.png
  29. BIN
      images/right.png
  30. 138
      index.html
  31. 138
      index2.html
  32. 138
      index3.html
  33. 23
      js/index.js
  34. 147
      js/libs/flexible.js
  35. 2
      js/libs/jquery-3.7.1.min.js
  36. 4
      js/libs/jquery.min.js
  37. 2
      js/libs/layer/layer.js
  38. 2
      js/libs/layer/mobile/layer.js
  39. 1
      js/libs/layer/mobile/need/layer.css
  40. BIN
      js/libs/layer/theme/default/icon-ext.png
  41. BIN
      js/libs/layer/theme/default/icon.png
  42. 1
      js/libs/layer/theme/default/layer.css
  43. BIN
      js/libs/layer/theme/default/loading-0.gif
  44. BIN
      js/libs/layer/theme/default/loading-1.gif
  45. BIN
      js/libs/layer/theme/default/loading-2.gif
  46. 1
      js/libs/layui/css/layui.css
  47. 1
      js/libs/layui/css/modules/code.css
  48. 1
      js/libs/layui/css/modules/laydate/default/laydate.css
  49. BIN
      js/libs/layui/css/modules/layer/default/icon-ext.png
  50. BIN
      js/libs/layui/css/modules/layer/default/icon.png
  51. 1
      js/libs/layui/css/modules/layer/default/layer.css
  52. BIN
      js/libs/layui/css/modules/layer/default/loading-0.gif
  53. BIN
      js/libs/layui/css/modules/layer/default/loading-1.gif
  54. BIN
      js/libs/layui/css/modules/layer/default/loading-2.gif
  55. BIN
      js/libs/layui/font/iconfont.eot
  56. 554
      js/libs/layui/font/iconfont.svg
  57. BIN
      js/libs/layui/font/iconfont.ttf
  58. BIN
      js/libs/layui/font/iconfont.woff
  59. BIN
      js/libs/layui/font/iconfont.woff2
  60. 5
      js/libs/layui/layui.js
  61. 205
      js/plugins/jquery.easing.1.3.js
  62. 891
      js/plugins/jquery.gridnav.js
  63. 400
      js/plugins/pdfobject.js
  64. BIN
      media/pdf/AELOS PRO 3 使用手册V1.42-基于镜像1.0.4,软件版本2.0.0(含)以上.pdf
  65. BIN
      media/video/ROS桌面多功能机械臂myCobot_280_Pi颜色识别分类.mp4
  66. 175
      page1.html
  67. 238
      page2.html
  68. 238
      page4.html
  69. 332
      test.html

18
css/common.css

@ -0,0 +1,18 @@
/* 粒子背景 */
#particles-js {
width: 100%;
height: calc(100vh);
background-color: #000000;
background-image: url('');
background-size: cover;
background-position: 50% 50%;
background-repeat: no-repeat;
overflow: hidden;
}
.particles-js-canvas-el {
position: fixed;
top: 0;
left: 0;
z-index: 9;
}

477
css/index.css

@ -0,0 +1,477 @@
@font-face {
font-family: "DOUYU-Regular";
src: url('../fonts/斗鱼追光体.ttf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "PingFang";
src: url('../fonts/PingFang.ttc');
font-weight: normal;
font-style: normal;
}
.ai-wrapper{
position: relative;
width: 100vw;
height: 100vh;
background-color: #0F1B46;
font-family: 'DOUYU-Regular';
overflow: hidden;
}
.ai-bg{
width: 100%;
height: 100%;
object-fit: cover;
position: absolute;
top: 0;
left: 0;
z-index: 6;
}
/* 头部 */
.ai-header-wrapper{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 1.8125rem;
overflow: hidden;
z-index: 999;
}
.ai-header{
position: relative;
width: 100%;
height: 100%;
}
.header-btn{
position: absolute;
top: .45rem;
display: flex;
justify-content: center;
width: 2.2875rem;
height: 1.1125rem;
line-height: .7rem;
font-size: .175rem;
color: #fff;
background: url('../images/header-btn.png') no-repeat left top;
background-size:cover;
}
.header-btn span{
display: block;
width: .25rem;
height: .25rem;
margin-top: .175rem;
margin-right: .025rem;
}
.header-home{
left: 0;
}
.header-home span{
background: url('../images/icon_home_full.png') no-repeat left top;
background-size:cover;
}
.header-login{
right: 0;
}
.header-login span{
background: url('../images/icon_my_full.png') no-repeat left top;
background-size:cover;
}
.header-btn:hover{
background: url('../images/header-btn-hover.png') no-repeat left top;
background-size:cover;
cursor: pointer;
}
.header-title {
width: 24.025rem;
height: 1.8125rem;
margin: 0 auto;
background: url('../images/header.png') no-repeat left top;
background-size:cover;
}
.header-title h2{
font-size: .475rem;
line-height: 1.25rem;
font-weight: 300;
text-align: center;
background: -webkit-linear-gradient(90deg, #fff 0%, #9FCAFF 70%);
background: linear-gradient(180deg, #fff 0%, #9FCAFF 70%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
text-shadow: 0px 11px 11px rgba(105,173,255,0.34), 0px 0px 24px rgba(105,173,255,0.68);
}
/* 首页菜单部分 */
.ai-index{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.index-list {
position: absolute;
top: 2.5rem;
}
.list-left{
left: 1.5rem;
}
.list-right{
right: 1.5rem;
}
.index-list li{
position: relative;
width: 5rem;
height: 2.5rem;
margin-bottom: 1rem;
z-index: 9999;
cursor: pointer;
}
.index-list li::before{
content: "";
position: absolute;
left: 0;
top: 0;
width: 5rem;
height: 2.5rem;
background: url('../images/index-box2.png') no-repeat left top;
background-size:cover;
z-index: 10;
}
.other-bg li::before{
background: url('../images/index-box.png') no-repeat left top;
background-size:cover;
}
.index-list li a{
position: relative;
display: block;
width: calc(100% - .625rem);
height: calc(100% - .5rem);
padding: .5rem 0 0 .625rem;
cursor: pointer;
}
.index-list li a p{
position: relative;
font-size: .4rem;
z-index: 99;
color: #fff;
}
.index-list li a span{
position: relative;
font-size: .3rem;
font-family: 'PingFang';
background: -webkit-linear-gradient(360deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
background: linear-gradient(360deg, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
z-index: 99;
}
.index-list li a img{
position: absolute;
right: 0;
top: 0;
display: block;
width: 2.5rem;
height: 2.5rem;
z-index: 99;
}
.list-right li::before{
transform: rotateY(-180deg)
/* transform: scaleY(-1); */
}
.list-left li:nth-child(1),
.list-left li:nth-child(3){
margin-left: 1rem;
}
.list-right li:nth-child(2){
/* margin-left: 1rem; */
}
.list-right li a{
text-align: right;
padding: .5rem .625rem 0 0;
}
.list-right li a{
padding: .5rem .625rem 0 0;
}
.list-right li img{
left: 0;
}
/* 没有背景框的时候 */
.no-box-style li::before{
background: none;
}
.no-box-style li a img{
position: absolute;
right: -0.25rem;
top: -.75rem;
display: block;
width: 2.75rem;
height: 2.75rem;
}
.no-box-style.list-right li a img{
left: -0.25rem;
}
.no-box-style li a span{
background: none;
-webkit-background-clip:initial;
background-clip:initial;
-webkit-text-fill-color:#3D528B;
color: #3D528B;
}
.list-left li:nth-child(1) {
position: absolute;
left: 0;
top: 0;
}
.list-left li:nth-child(2) {
position: absolute;
left: 0;
top: 280px;
animation-delay: .3s;
}
.list-left li:nth-child(3) {
position: absolute;
left: 0;
top: 560px;
animation-delay: .6s;
}
.list-right li:nth-child(1) {
position: absolute;
right: 1rem;
top: 0;
}
.list-right li:nth-child(2) {
position: absolute;
right: 0;
top: 280px;
animation-delay: .3s;
}
.list-right li:nth-child(3) {
position: absolute;
right: 1rem;
top: 560px;
animation-delay: .6s;
}
/* 首页-机器人+底图 */
.index-middle{
width: 11.25rem;
}
.index-middle img{
display: block;
}
.ai-human{
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
z-index: 9;
/* animation-duration: .4s;
animation-delay: .3s; */
}
.ai-bottom{
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
z-index: 6;
}
/* 编程体验 */
.page-content{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: calc(100% - 2.75rem);
padding-top: 2.75rem;
z-index: 10;
font-family: 'PingFang';
}
/* ai数字人 start */
.chat-wrapper {
position: relative;
width: 10rem;
height: 10rem;
margin: 1.75rem auto 0 auto;
background-color: #fff;
border-radius: .125rem;
z-index: 99;
}
.chat-content {
width: 100%;
height: calc(100% - 2.5rem);
overflow: hidden;
overflow-y: scroll;
}
.chat-message {
display: flex;
justify-content: flex-end;
margin: .125rem;
padding: .125rem;
line-height: .5rem;
font-size: .25rem;
color: #000;
}
.chat-message p {
position: relative;
line-height: .5rem;
padding: 0 .125rem;
margin-right: .125rem;
background-color: burlywood;
border-radius: .05rem;
}
.chat-message p span{
position: absolute;
left: 0;
bottom: -0.45rem;
width: 1rem;
height: .375rem;
text-align: center;
line-height: .375rem;
border: 1px solid #000;
border-radius: .05rem;
font-size: .175rem;
cursor: pointer;
}
.chat-message p span:hover{
background-color: #999;
}
.chat-message p span.remove-btn{
border: none;
color: #999;
}
.chat-message p span.remove-btn:hover{
background-color: #fff;
}
.chat-message img {
display: block;
width: .5rem;
height: .5rem;
border-radius: 50%;
}
.bot-message {
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
}
.bot-message p {
margin-left: .125rem;
background-color: rgb(0, 209, 112);
}
.loading{
position: relative;
}
.loading img {
display: block;
width: .25rem;
height: .25rem;
margin-top: .125rem;
animation: rotate 2s linear infinite;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.chat-send {
width: 100%;
height: 2.5rem;
background-color: #fff;
border-radius: .125rem;
}
.chat-send textarea {
display: block;
width: calc(100% - .5rem);
height: 1.25rem;
font-size: .3rem;
line-height: .375rem;
border: none;
padding: .25rem;
background-color: #e4e4e4;
}
.send-button-container {
text-align: right;
}
.send-button {
margin: .125rem .25rem 0 0;
padding: 0 .25rem;
line-height: .5rem;
font-size: .325rem;
color: #000;
}
.send-disabled-button {
color: #7c7c7c;
}
/* ai数字人 end */

7
css/libs/animate.min.css
File diff suppressed because it is too large
View File

187
css/libs/reset.css

@ -0,0 +1,187 @@
@charset "utf-8";
/* CSS Document */
html {
color: #727272;
background: #f5f5f5;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
code,
form,
fieldset,
legend,
input,
textarea,
p,
blockquote,
th,
td,
hr,
button,
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
margin: 0;
padding: 0;
}
body,
button,
input,
select,
textarea {
font: 12px arial, "微软雅黑"
}
input,
select,
textarea {
font-size: 100%;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
th {
text-align: inherit;
}
fieldset,
img {
border: 0;
}
iframe {
display: block;
}
abbr,
acronym {
border: 0;
font-variant: normal;
}
del {
text-decoration: line-through;
}
address,
caption,
cite,
code,
dfn,
em,
i,
th,
var {
font-style: normal;
font-weight: 500;
}
ol,
ul {
list-style: none;
}
caption,
th {
text-align: left;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 100%;
font-weight: 500;
}
q:before,
q:after {
content: '';
}
ins,
a {
text-decoration: none;
}
button {
border: 0;
outline: none;
}
/* common
-----------------------------------------------*/
.clearfix:after {
content: "\200B";
display: block;
height: 0;
clear: both;
}
.clearfix {
zoom: 1;
}
.clear {
clear: both;
visibility: hidden;
}
a {
color: #000;
text-decoration: none;
}
a:hover {
color: #000;
text-decoration: none;
}
select::-ms-expand {
display: none;
}
input,
textarea:focus {
outline: none;
}
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}

90
css/plugins/gridNavigation.css

@ -0,0 +1,90 @@
/* Thumbnail Effects Style */
.tj_container{
position: relative;
}
.page-list-btn {
width: .5rem;
height: 2.5rem;
position: absolute;
top: 50%;
transform: translateY(-50%);
cursor: pointer;
z-index: 9999;
}
.tj_prev {
left: 1rem;
background: url("../../images/left.png") no-repeat top left;
background-size: cover;
}
.tj_next {
right: 1rem;
background: url("../../images/right.png") no-repeat top left;
background-size: cover;
}
.tj_wrapper {
position: relative;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.tj_wrapper ul {
width: 18.25rem;
height: 9rem;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
.tj_wrapper ul li {
display: flex;
justify-content: center;
align-items: center;
width: 6rem;
height: 4.5rem;
}
.tj_wrapper ul li a {
display: block;
width: 5rem;
height: 3.5rem;
background: url("../../images/page-box.png") no-repeat left top;
background-size: cover;
}
.tj-list-img {
position: relative;
width: 4.6rem;
height: 2.725rem;
margin: .2rem auto .125rem auto;
}
.tj-list-img img {
display: block;
width: 4.6rem;
height: 2.725rem;
}
.tj-list-img span{
position: absolute;
top: 50%;
left: 50%;
display: block;
width: .8rem;
height: .8rem;
background: url("../../images/icon_play_o_full.png") no-repeat left top;
background-size: cover;
transform: translateX(-50%) translateY(-50%);
}
.tj_wrapper ul li a p {
font-size: .25rem;
height: .375rem;
line-height: .375rem;
color: #fff;
text-align: center;
}

486
css/style.css

@ -0,0 +1,486 @@
.contanier{
width: 100%;
height: calc(100vh);
background: url('../images/bg.gif') no-repeat top left;
background-size: cover;
overflow: hidden;
}
.return {
position: fixed;
bottom: 50%;
right: 20px;
width: 1.25rem;
height: 1.25rem;
border-radius: 100%;
text-align: center;
font-size: .375rem;
line-height: 1.25rem;
background-color: yellow;
font-weight: bold;
color: #000;
z-index: 9999;
cursor: pointer;
}
/* nav部分 */
.flex-container {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
justify-items: center;
margin: 30px;
z-index: 99;
}
.flex-container .flex-middle{
width: 500px;
height: 400px;
line-height: 400px;
text-align: center;
color: #fff;
font-size: .25rem;
font-weight: bold;
border: 1px solid #fff;
}
.flex-container ul {
position: relative;
display: flex;
flex-wrap: wrap;
flex-direction: row;
width: calc((100% - 600px) / 2);
height: 400px;
}
/* .flex-container ul.flex-left {
position: relative;
border: 1px solid red;
} */
.flex-container ul.flex-left li:nth-child(1) {
position: absolute;
left: 0;
top: 0;
}
.flex-container ul.flex-left li:nth-child(2) {
position: absolute;
left: 0;
top: 140px;
animation-delay: .3s;
}
.flex-container ul.flex-left li:nth-child(3) {
position: absolute;
left: 0;
top: 280px;
animation-delay: .6s;
}
.flex-container ul.flex-right li:nth-child(1) {
position: absolute;
right: 0;
top: 0;
}
.flex-container ul.flex-right li:nth-child(2) {
position: absolute;
right: 0;
top: 140px;
animation-delay: .3s;
}
.flex-container ul.flex-right li:nth-child(3) {
position: absolute;
right: 0;
top: 280px;
animation-delay: .6s;
}
.flex-container ul li{
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 1.25rem;
line-height: 1.25rem;
text-align: center;
color: #fff;
font-size: .25rem;
font-weight: bold;
background-color: rgb(0, 174, 255);
border: 1px solid #000;
cursor: pointer;
}
.flex-container ul li img{
display: block;
margin-left: .375rem;
height: .625rem;
}
.flex-item-link img.active{
position: fixed;
top: 50%;
left: -50%;
width: 400px;
height: 400px;
margin: -200px 0 0 -200px;
}
.flex-container ul li a{
display: block;
}
/* pdf预览 */
.pdfobject-container {
position: fixed;
top: 0;
left: 0;
width: calc(100vw);
height: calc(100vh);
z-index: 999;
}
.chat-wrapper {
position: relative;
width: 10rem;
height: 10rem;
margin: .375rem auto;
background-color: #fff;
border-radius: .125rem;
z-index: 99;
}
.chat-content {
width: 100%;
height: calc(100% - 2.5rem);
overflow: hidden;
overflow-y: scroll;
}
.chat-message {
display: flex;
justify-content: flex-end;
margin: .125rem;
padding: .125rem;
line-height: .5rem;
font-size: .25rem;
color: #000;
}
.chat-message p {
position: relative;
line-height: .5rem;
padding: 0 .125rem;
margin-right: .125rem;
background-color: burlywood;
border-radius: .05rem;
}
.chat-message p span{
position: absolute;
left: 0;
bottom: -0.45rem;
width: 1rem;
height: .375rem;
text-align: center;
line-height: .375rem;
border: 1px solid #000;
border-radius: .05rem;
font-size: .175rem;
cursor: pointer;
}
.chat-message p span:hover{
background-color: #999;
}
.chat-message p span.remove-btn{
border: none;
color: #999;
}
.chat-message p span.remove-btn:hover{
background-color: #fff;
}
.chat-message img {
display: block;
width: .5rem;
height: .5rem;
border-radius: 50%;
}
.bot-message {
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
}
.bot-message p {
margin-left: .125rem;
background-color: rgb(0, 209, 112);
}
.loading{
position: relative;
}
.loading img {
display: block;
width: .25rem;
height: .25rem;
margin-top: .125rem;
animation: rotate 2s linear infinite;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.chat-send {
width: 100%;
height: 2.5rem;
background-color: #fff;
border-radius: .125rem;
}
.chat-send textarea {
display: block;
width: calc(100% - .5rem);
height: 1.25rem;
font-size: .3rem;
line-height: .375rem;
border: none;
padding: .25rem;
background-color: #e4e4e4;
}
.send-button-container {
text-align: right;
}
.send-button {
margin: .125rem .25rem 0 0;
padding: 0 .25rem;
line-height: .5rem;
font-size: .325rem;
color: #000;
}
.send-disabled-button {
color: #7c7c7c;
}
.scene-wrapper{
position: relative;
display: flex;
justify-content: space-around;
flex-wrap: wrap;
width: calc(100vw - .525rem);
height: calc(100vh - .525rem);
padding: .25rem;
z-index: 99;
}
.scene-item{
display: flex;
flex-direction: column;
align-self: center;
width: calc(100% / 3 - .525rem);
margin: .25rem;
}
.scene-item img{
display: block;
width: 2.5rem;
height: 2.5rem;
margin: 0 auto;
}
.scene-item p{
margin-top: .25rem;
font-size: .3rem;
color: #fff;
text-align: center;
}
/* 菜单3D */
.show-nav{
position: relative;
width: 1000px;
height: 460px;
display: flex;
justify-content: center;
align-items: center;
margin: 0 auto;
z-index: 99;
}
#showcase {
width: 100%;
height: 360px;
/* border-radius: 8px; */
position: absolute;
transform-style: preserve-3d;
transition: transform 1s;
}
.menu-item{
position: absolute;
width: 240px;
height: 240px;
border-radius: 100%;
background-color: #fff;
text-align: center;
line-height: 240px;
font-size: 26px;
font-weight: bold;
color: #000;
cursor: pointer;
}
/*
.a {
transform: rotateY(0deg);
background: #ed1c24;
}
.b {
transform: rotateY(60deg);
background: #0072bc;
}
.c {
transform: rotateY(120deg);
background: #39b54a;
}
.d {
transform: rotateY(180deg);
background: #f26522;
}
.e {
transform: rotateY(240deg);
background: #630460;
}
.f {
transform: rotateY(300deg);
background: #8c6239;
}
*/
#nav {
margin-top: 10px;
text-align: center;
}
#nav > button {
width: 64px;
height: 36px;
color: #666;
font: bold 16px arial;
text-align: center;
margin: 5px;
text-shadow: 0px 1px 0px #f5f5f5;
background: #f6f6f6;
border: solid 2px rgba(0, 0, 0, 0.4);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 0 9px 1px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 0 9px 1px rgba(0, 0, 0, 0.4);
box-shadow: 0 0 9px 1px rgba(0, 0, 0, 0.4);
cursor: pointer;
}
#nav > button:active,
#nav > button.down {
background: #dfdfdf;
border: solid 2px rgba(0, 0, 0, 0.6);
box-shadow: none;
}
.container {
width: 250px;
height: 200px;
position: relative;
perspective: 1000px;
}
.carousel {
height: 100%;
width: 100%;
position: absolute;
transform-style: preserve-3d;
transition: transform 1s;
}
.item {
display: block;
position: absolute;
background: #000;
width: 250px;
height: 200px;
line-height: 200px;
font-size: .375rem;
text-align: center;
color: #FFF;
opacity: 0.95;
border-radius: 10px;
cursor: pointer;
}
.item a{
/* display: block; */
}
.a {
transform: rotateY(0deg) translateZ(250px);
background: #ed1c24;
}
.b {
transform: rotateY(60deg) translateZ(250px);
background: #0072bc;
}
.c {
transform: rotateY(120deg) translateZ(250px);
background: #39b54a;
}
.d {
transform: rotateY(180deg) translateZ(250px);
background: #f26522;
}
.e {
transform: rotateY(240deg) translateZ(250px);
background: #630460;
}
.f {
transform: rotateY(300deg) translateZ(250px);
background: #8c6239;
}
.next, .prev {
color: #444;
position: absolute;
top: 50%;
padding: 15px 30px;
cursor: pointer;
background: #CCC;
border-radius: 5px;
border-top: 1px solid #FFF;
box-shadow: 0 5px 0 #999;
transition: box-shadow 0.1s, top 0.1s;
z-index: 999;
}
.next:hover, .prev:hover { color: #000; }
.next:active, .prev:active {
top: 51%;
box-shadow: 0 1px 0 #999;
}
.next { right: .75rem; }
.prev { left: .75rem; }

BIN
fonts/PingFang.ttc

BIN
fonts/斗鱼追光体.ttf

BIN
images/an-bottom.webp

BIN
images/animation.webp

BIN
images/bg.mp4

BIN
images/header-btn-hover.png

After

Width: 183  |  Height: 89  |  Size: 13 KiB

BIN
images/header-btn.png

After

Width: 183  |  Height: 89  |  Size: 13 KiB

BIN
images/header.png

After

Width: 1922  |  Height: 145  |  Size: 104 KiB

BIN
images/icon_home_full.png

After

Width: 20  |  Height: 20  |  Size: 326 B

BIN
images/icon_my_full.png

After

Width: 20  |  Height: 20  |  Size: 370 B

BIN
images/icon_play_o_full.png

After

Width: 64  |  Height: 64  |  Size: 1.2 KiB

BIN
images/img-bg.png

After

Width: 368  |  Height: 218  |  Size: 1.4 KiB

BIN
images/index-an1.webp

BIN
images/index-an2.webp

BIN
images/index-an3.webp

BIN
images/index-an4.webp

BIN
images/index-an5.webp

BIN
images/index-an6.webp

BIN
images/index-box.png

After

Width: 400  |  Height: 200  |  Size: 60 KiB

BIN
images/index-box2.png

After

Width: 400  |  Height: 200  |  Size: 54 KiB

BIN
images/left.png

After

Width: 40  |  Height: 200  |  Size: 8.4 KiB

BIN
images/page-box.png

After

Width: 400  |  Height: 280  |  Size: 72 KiB

BIN
images/right.png

After

Width: 40  |  Height: 200  |  Size: 8.3 KiB

138
index.html

@ -0,0 +1,138 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" type="text/css" href="css/libs/reset.css" />
<link rel="stylesheet" type="text/css" href="css/libs/animate.min.css" />
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<title>首页</title>
</head>
<body>
<div class="ai-wrapper">
<video class="ai-bg" src="./images/bg.mp4" autoplay="autoplay" loop="loop" muted="muted"></video>
<div class="ai-header-wrapper">
<div class="ai-header">
<!-- <div class="header-btn header-home"><span></span><p>首页</p></div> -->
<div class="header-title">
<h2>AI编程机器人体验系统</h2>
</div>
<div class="header-btn header-login"><span></span><p>登录</p></div>
</div>
</div>
<div class="ai-index">
<!-- no-box-style -->
<ul class="index-list list-left no-box-style">
<li class="animate__animated animate__backInLeft">
<!-- page1.html -->
<a id="page1" href="javascript:;">
<p>编程体验</p>
<span>Programming experience</span>
<img src="./images/index-an1.webp" alt="编程体验" />
</a>
</li>
<li class="animate__animated animate__backInLeft">
<!-- page2.html -->
<a id="page2" href="javascript:;">
<p>场景演示</p>
<span>Scene presentation</span>
<img src="./images/index-an2.webp" alt="场景演示" />
</a>
</li>
<li class="animate__animated animate__backInLeft">
<a href="javascript:;">
<p>AI资源库</p>
<span>AI resource library</span>
<img src="./images/index-an3.webp" alt="AI资源库" />
</a>
</li>
</ul>
<div class="index-middle">
<img class="ai-human" src="./images/animation.webp" alt="机器人" />
<img class="ai-bottom" src="./images/an-bottom.webp" alt="底部光效" />
</div>
<!-- no-box-style -->
<ul class="index-list list-right no-box-style">
<li class="animate__animated animate__backInRight">
<a id="page4" href="javascript:;">
<p>实战竞赛</p>
<span>Actual combat</span>
<img src="./images/index-an4.webp" alt="实战竞赛" />
</a>
</li>
<li class="animate__animated animate__backInRight">
<a href="javascript:;">
<p>作品展示</p>
<span>Work display</span>
<img src="./images/index-an5.webp" alt="作品展示" />
</a>
</li>
<li class="animate__animated animate__backInRight">
<a id="aiChat" href="javascript:;">
<p>AI数字人</p>
<span>AI digital human</span>
<img src="./images/index-an6.webp" alt="AI数字人" />
</a>
</li>
</ul>
</div>
</div>
</body>
<script type="text/javascript" src="js/libs/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="js/libs/flexible.js"></script>
<script type="text/javascript">
$(function () {
$('.list-left li').hover(
function() {
$(this).removeClass('animate__backInLeft').addClass('animate__bounce');
},
function() {
$(this).removeClass('animate__bounce')
}
);
$('.list-right li').hover(
function() {
$(this).removeClass('animate__backInRight').addClass('animate__headShake');
},
function() {
$(this).removeClass('animate__headShake')
}
);
$('.index-list li').on('click', function () {
const _this = $(this)
$('.ai-human').css('animation-duration', '0.2s').addClass('animate__animated animate__flash')
setTimeout(function () {
$('.list-left li').removeClass('animate__backInLeft').addClass('animate__animated animate__backOutLeft')
$('.list-right li').removeClass('animate__backInRight').addClass('animate__animated animate__backOutRight')
setTimeout(function(){
// window.top.location.href = 'ai_chat.html';
const href = _this.find('a').attr('id');
if (href === 'page1') {
window.location.href = 'page1.html';
} else if (href === 'page2') {
window.location.href = 'page2.html';
} else if (href === 'page4') {
window.location.href = 'page4.html';
} else if (href === 'aiChat') {
window.location.href = 'ai_chat.html';
} else {
// 其他情况的处理逻辑
}
return false;
},1000)
}, 1000)
})
})
</script>
</html>

138
index2.html

@ -0,0 +1,138 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" type="text/css" href="css/libs/reset.css" />
<link rel="stylesheet" type="text/css" href="css/libs/animate.min.css" />
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<title>首页</title>
</head>
<body>
<div class="ai-wrapper">
<video class="ai-bg" src="./images/bg.mp4" autoplay="autoplay" loop="loop" muted="muted"></video>
<div class="ai-header-wrapper">
<div class="ai-header">
<!-- <div class="header-btn header-home"><span></span><p>首页</p></div> -->
<div class="header-title">
<h2>AI编程机器人体验系统</h2>
</div>
<div class="header-btn header-login"><span></span><p>登录</p></div>
</div>
</div>
<div class="ai-index">
<!-- no-box-style -->
<ul class="index-list list-left">
<li class="animate__animated animate__backInLeft">
<!-- page1.html -->
<a id="page1" href="javascript:;">
<p>编程体验</p>
<span>Programming experience</span>
<img src="./images/index-an1.webp" alt="编程体验" />
</a>
</li>
<li class="animate__animated animate__backInLeft">
<!-- page2.html -->
<a id="page2" href="javascript:;">
<p>场景演示</p>
<span>Scene presentation</span>
<img src="./images/index-an2.webp" alt="场景演示" />
</a>
</li>
<li class="animate__animated animate__backInLeft">
<a href="javascript:;">
<p>AI资源库</p>
<span>AI resource library</span>
<img src="./images/index-an3.webp" alt="AI资源库" />
</a>
</li>
</ul>
<div class="index-middle">
<img class="ai-human" src="./images/animation.webp" alt="机器人" />
<img class="ai-bottom" src="./images/an-bottom.webp" alt="底部光效" />
</div>
<!-- no-box-style -->
<ul class="index-list list-right">
<li class="animate__animated animate__backInRight">
<a id="page4" href="javascript:;">
<p>实战竞赛</p>
<span>Actual combat</span>
<img src="./images/index-an4.webp" alt="实战竞赛" />
</a>
</li>
<li class="animate__animated animate__backInRight">
<a href="javascript:;">
<p>作品展示</p>
<span>Work display</span>
<img src="./images/index-an5.webp" alt="作品展示" />
</a>
</li>
<li class="animate__animated animate__backInRight">
<a id="aiChat" href="javascript:;">
<p>AI数字人</p>
<span>AI digital human</span>
<img src="./images/index-an6.webp" alt="AI数字人" />
</a>
</li>
</ul>
</div>
</div>
</body>
<script type="text/javascript" src="js/libs/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="js/libs/flexible.js"></script>
<script type="text/javascript">
$(function () {
$('.list-left li').hover(
function() {
$(this).removeClass('animate__backInLeft').addClass('animate__bounce');
},
function() {
$(this).removeClass('animate__bounce')
}
);
$('.list-right li').hover(
function() {
$(this).removeClass('animate__backInRight').addClass('animate__headShake');
},
function() {
$(this).removeClass('animate__headShake')
}
);
$('.index-list li').on('click', function () {
const _this = $(this)
$('.ai-human').css('animation-duration', '0.2s').addClass('animate__animated animate__flash')
setTimeout(function () {
$('.list-left li').removeClass('animate__backInLeft').addClass('animate__animated animate__backOutLeft')
$('.list-right li').removeClass('animate__backInRight').addClass('animate__animated animate__backOutRight')
setTimeout(function(){
// window.top.location.href = 'ai_chat.html';
const href = _this.find('a').attr('id');
if (href === 'page1') {
window.location.href = 'page1.html';
} else if (href === 'page2') {
window.location.href = 'page2.html';
} else if (href === 'page4') {
window.location.href = 'page4.html';
} else if (href === 'aiChat') {
window.location.href = 'ai_chat.html';
} else {
// 其他情况的处理逻辑
}
return false;
},1000)
}, 1000)
})
})
</script>
</html>

138
index3.html

@ -0,0 +1,138 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" type="text/css" href="css/libs/reset.css" />
<link rel="stylesheet" type="text/css" href="css/libs/animate.min.css" />
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<title>首页</title>
</head>
<body>
<div class="ai-wrapper">
<video class="ai-bg" src="./images/bg.mp4" autoplay="autoplay" loop="loop" muted="muted"></video>
<div class="ai-header-wrapper">
<div class="ai-header">
<!-- <div class="header-btn header-home"><span></span><p>首页</p></div> -->
<div class="header-title">
<h2>AI编程机器人体验系统</h2>
</div>
<div class="header-btn header-login"><span></span><p>登录</p></div>
</div>
</div>
<div class="ai-index">
<!-- no-box-style -->
<ul class="index-list list-left other-bg">
<li class="animate__animated animate__backInLeft">
<!-- page1.html -->
<a id="page1" href="javascript:;">
<p>编程体验</p>
<span>Programming experience</span>
<img src="./images/index-an1.webp" alt="编程体验" />
</a>
</li>
<li class="animate__animated animate__backInLeft">
<!-- page2.html -->
<a id="page2" href="javascript:;">
<p>场景演示</p>
<span>Scene presentation</span>
<img src="./images/index-an2.webp" alt="场景演示" />
</a>
</li>
<li class="animate__animated animate__backInLeft">
<a href="javascript:;">
<p>AI资源库</p>
<span>AI resource library</span>
<img src="./images/index-an3.webp" alt="AI资源库" />
</a>
</li>
</ul>
<div class="index-middle">
<img class="ai-human" src="./images/animation.webp" alt="机器人" />
<img class="ai-bottom" src="./images/an-bottom.webp" alt="底部光效" />
</div>
<!-- no-box-style -->
<ul class="index-list list-right other-bg">
<li class="animate__animated animate__backInRight">
<a id="page4" href="javascript:;">
<p>实战竞赛</p>
<span>Actual combat</span>
<img src="./images/index-an4.webp" alt="实战竞赛" />
</a>
</li>
<li class="animate__animated animate__backInRight">
<a href="javascript:;">
<p>作品展示</p>
<span>Work display</span>
<img src="./images/index-an5.webp" alt="作品展示" />
</a>
</li>
<li class="animate__animated animate__backInRight">
<a id="aiChat" href="javascript:;">
<p>AI数字人</p>
<span>AI digital human</span>
<img src="./images/index-an6.webp" alt="AI数字人" />
</a>
</li>
</ul>
</div>
</div>
</body>
<script type="text/javascript" src="js/libs/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="js/libs/flexible.js"></script>
<script type="text/javascript">
$(function () {
$('.list-left li').hover(
function() {
$(this).removeClass('animate__backInLeft').addClass('animate__bounce');
},
function() {
$(this).removeClass('animate__bounce')
}
);
$('.list-right li').hover(
function() {
$(this).removeClass('animate__backInRight').addClass('animate__headShake');
},
function() {
$(this).removeClass('animate__headShake')
}
);
$('.index-list li').on('click', function () {
const _this = $(this)
$('.ai-human').css('animation-duration', '0.2s').addClass('animate__animated animate__flash')
setTimeout(function () {
$('.list-left li').removeClass('animate__backInLeft').addClass('animate__animated animate__backOutLeft')
$('.list-right li').removeClass('animate__backInRight').addClass('animate__animated animate__backOutRight')
setTimeout(function(){
// window.top.location.href = 'ai_chat.html';
const href = _this.find('a').attr('id');
if (href === 'page1') {
window.location.href = 'page1.html';
} else if (href === 'page2') {
window.location.href = 'page2.html';
} else if (href === 'page4') {
window.location.href = 'page4.html';
} else if (href === 'aiChat') {
window.location.href = 'ai_chat.html';
} else {
// 其他情况的处理逻辑
}
return false;
},1000)
}, 1000)
})
})
</script>
</html>

23
js/index.js

@ -0,0 +1,23 @@
var ajaxUrl = 'http://192.168.99.86:3001'
function FetchChatTalk () {
$.ajax({
url: ajaxUrl + '/api/v1/workspace/dxhtsg/chat',
type: 'POST',
headers: {
"Authorization": "Bearer XVSPT0T-6P54SZH-QP36QKJ-KK77TN6"
},
contentType:'application/json',
dataType: "json",
data: JSON.stringify({
"message": '你是谁',
"mode":"chat"
}),
success: function (res) {
console.log('res',res)
},
error: function (err) {
console.log(err);
}
});
}

147
js/libs/flexible.js

@ -0,0 +1,147 @@
(function(win, lib) {
var doc = win.document
var docEl = doc.documentElement
var metaEl = doc.querySelector('meta[name="viewport"]')
var flexibleEl = doc.querySelector('meta[name="flexible"]')
var dpr = 0
var scale = 0
var tid
var flexible = lib.flexible || (lib.flexible = {})
if (metaEl) {
console.warn('将根据已有的meta标签来设置缩放比例')
var match = metaEl
.getAttribute('content')
// eslint-disable-next-line no-useless-escape
.match(/initial\-scale=([\d\.]+)/)
if (match) {
scale = parseFloat(match[1])
dpr = parseInt(1 / scale)
}
} else if (flexibleEl) {
var content = flexibleEl.getAttribute('content')
if (content) {
// eslint-disable-next-line no-useless-escape
var initialDpr = content.match(/initial\-dpr=([\d\.]+)/)
// eslint-disable-next-line no-useless-escape
var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)
if (initialDpr) {
dpr = parseFloat(initialDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
if (maximumDpr) {
dpr = parseFloat(maximumDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
}
}
if (!dpr && !scale) {
// eslint-disable-next-line no-unused-vars
var isAndroid = win.navigator.appVersion.match(/android/gi)
var isIPhone = win.navigator.appVersion.match(/iphone/gi)
var devicePixelRatio = win.devicePixelRatio
if (isIPhone) {
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
dpr = 2
} else {
dpr = 1
}
} else {
// 其他设备下,仍旧使用1倍的方案
dpr = 1
}
scale = 1 / dpr
}
docEl.setAttribute('data-dpr', dpr)
if (!metaEl) {
metaEl = doc.createElement('meta')
metaEl.setAttribute('name', 'viewport')
metaEl.setAttribute(
'content',
'initial-scale=' +
scale +
', maximum-scale=' +
scale +
', minimum-scale=' +
scale +
', user-scalable=no'
)
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(metaEl)
} else {
var wrap = doc.createElement('div')
wrap.appendChild(metaEl)
doc.write(wrap.innerHTML)
}
}
function refreshRem() {
var width = docEl.getBoundingClientRect().width
// 最小1366px,最大适配2560px
if (width / dpr < 1366) {
width = 1366 * dpr
} else if (width / dpr > 2560) {
width = 2560 * dpr
}
// 设置成24等份,设计稿时1920px的,这样1rem就是80px
var rem = width / 24
docEl.style.fontSize = rem + 'px'
flexible.rem = win.rem = rem
}
win.addEventListener(
'resize',
function() {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
},
false
)
win.addEventListener(
'pageshow',
function(e) {
if (e.persisted) {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
}
},
false
)
if (doc.readyState === 'complete') {
doc.body.style.fontSize = 12 * dpr + 'px'
} else {
doc.addEventListener(
'DOMContentLoaded',
// eslint-disable-next-line no-unused-vars
function(e) {
doc.body.style.fontSize = 12 * dpr + 'px'
},
false
)
}
refreshRem()
flexible.dpr = win.dpr = dpr
flexible.refreshRem = refreshRem
flexible.rem2px = function(d) {
var val = parseFloat(d) * this.rem
if (typeof d === 'string' && d.match(/rem$/)) {
val += 'px'
}
return val
}
flexible.px2rem = function(d) {
var val = parseFloat(d) / this.rem
if (typeof d === 'string' && d.match(/px$/)) {
val += 'rem'
}
return val
}
})(window, window['lib'] || (window['lib'] = {}))

2
js/libs/jquery-3.7.1.min.js
File diff suppressed because it is too large
View File

4
js/libs/jquery.min.js
File diff suppressed because it is too large
View File

2
js/libs/layer/layer.js
File diff suppressed because it is too large
View File

2
js/libs/layer/mobile/layer.js

@ -0,0 +1,2 @@
/*! layer mobile-v2.0.0 Web 通用弹出层组件 MIT License */
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?'<h3 style="'+(e?n.title[1]:"")+'">'+(e?n.title[0]:n.title)+"</h3>":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type="1">'+n.btn[0]+"</span>",2===t&&(e='<span no type="0">'+n.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(n.content||"")+"</p>"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"<div "+("string"==typeof n.shade?'style="'+n.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(n.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(n.skin?"layui-m-layer-"+n.skin+" ":"")+(n.className?n.className:"")+" "+(n.anim?"layui-m-anim-"+n.anim:"")+'" '+(n.style?'style="'+n.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+n.content+"</div>"+c+"</div></div></div>",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i]("layui-m-layershade")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:"2.0",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a("#"+o[0]+e)[0];n&&(n.innerHTML="",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf("/")+1);n.getAttribute("merge")||document.head.appendChild(function(){var e=t.createElement("link");return e.href=a+"need/layer.css?2.0",e.type="text/css",e.rel="styleSheet",e.id="layermcss",e}())}()}(window);

1
js/libs/layer/mobile/need/layer.css
File diff suppressed because it is too large
View File

BIN
js/libs/layer/theme/default/icon-ext.png

After

Width: 180  |  Height: 100  |  Size: 5.8 KiB

BIN
js/libs/layer/theme/default/icon.png

After

Width: 210  |  Height: 61  |  Size: 11 KiB

1
js/libs/layer/theme/default/layer.css
File diff suppressed because it is too large
View File

BIN
js/libs/layer/theme/default/loading-0.gif

After

Width: 60  |  Height: 24  |  Size: 5.7 KiB

BIN
js/libs/layer/theme/default/loading-1.gif

After

Width: 37  |  Height: 37  |  Size: 701 B

BIN
js/libs/layer/theme/default/loading-2.gif

After

Width: 32  |  Height: 32  |  Size: 1.7 KiB

1
js/libs/layui/css/layui.css
File diff suppressed because it is too large
View File

1
js/libs/layui/css/modules/code.css

@ -0,0 +1 @@
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 10px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view .layui-code-ol li:first-child{padding-top:10px}.layui-code-view .layui-code-ol li:last-child{padding-bottom:10px}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}.layui-code-demo .layui-code{visibility:visible!important;margin:-15px;border-top:none;border-right:none;border-bottom:none}.layui-code-demo .layui-tab-content{padding:15px;border-top:none}

1
js/libs/layui/css/modules/laydate/default/laydate.css
File diff suppressed because it is too large
View File

BIN
js/libs/layui/css/modules/layer/default/icon-ext.png

After

Width: 180  |  Height: 100  |  Size: 5.8 KiB

BIN
js/libs/layui/css/modules/layer/default/icon.png

After

Width: 210  |  Height: 61  |  Size: 11 KiB

1
js/libs/layui/css/modules/layer/default/layer.css
File diff suppressed because it is too large
View File

BIN
js/libs/layui/css/modules/layer/default/loading-0.gif

After

Width: 60  |  Height: 24  |  Size: 5.7 KiB

BIN
js/libs/layui/css/modules/layer/default/loading-1.gif

After

Width: 37  |  Height: 37  |  Size: 701 B

BIN
js/libs/layui/css/modules/layer/default/loading-2.gif

After

Width: 32  |  Height: 32  |  Size: 1.7 KiB

BIN
js/libs/layui/font/iconfont.eot

554
js/libs/layui/font/iconfont.svg
File diff suppressed because it is too large
View File

BIN
js/libs/layui/font/iconfont.ttf

BIN
js/libs/layui/font/iconfont.woff

BIN
js/libs/layui/font/iconfont.woff2

5
js/libs/layui/layui.js
File diff suppressed because it is too large
View File

205
js/plugins/jquery.easing.1.3.js

@ -0,0 +1,205 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend( jQuery.easing,
{
def: 'easeOutQuad',
swing: function (x, t, b, c, d) {
//alert(jQuery.easing.default);
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
easeInQuad: function (x, t, b, c, d) {
return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d) {
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d) {
return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d) {
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d) {
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d) {
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d) {
if (t==0) return b;
if (t==d) return b+c;
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d) {
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
easeOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
easeInOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d) {
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
},
easeInOutBounce: function (x, t, b, c, d) {
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}
});
/*
*
* TERMS OF USE - EASING EQUATIONS
*
* Open source under the BSD License.
*
* Copyright © 2001 Robert Penner
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

891
js/plugins/jquery.gridnav.js

@ -0,0 +1,891 @@
(function ($) {
jQuery.fn.reverse = Array.prototype.reverse;
var
// auxiliar functions
aux = {
setup: function ($wrapper, $items, opts) {
// set the wrappers position to relative
$wrapper.css('position', 'relative');
// save the items position
aux.saveInitialPosition($items);
// set the items to absolute and assign top & left
$items.each(function (i) {
var $item = $(this);
$item.css({
position: 'absolute',
left: $item.data('left'),
top: $item.data('top')
});
});
// check how many items we have per row
var rowCount = Math.floor($wrapper.width() / $items.width()),
// number of items to show is rowCount * n rows
shown = rowCount * opts.rows,
// total number of rows
totalRows = Math.ceil($items.length / rowCount);
// save this values for later
var config = {};
config.currentRow = 1;
config.totalRows = totalRows;
config.rowCount = rowCount;
config.shownItems = shown;
$wrapper.data('config', config);
// show n rowns
$wrapper.children(':gt(' + (shown - 1) + ')').hide();
// assign row classes to the items
$items.each(function (i) {
var $item = $(this),
row = Math.ceil((i + 1) / rowCount);
$item.addClass('tj_row_' + row);
});
nav.setup($wrapper, $items, opts);
},
saveInitialPosition: function ($items) {
$items.each(function (i) {
var $item = $(this);
$item.data({
left: $item.position().left + 'px',
top: $item.position().top+ 'px'
});
});
}
},
// navigation types
nav = {
setup: function ($wrapper, $items, opts) {
nav[opts.type.mode].setup($wrapper, $items, opts);
},
def: {
setup: function ($wrapper, $items, opts) {
var config = $wrapper.data('config');
$items.each(function (i) {
var $item = $(this),
row = Math.ceil((i + 1) / config.rowCount),
t,
f = row % opts.rows;
if (f === 1) {
t = '0px';
} else if (f === 0) {
t = (opts.rows - 1) * $items.height() + 'px';
} else {
t = (f - 1) * $items.height() + 'px';
}
$item.css({ top: t });
});
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - opts.rows <= 0)
) {
$wrapper.data('anim', false);
return false;
}
// var currentRows = '', nextRows = '';
// for (var i = 0; i < opts.rows; ++i) {
// currentRows += '.tj_row_' + (config.currentRow + i) + ',';
// (dir === 1)
// ? nextRows += '.tj_row_' + (config.currentRow + opts.rows + i) + ','
// : nextRows += '.tj_row_' + (config.currentRow - 1 - i) + ',';
// }
// 使用数组来存储选择器
var currentRows = [];
var nextRows = [];
// 获取当前行的起始位置
var currentRowStart = config.currentRow;
for (var i = 0; i < opts.rows; ++i) {
// 生成当前行选择器并存储到数组中
currentRows.push('.tj_row_' + (currentRowStart + i));
// 根据方向计算下一行的选择器并存储到数组中
if (dir === 1) {
nextRows.push('.tj_row_' + (currentRowStart + opts.rows + i));
} else {
nextRows.push('.tj_row_' + (currentRowStart - 1 - i));
}
}
// 通过 join(',') 将数组中的选择器连接成字符串
currentRows = currentRows.join(',');
nextRows = nextRows.join(',');
$wrapper.children(currentRows).hide();
$wrapper.children(nextRows).show();
(dir === 1) ? config.currentRow += opts.rows : config.currentRow -= opts.rows;
$wrapper.data('anim', false);
$wrapper.data('config', config);
}
},
fade: {
setup: function ($wrapper, $items, opts) {
// same like def mode
nav['def'].setup($wrapper, $items, opts);
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - opts.rows <= 0)
) {
$wrapper.data('anim', false);
return false;
}
// var currentRows = '', nextRows = '';
// for (var i = 0; i < opts.rows; ++i) {
// currentRows += '.tj_row_' + (config.currentRow + i) + ',';
// (dir === 1)
// ? nextRows += '.tj_row_' + (config.currentRow + opts.rows + i) + ','
// : nextRows += '.tj_row_' + (config.currentRow - 1 - i) + ',';
// }
var currentRows = [];
var nextRows = [];
for (var i = 0; i < opts.rows; ++i) {
currentRows.push('.tj_row_' + (config.currentRow + i));
if (dir === 1) {
nextRows.push('.tj_row_' + (config.currentRow + opts.rows + i));
} else {
nextRows.push('.tj_row_' + (config.currentRow - 1 - i));
}
}
// 生成最终的选择器字符串
currentRows = currentRows.join(',');
nextRows = nextRows.join(',');
$wrapper.children(currentRows).fadeOut(opts.type.speed, opts.type.easing);
var $nextRowElements = $wrapper.children(nextRows),
totalNextRows = $nextRowElements.length,
cnt = 0;
$nextRowElements.fadeIn(opts.type.speed, opts.type.easing, function () {
++cnt;
if (cnt === totalNextRows) {
$wrapper.data('anim', false);
}
});
(dir === 1) ? config.currentRow += opts.rows : config.currentRow -= opts.rows;
$wrapper.data('config', config);
}
},
seqfade: {
setup: function ($wrapper, $items, opts) {
// same like def mode
nav['def'].setup($wrapper, $items, opts);
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - opts.rows <= 0)
) {
$wrapper.data('anim', false);
return false;
}
// var currentRows = '', nextRows = '';
// for (var i = 0; i < opts.rows; ++i) {
// currentRows += '.tj_row_' + (config.currentRow + i) + ',';
// (dir === 1)
// ? nextRows += '.tj_row_' + (config.currentRow + opts.rows + i) + ','
// : nextRows += '.tj_row_' + (config.currentRow - 1 - i) + ',';
// }
// 使用数组来收集结果
var currentRows = [];
var nextRows = [];
// 获取当前行和下一行的起始位置
var currentStart = config.currentRow;
var nextStartOffset = opts.rows;
for (var i = 0; i < opts.rows; ++i) {
// 将当前行的选择器加入数组
currentRows.push('.tj_row_' + (currentStart + i));
// 根据方向计算下一行的选择器并加入数组
if (dir === 1) {
nextRows.push('.tj_row_' + (currentStart + nextStartOffset + i));
} else {
nextRows.push('.tj_row_' + (currentStart - 1 - i));
}
}
// 通过 join(',') 将数组中的选择器连接成字符串
currentRows = currentRows.join(',');
nextRows = nextRows.join(',');
var seq_t = opts.type.factor;
var $currentRowElements;
(dir === 1)
? $currentRowElements = $wrapper.children(currentRows)
: $currentRowElements = $wrapper.children(currentRows).reverse();
$currentRowElements.each(function (i) {
var $el = $(this);
setTimeout(function () {
$el.fadeOut(opts.type.speed, opts.type.easing)
}, seq_t + i * seq_t);
});
var $nextRowElements;
(dir === 1)
? $nextRowElements = $wrapper.children(nextRows)
: $nextRowElements = $wrapper.children(nextRows).reverse();
var total_elems = $nextRowElements.length,
cnt = 0;
$nextRowElements.each(function (i) {
var $el = $(this);
setTimeout(function () {
$el.fadeIn(opts.type.speed, opts.type.easing, function () {
++cnt;
if (cnt === total_elems) {
$wrapper.data('anim', false);
}
})
}, (seq_t * 2) + i * seq_t);
});
(dir === 1) ? config.currentRow += opts.rows : config.currentRow -= opts.rows;
$wrapper.data('config', config);
}
},
updown: {
setup: function ($wrapper, $items, opts) {
var config = $wrapper.data('config');
$wrapper.children(':gt(' + (config.shownItems - 1) + ')').css('opacity', 0);
$items.each(function (i) {
var $item = $(this),
row = Math.ceil((i + 1) / config.rowCount),
t = $item.position().top,
f = row % opts.rows;
if (row > opts.rows) {
t = (opts.rows * $items.height());
}
$item.css({ top: t + 'px' });
});
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - 1 <= 0)
) {
$wrapper.data('anim', false);
return false;
}
var movingRows = '';
for (var i = 0; i <= opts.rows; ++i) {
if (i > 0) movingRows += ','; // 添加逗号作为分隔符
movingRows += '.tj_row_' + (dir === 1 ? (config.currentRow + i) : (config.currentRow + (i - 1)));
}
var $elements;
(dir === 1)
? $elements = $wrapper.children(movingRows)
: $elements = $wrapper.children(movingRows).reverse();
var total_elems = $elements.length,
cnt = 0;
$elements.each(function (i) {
var $el = $(this),
row = $el.attr('class'),
animParam = {},
currentRow = config.currentRow;
// if first row fade out
// if last row fade in
// for all the rows move them up / down
if (dir === 1) {
if (row === 'tj_row_' + (currentRow)) {
animParam.opacity = 0;
}
else if (row === 'tj_row_' + (currentRow + opts.rows)) {
animParam.opacity = 1;
}
}
else {
if (row === 'tj_row_' + (currentRow - 1)) {
animParam.opacity = 1;
}
else if (row === 'tj_row_' + (currentRow + opts.rows - 1)) {
animParam.opacity = 0;
}
}
$el.show();
(dir === 1)
? animParam.top = $el.position().top - $el.height() + 'px'
: animParam.top = $el.position().top + $el.height() + 'px'
$el.stop().animate(animParam, opts.type.speed, opts.type.easing, function () {
if (parseInt(animParam.top) < 0 || parseInt(animParam.top) > $el.height() * (opts.rows - 1))
$el.hide();
++cnt;
if (cnt === total_elems) {
$wrapper.data('anim', false);
}
});
});
(dir === 1) ? config.currentRow += 1 : config.currentRow -= 1;
$wrapper.data('config', config);
}
},
sequpdown: {
setup: function ($wrapper, $items, opts) {
// same like updown mode
nav['updown'].setup($wrapper, $items, opts);
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - 1 <= 0)
) {
$wrapper.data('anim', false);
return false;
}
var movingRows = '';
for (var i = 0; i <= opts.rows; ++i) {
if (i > 0) movingRows += ','; // 添加逗号作为分隔符
movingRows += '.tj_row_' + (dir === 1 ? (config.currentRow + i) : (config.currentRow + (i - 1)));
}
var seq_t = opts.type.factor,
$elements;
var dircond = 1;
if (opts.type.reverse) dircond = -1;
(dir === dircond)
? $elements = $wrapper.children(movingRows)
: $elements = $wrapper.children(movingRows).reverse();
var total_elems = $elements.length,
cnt = 0;
$elements.each(function (i) {
var $el = $(this),
row = $el.attr('class'),
animParam = {},
currentRow = config.currentRow;
setTimeout(function () {
// if first row fade out
// if last row fade in
// for all the rows move them up / down
if (dir === 1) {
if (row === 'tj_row_' + (currentRow)) {
animParam.opacity = 0;
}
else if (row === 'tj_row_' + (currentRow + opts.rows)) {
animParam.opacity = 1;
}
}
else {
if (row === 'tj_row_' + (currentRow - 1)) {
animParam.opacity = 1;
}
else if (row === 'tj_row_' + (currentRow + opts.rows - 1)) {
animParam.opacity = 0;
}
}
$el.show();
(dir === 1)
? animParam.top = $el.position().top - $el.height() + 'px'
: animParam.top = $el.position().top + $el.height() + 'px'
$el.stop().animate(animParam, opts.type.speed, opts.type.easing, function () {
if (parseInt(animParam.top) < 0 || parseInt(animParam.top) > $el.height() * (opts.rows - 1))
$el.hide();
++cnt;
if (cnt === total_elems) {
$wrapper.data('anim', false);
}
});
}, seq_t + i * seq_t);
});
(dir === 1) ? config.currentRow += 1 : config.currentRow -= 1;
$wrapper.data('config', config);
}
},
showhide: {
setup: function ($wrapper, $items, opts) {
var config = $wrapper.data('config');
$items.each(function (i) {
var $item = $(this),
row = Math.ceil((i + 1) / config.rowCount),
t,
f = row % opts.rows;
if (f === 1) {
t = '0px';
} else if (f === 0) {
t = (opts.rows - 1) * $items.height() + 'px';
} else {
t = (f - 1) * $items.height() + 'px';
}
$item.css({ top: t });
});
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - opts.rows <= 0)
) {
$wrapper.data('anim', false);
return false;
}
// var currentRows = '', nextRows = '';
// for (var i = 0; i < opts.rows; ++i) {
// currentRows += '.tj_row_' + (config.currentRow + i) + ',';
// (dir === 1)
// ? nextRows += '.tj_row_' + (config.currentRow + opts.rows + i) + ','
// : nextRows += '.tj_row_' + (config.currentRow - 1 - i) + ',';
// }
// 使用数组来存储选择器
var currentRows = [];
var nextRows = [];
// 获取当前行的起始位置
var currentRowStart = config.currentRow;
for (var i = 0; i < opts.rows; ++i) {
// 生成当前行选择器并存储到数组中
currentRows.push('.tj_row_' + (currentRowStart + i));
// 根据方向计算下一行的选择器并存储到数组中
if (dir === 1) {
nextRows.push('.tj_row_' + (currentRowStart + opts.rows + i));
} else {
nextRows.push('.tj_row_' + (currentRowStart - 1 - i));
}
}
// 通过 join(',') 将数组中的选择器连接成字符串
currentRows = currentRows.join(',');
nextRows = nextRows.join(',');
$wrapper.children(currentRows).hide(opts.type.speed, opts.type.easing);
var $nextRowElements = $wrapper.children(nextRows),
totalNextRows = $nextRowElements.length,
cnt = 0;
$nextRowElements.show(opts.type.speed, opts.type.easing, function () {
++cnt;
if (cnt === totalNextRows) {
$wrapper.data('anim', false);
}
});
(dir === 1) ? config.currentRow += opts.rows : config.currentRow -= opts.rows;
$wrapper.data('config', config);
}
},
disperse: {
setup: function ($wrapper, $items, opts) {
var config = $wrapper.data('config');
$items.each(function (i) {
var $item = $(this),
row = Math.ceil((i + 1) / config.rowCount),
t,
f = row % opts.rows;
if (f === 1) {
t = '0px';
} else if (f === 0) {
t = (opts.rows - 1) * $items.height() + 'px';
} else {
t = (f - 1) * $items.height() + 'px';
}
$item.css({ top: t }).data('top', t);
});
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - opts.rows <= 0)
) {
$wrapper.data('anim', false);
return false;
}
// var currentRows = '', nextRows = '';
// for (var i = 0; i < opts.rows; ++i) {
// currentRows += '.tj_row_' + (config.currentRow + i) + ',';
// (dir === 1)
// ? nextRows += '.tj_row_' + (config.currentRow + opts.rows + i) + ','
// : nextRows += '.tj_row_' + (config.currentRow - 1 - i) + ',';
// }
// 使用数组来存储选择器
var currentRows = [];
var nextRows = [];
// 获取当前行的起始位置
var currentRowStart = config.currentRow;
for (var i = 0; i < opts.rows; ++i) {
// 生成当前行选择器并存储到数组中
currentRows.push('.tj_row_' + (currentRowStart + i));
// 根据方向计算下一行的选择器并存储到数组中
if (dir === 1) {
nextRows.push('.tj_row_' + (currentRowStart + opts.rows + i));
} else {
nextRows.push('.tj_row_' + (currentRowStart - 1 - i));
}
}
// 通过 join(',') 将数组中的选择器连接成字符串
currentRows = currentRows.join(',');
nextRows = nextRows.join(',');
$wrapper.children(currentRows).each(function (i) {
var $el = $(this);
$el.stop().animate({
left: $el.position().left + Math.floor(Math.random() * 101) - 50 + 'px',
top: $el.position().top + Math.floor(Math.random() * 101) - 50 + 'px',
opacity: 0
}, opts.type.speed, opts.type.easing, function () {
$el.css({
left: $el.data('left'),
top: $el.data('top')
}).hide();
});
});
var $nextRowElements = $wrapper.children(nextRows);
total_elems = $nextRowElements.length,
cnt = 0;
$nextRowElements.each(function (i) {
var $el = $(this);
$el.css({
left: parseInt($el.data('left')) + Math.floor(Math.random() * 301) - 150 + 'px',
top: parseInt($el.data('top')) + Math.floor(Math.random() * 301) - 150 + 'px',
opacity: 0
})
.show()
.animate({
left: $el.data('left'),
top: $el.data('top'),
opacity: 1
}, opts.type.speed, opts.type.easing, function () {
++cnt;
if (cnt === total_elems) {
$wrapper.data('anim', false);
}
});
});
(dir === 1) ? config.currentRow += opts.rows : config.currentRow -= opts.rows;
$wrapper.data('config', config);
}
},
rows: {
setup: function ($wrapper, $items, opts) {
// same like def mode
nav['def'].setup($wrapper, $items, opts);
},
pagination: function ($wrapper, dir, opts) {
var config = $wrapper.data('config');
if ((dir === 1 && config.currentRow + opts.rows > config.totalRows) ||
(dir === -1 && config.currentRow - opts.rows <= 0)
) {
$wrapper.data('anim', false);
return false;
}
// var currentRows = '', nextRows = '';
// for (var i = 0; i < opts.rows; ++i) {
// currentRows += '.tj_row_' + (config.currentRow + i) + ',';
// (dir === 1)
// ? nextRows += '.tj_row_' + (config.currentRow + opts.rows + i) + ','
// : nextRows += '.tj_row_' + (config.currentRow - 1 - i) + ',';
// }
// 使用数组来存储选择器
var currentRows = [];
var nextRows = [];
// 获取当前行的起始位置
var currentRowStart = config.currentRow;
for (var i = 0; i < opts.rows; ++i) {
// 生成当前行选择器并存储到数组中
currentRows.push('.tj_row_' + (currentRowStart + i));
// 根据方向计算下一行的选择器并存储到数组中
if (dir === 1) {
nextRows.push('.tj_row_' + (currentRowStart + opts.rows + i));
} else {
nextRows.push('.tj_row_' + (currentRowStart - 1 - i));
}
}
// 通过 join(',') 将数组中的选择器连接成字符串
currentRows = currentRows.join(',');
nextRows = nextRows.join(',');
$wrapper.children(currentRows).each(function (i) {
var $el = $(this),
rownmb = $el.attr('class').match(/tj_row_(\d+)/)[1],
diff;
if (rownmb % 2 === 0) {
diff = opts.type.factor;
}
else {
diff = -opts.type.factor;
}
$el.stop().animate({
left: $el.position().left + diff + 'px',
opacity: 0
}, opts.type.speed, opts.type.easing, function () {
$el.css({
left: $el.data('left')
}).hide();
});
});
var $nextRowElements = $wrapper.children(nextRows);
total_elems = $nextRowElements.length,
cnt = 0;
$nextRowElements.each(function (i) {
var $el = $(this),
rownmb = $el.attr('class').match(/tj_row_(\d+)/)[1],
diff;
if (rownmb % 2 === 0) {
diff = opts.type.factor;
}
else {
diff = -opts.type.factor;
}
$el.css({
left: parseInt($el.data('left')) + diff + 'px',
opacity: 0
})
.show()
.animate({
left: $el.data('left'),
opacity: 1
}, opts.type.speed, opts.type.easing, function () {
++cnt;
if (cnt === total_elems) {
$wrapper.data('anim', false);
}
});
});
(dir === 1) ? config.currentRow += opts.rows : config.currentRow -= opts.rows;
$wrapper.data('config', config);
}
}
},
methods = {
init: function (options) {
if (this.length) {
var settings = {
rows: 2,
navL: '#tj_prev',
navR: '#tj_next',
type: {
mode: 'def', // use def | fade | seqfade | updown | sequpdown | showhide | disperse | rows
speed: 500, // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
easing: 'jswing', // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
factor: 50, // for seqfade, sequpdown, rows
reverse: false // for sequpdown
}
};
return this.each(function () {
// if options exist, lets merge them with our default settings
if (options) {
$.extend(settings, options);
}
var $el = $(this).css('visibility', 'hidden'),
// the ul
$wrapper = $el.find('ul.tj_gallery'),
// the items
$thumbs = $wrapper.children('li'),
total = $thumbs.length,
// the navigation elements
$p_nav = $(settings.navL),
$n_nav = $(settings.navR);
// save current row for later (first visible row)
//config.currentRow = 1;
// flag to control animation progress
$wrapper.data('anim', false);
// preload thumbs
var loaded = 0;
$thumbs.find('img').each(function (i) {
var $img = $(this);
$('<img/>').on('load', function () {
++loaded;
if (loaded === total) {
// setup
aux.setup($wrapper, $thumbs, settings);
$el.css('visibility', 'visible');
// navigation events
if ($p_nav.length) {
$p_nav.on('click.gridnav', function (e) {
if ($wrapper.data('anim')) return false;
$wrapper.data('anim', true);
nav[settings.type.mode].pagination($wrapper, -1, settings);
return false;
});
}
if ($n_nav.length) {
$n_nav.on('click.gridnav', function (e) {
if ($wrapper.data('anim')) return false;
$wrapper.data('anim', true);
nav[settings.type.mode].pagination($wrapper, 1, settings);
return false;
});
}
/*
adds events to the mouse
*/
// $el.on('mousewheel.gridnav', function (e, delta) {
// if (delta > 0) {
// if ($wrapper.data('anim')) return false;
// $wrapper.data('anim', true);
// nav[settings.type.mode].pagination($wrapper, -1, settings);
// }
// else {
// if ($wrapper.data('anim')) return false;
// $wrapper.data('anim', true);
// nav[settings.type.mode].pagination($wrapper, 1, settings);
// }
// return false;
// });
$el.on('wheel.gridnav', function(e) {
var delta = e.originalEvent.deltaY; // 使用 deltaY 来检测滚轮方向
var direction = delta > 0 ? 1 : -1;
if ($wrapper.data('anim')) {
return false;
}
$wrapper.data('anim', true);
nav[settings.type.mode].pagination($wrapper, direction, settings);
return false;
});
}
}).attr('src', $img.attr('src'));
});
});
}
}
};
$.fn.gridnav = function (method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.gridnav');
}
};
})(jQuery);

400
js/plugins/pdfobject.js

@ -0,0 +1,400 @@
/**
* PDFObject v2.3.0
* https://github.com/pipwerks/PDFObject
* @license
* Copyright (c) 2008-2024 Philip Hutchison
* MIT-style license: http://pipwerks.mit-license.org/
* UMD module pattern from https://github.com/umdjs/umd/blob/master/templates/returnExports.js
*/
(function (root, factory) {
if (typeof define === "function" && define.amd) {
// AMD. Register as an anonymous module.
define([], factory);
} else if (typeof module === "object" && module.exports) {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
// Browser globals (root is window)
root.PDFObject = factory();
}
}(this, function () {
"use strict";
//PDFObject is designed for client-side (browsers), not server-side (node)
//Will choke on undefined navigator and window vars when run on server
//Return boolean false and exit function when running server-side
if(typeof window === "undefined" || window.navigator === undefined || window.navigator.userAgent === undefined){ return false; }
let pdfobjectversion = "2.3.0";
let win = window;
let nav = win.navigator;
let ua = nav.userAgent;
let suppressConsole = false;
//Fallback validation when navigator.pdfViewerEnabled is not supported
let isModernBrowser = function (){
/*
userAgent sniffing is not the ideal path, but most browsers revoked the ability to check navigator.mimeTypes
for security purposes. As of 2023, browsers have begun implementing navigator.pdfViewerEnabled, but older versions
do not have navigator.pdfViewerEnabled or the ability to check navigator.mimeTypes. We're left with basic browser
sniffing and assumptions of PDF support based on browser vendor.
*/
//Chromium has provided native PDF support since 2011.
//Most modern browsers use Chromium under the hood: Google Chrome, Microsoft Edge, Opera, Brave, Vivaldi, Arc, and more.
//Chromium uses the PDFium rendering engine, which is based on Foxit's PDF rendering engine.
//Note that MS Edge opts to use a different PDF rendering engine. As of 2024, Edge uses a version of Adobe's Reader
let isChromium = (win.chrome !== undefined);
//Safari on macOS has provided native PDF support since 2009.
//This code snippet also detects the DuckDuckGo browser, which uses Safari/Webkit under the hood.
let isSafari = (win.safari !== undefined || (nav.vendor !== undefined && /Apple/.test(nav.vendor) && /Safari/.test(ua)));
//Firefox has provided PDF support via PDFJS since 2013.
let isFirefox = (win.Mozilla !== undefined || /irefox/.test(ua));
return isChromium || isSafari || isFirefox;
};
/*
Special handling for Internet Explorer 11.
Check for ActiveX support, then whether "AcroPDF.PDF" or "PDF.PdfCtrl" are valid.
IE11 uses ActiveX for Adobe Reader and other PDF plugins, but window.ActiveXObject will evaluate to false.
("ActiveXObject" in window) evaluates to true.
MS Edge does not support ActiveX so this test will evaluate false for MS Edge.
*/
let validateAX = function (type){
var ax = null;
try {
ax = new ActiveXObject(type);
} catch (e) {
//ensure ax remains null when ActiveXObject attempt fails
ax = null;
}
return !!ax; //convert resulting object to boolean
};
let hasActiveXPDFPlugin = function (){ return ("ActiveXObject" in win) && (validateAX("AcroPDF.PDF") || validateAX("PDF.PdfCtrl")) };
let checkSupport = function (){
//Safari on iPadOS doesn't report as 'mobile' when requesting desktop site, yet still fails to embed PDFs
let isSafariIOSDesktopMode = (nav.platform !== undefined && nav.platform === "MacIntel" && nav.maxTouchPoints !== undefined && nav.maxTouchPoints > 1);
let isMobileDevice = (isSafariIOSDesktopMode || /Mobi|Tablet|Android|iPad|iPhone/.test(ua));
//As of June 2023, no mobile browsers properly support inline PDFs. If mobile, just say no.
if(isMobileDevice){ return false; }
//Modern browsers began supporting navigator.pdfViewerEnabled in late 2022 and early 2023.
let supportsPDFVE = (typeof nav.pdfViewerEnabled === "boolean");
//If browser supports nav.pdfViewerEnabled and is explicitly saying PDFs are NOT supported (e.g. PDFJS disabled by user in Firefox), respect it.
if(supportsPDFVE && !nav.pdfViewerEnabled){ return false; }
return (supportsPDFVE && nav.pdfViewerEnabled) || isModernBrowser() || hasActiveXPDFPlugin();
};
//Determines whether PDF support is available
let supportsPDFs = checkSupport();
//Create a fragment identifier for using PDF Open parameters when embedding PDF
let buildURLFragmentString = function(pdfParams){
let string = "";
let prop;
let paramArray = [];
let fdf = "";
//The comment, viewrect, and highlight parameters require page to be set first.
//Check to ensure page is used if comment, viewrect, or highlight are specified
if(pdfParams.comment || pdfParams.viewrect || pdfParams.highlight){
if(!pdfParams.page){
//If page is not set, use the first page
pdfParams.page = 1;
//Inform user that page needs to be set properly
embedError("The comment, viewrect, and highlight parameters require a page parameter, but none was specified. Defaulting to page 1.");
}
}
//Let's go ahead and ensure page is always the first parameter.
if(pdfParams.page){
paramArray.push("page=" + encodeURIComponent(pdfParams.page));
delete pdfParams.page;
}
//FDF needs to be the last parameter in the string
if(pdfParams.fdf){
fdf = pdfParams.fdf;
delete pdfParams.fdf;
}
//Add all other parameters, as needed
if(pdfParams){
for (prop in pdfParams) {
if (pdfParams.hasOwnProperty(prop)) {
paramArray.push(encodeURIComponent(prop) + "=" + encodeURIComponent(pdfParams[prop]));
}
}
//Add fdf as the last parameter, if needed
if(fdf){
paramArray.push("fdf=" + encodeURIComponent(fdf));
}
//Join all parameters in the array into a string
string = paramArray.join("&");
//The string will be empty if no PDF Parameters were provided
//Only prepend the hash if the string is not empty
if(string){
string = "#" + string;
}
}
return string;
};
let embedError = function (msg){
if(!suppressConsole){
console.log("[PDFObject]", msg);
}
return false;
};
let emptyNodeContents = function (node){
while(node.firstChild){
node.removeChild(node.firstChild);
}
};
let getTargetElement = function (targetSelector){
//Default to body for full-browser PDF
let targetNode = document.body;
//If a targetSelector is specified, check to see whether
//it's passing a selector, jQuery object, or an HTML element
if(typeof targetSelector === "string"){
//Is CSS selector
targetNode = document.querySelector(targetSelector);
} else if (win.jQuery !== undefined && targetSelector instanceof jQuery && targetSelector.length) {
//Is jQuery element. Extract HTML node
targetNode = targetSelector.get(0);
} else if (targetSelector.nodeType !== undefined && targetSelector.nodeType === 1){
//Is HTML element
targetNode = targetSelector;
}
return targetNode;
};
let convertBase64ToDownloadableLink = function (b64, filename, targetNode, fallbackHTML) {
//IE-11 safe version. More verbose than modern fetch()
if (window.Blob && window.URL && window.URL.createObjectURL) {
var xhr = new XMLHttpRequest();
xhr.open('GET', b64, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
var blob = xhr.response;
var link = document.createElement('a');
link.innerText = "Download PDF";
link.href = URL.createObjectURL(blob);
link.setAttribute('download', filename);
targetNode.innerHTML = fallbackHTML.replace(/\[pdflink\]/g, link.outerHTML);
}
};
xhr.send();
}
};
let generatePDFObjectMarkup = function (embedType, targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute, PDFJS_URL){
//Ensure target element is empty first
emptyNodeContents(targetNode);
let source = url;
if(embedType === "pdfjs"){
//If PDFJS_URL already contains a ?, assume querystring is in place, and use an ampersand to append PDFJS's file parameter
let connector = (PDFJS_URL.indexOf("?") !== -1) ? "&" : "?";
source = PDFJS_URL + connector + "file=" + encodeURIComponent(url) + pdfOpenFragment;
} else {
source += pdfOpenFragment;
}
let el = document.createElement("iframe");
el.className = "pdfobject";
el.type = "application/pdf";
el.title = title;
el.src = source;
el.allow = "fullscreen";
el.frameborder = "0";
if(id){ el.id = id; }
if(!omitInlineStyles){
let style = "border: none;";
if(targetNode !== document.body){
//assign width and height to target node
style += "width: " + width + "; height: " + height + ";";
} else {
//this is a full-page embed, use CSS to fill the viewport
style += "position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%;";
}
el.style.cssText = style;
}
//Allow developer to insert custom attribute on iframe element, but ensure it does not conflict with attributes used by PDFObject
let reservedTokens = ["className", "type", "title", "src", "style", "id", "allow", "frameborder"];
if(customAttribute && customAttribute.key && reservedTokens.indexOf(customAttribute.key) === -1){
el.setAttribute(customAttribute.key, (typeof customAttribute.value !== "undefined") ? customAttribute.value : "");
}
targetNode.classList.add("pdfobject-container");
targetNode.appendChild(el);
return targetNode.getElementsByTagName("iframe")[0];
};
let embed = function(url, targetSelector, options){
//If targetSelector is not defined, convert to boolean
let selector = targetSelector || false;
//Ensure options object is not undefined -- enables easier error checking below
let opt = options || {};
//Get passed options, or set reasonable defaults
suppressConsole = (typeof opt.suppressConsole === "boolean") ? opt.suppressConsole : false;
let id = (typeof opt.id === "string") ? opt.id : "";
let page = opt.page || false;
let pdfOpenParams = opt.pdfOpenParams || {};
let fallbackLink = (typeof opt.fallbackLink === "string" || typeof opt.fallbackLink === "boolean") ? opt.fallbackLink : true;
let width = opt.width || "100%";
let height = opt.height || "100%";
let title = opt.title || "Embedded PDF";
let forcePDFJS = (typeof opt.forcePDFJS === "boolean") ? opt.forcePDFJS : false;
let omitInlineStyles = (typeof opt.omitInlineStyles === "boolean") ? opt.omitInlineStyles : false;
let PDFJS_URL = opt.PDFJS_URL || false;
let targetNode = getTargetElement(selector);
let pdfOpenFragment = "";
let customAttribute = opt.customAttribute || {};
let fallbackHTML_default = "<p>This browser does not support inline PDFs. Please download the PDF to view it: [pdflink]</p>";
//Ensure URL is available. If not, exit now.
if(typeof url !== "string"){ return embedError("URL is not valid"); }
//If target element is specified but is not valid, exit without doing anything
if(!targetNode){ return embedError("Target element cannot be determined"); }
//page option overrides pdfOpenParams, if found
if(page){ pdfOpenParams.page = page; }
//Stringify optional Adobe params for opening document (as fragment identifier)
pdfOpenFragment = buildURLFragmentString(pdfOpenParams);
// --== Do the dance: Embed attempt #1 ==--
//If the forcePDFJS option is invoked, skip everything else and embed as directed
if(forcePDFJS && PDFJS_URL){
return generatePDFObjectMarkup("pdfjs", targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute, PDFJS_URL);
}
// --== Embed attempt #2 ==--
//Embed PDF if support is detected, or if this is a relatively modern browser
if(supportsPDFs){
return generatePDFObjectMarkup("iframe", targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute);
}
// --== Embed attempt #3 ==--
//If everything else has failed and a PDFJS fallback is provided, try to use it
if(PDFJS_URL){
return generatePDFObjectMarkup("pdfjs", targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute, PDFJS_URL);
}
// --== PDF embed not supported! Use fallback ==--
//Display the fallback link if available
if(fallbackLink){
//If a custom fallback has been provided, handle it now
if(typeof fallbackLink === "string"){
//Ensure [url] is set in custom fallback
targetNode.innerHTML = fallbackLink.replace(/\[url\]/g, url);
} else {
//If the PDF is a base64 string, convert it to a downloadable link
if(url.indexOf("data:application/pdf;base64") !== -1){
//Asynchronously append the link to the targetNode
convertBase64ToDownloadableLink(url, "file.pdf", targetNode, fallbackHTML_default);
} else {
//Use default fallback link
let link = "<a href='" + url + "'>Download PDF</a>";
targetNode.innerHTML = fallbackHTML_default.replace(/\[pdflink\]/g, link);
}
}
}
return embedError("This browser does not support embedded PDFs");
};
return {
embed: function (a,b,c){ return embed(a,b,c); },
pdfobjectversion: (function () { return pdfobjectversion; })(),
supportsPDFs: (function (){ return supportsPDFs; })()
};
}));

BIN
media/pdf/AELOS PRO 3 使用手册V1.42-基于镜像1.0.4,软件版本2.0.0(含)以上.pdf

BIN
media/video/ROS桌面多功能机械臂myCobot_280_Pi颜色识别分类.mp4

175
page1.html

@ -0,0 +1,175 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" type="text/css" href="css/libs/reset.css" />
<link rel="stylesheet" type="text/css" href="css/libs/animate.min.css" />
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/plugins/gridNavigation.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<title>编程体验</title>
</head>
<body>
<div class="ai-wrapper">
<video class="ai-bg" src="./images/bg.mp4" autoplay="autoplay" loop="loop" muted="muted"></video>
<div class="ai-header-wrapper">
<div class="ai-header">
<div class="header-btn header-home" onclick="history.go(-1); return false;"><span></span><p>首页</p></div>
<div class="header-title">
<h2>AI编程机器人体验系统</h2>
</div>
<div class="header-btn header-login"><span></span><p>登录</p></div>
</div>
</div>
<!-- 编程体验 -->
<div class="page-content">
<div id="tj_container" class="tj_container">
<span id="tj_prev" class="page-list-btn tj_prev"></span>
<div class="tj_wrapper">
<ul class="tj_gallery">
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>六轴机械臂</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>双足机器人1</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>双足机器人2</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>双足机器人3</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>四足机器狗</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>无人驾驶车</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>六轴机械臂2</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>四足机器狗2</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>无人驾驶车2</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>uLtraArm套装10</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<!-- <span></span> -->
</div>
<p>颜色识别分类11</p>
</a>
</li>
</ul>
</div>
<span id="tj_next" class="page-list-btn tj_next"></span>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="js/libs/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="js/libs/flexible.js"></script>
<!-- 模块切换 -->
<script type="text/javascript" src="js/plugins/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/plugins/jquery.gridnav.js"></script>
<script type="text/javascript">
$(function () {
$('#tj_container').gridnav({
type: {
mode: 'sequpdown', // use def | fade | seqfade | updown | sequpdown | showhide | disperse | rows
speed: 500, // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
easing: '', // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
factor: 50, // for seqfade, sequpdown, rows
reverse: false, // for sequpdown
},
})
// $('.tj_gallery li').on('click', function () {
// layer.open({
// type: 2, // 0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)。 若你采用layer.open({type: 1})方式调用,则type为必填项(信息框除外)
// title: '测试视频layer',
// area: ['12.5rem', '10rem'],
// // shade: 0.8, // 默认0.3 不想显示遮罩设置为0
// // maxmin: true, //开启最大化最小化按钮
// shadeClose: true,
// content: '/media/video/ROS桌面多功能机械臂myCobot_280_Pi颜色识别分类.mp4'
// })
// })
})
</script>
</html>

238
page2.html

@ -0,0 +1,238 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" type="text/css" href="css/libs/reset.css" />
<link rel="stylesheet" type="text/css" href="css/libs/animate.min.css" />
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/plugins/gridNavigation.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<title>场景演示</title>
</head>
<body>
<div class="ai-wrapper">
<video class="ai-bg" src="./images/bg.mp4" autoplay="autoplay" loop="loop" muted="muted"></video>
<div class="ai-header-wrapper">
<div class="ai-header">
<div class="header-btn header-home" onclick="history.go(-1); return false;"><span></span><p>首页</p></div>
<div class="header-title">
<h2>AI编程机器人体验系统</h2>
</div>
<div class="header-btn header-login"><span></span><p>登录</p></div>
</div>
</div>
<!-- 编程体验 -->
<div class="page-content">
<div id="tj_container" class="tj_container">
<span id="tj_prev" class="page-list-btn tj_prev"></span>
<div class="tj_wrapper">
<ul class="tj_gallery">
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类1</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装2</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类3</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装4</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类5</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装6</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类7</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装8</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类9</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装10</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类11</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装12</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类13</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装14</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类15</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装16</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类17</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装18</p>
</a>
</li>
</ul>
</div>
<span id="tj_next" class="page-list-btn tj_next"></span>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="js/libs/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="js/libs/flexible.js"></script>
<!-- 模块切换 -->
<script type="text/javascript" src="js/plugins/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/plugins/jquery.gridnav.js"></script>
<script type="text/javascript">
$(function () {
$('#tj_container').gridnav({
type: {
mode: 'disperse', // use def | fade | seqfade | updown | sequpdown | showhide | disperse | rows
speed: 500, // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
easing: '', // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
factor: 50, // for seqfade, sequpdown, rows
reverse: false, // for sequpdown
},
})
// $('.tj_gallery li').on('click', function () {
// layer.open({
// type: 2, // 0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)。 若你采用layer.open({type: 1})方式调用,则type为必填项(信息框除外)
// title: '测试视频layer',
// area: ['12.5rem', '10rem'],
// // shade: 0.8, // 默认0.3 不想显示遮罩设置为0
// // maxmin: true, //开启最大化最小化按钮
// shadeClose: true,
// content: '/media/video/ROS桌面多功能机械臂myCobot_280_Pi颜色识别分类.mp4'
// })
// })
})
</script>
</html>

238
page4.html

@ -0,0 +1,238 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" type="text/css" href="css/libs/reset.css" />
<link rel="stylesheet" type="text/css" href="css/libs/animate.min.css" />
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/plugins/gridNavigation.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<title>实战竞赛</title>
</head>
<body>
<div class="ai-wrapper">
<video class="ai-bg" src="./images/bg.mp4" autoplay="autoplay" loop="loop" muted="muted"></video>
<div class="ai-header-wrapper">
<div class="ai-header">
<div class="header-btn header-home" onclick="history.go(-1); return false;"><span></span><p>首页</p></div>
<div class="header-title">
<h2>AI编程机器人体验系统</h2>
</div>
<div class="header-btn header-login"><span></span><p>登录</p></div>
</div>
</div>
<!-- 实战竞赛 -->
<div class="page-content">
<div id="tj_container" class="tj_container">
<span id="tj_prev" class="page-list-btn tj_prev"></span>
<div class="tj_wrapper">
<ul class="tj_gallery">
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>全国大学生机器人大赛</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>全国青少年人工智能创新挑战赛</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>辽宁省青少年机器人竞赛</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>世界青少年机器人奥林匹克竞赛</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>2023世界机器人大赛</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>全国青少年人工智能创新挑战赛</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类7</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装8</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类9</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装10</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类11</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装12</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类13</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装14</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类15</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装16</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>颜色识别分类17</p>
</a>
</li>
<li>
<a href="javascript:;">
<div class="tj-list-img">
<img src="images/img-bg.png" alt="" />
<span></span>
</div>
<p>uLtraArm套装18</p>
</a>
</li>
</ul>
</div>
<span id="tj_next" class="page-list-btn tj_next"></span>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="js/libs/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="js/libs/flexible.js"></script>
<!-- 模块切换 -->
<script type="text/javascript" src="js/plugins/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/plugins/jquery.gridnav.js"></script>
<script type="text/javascript">
$(function () {
$('#tj_container').gridnav({
type: {
mode: 'rows', // use def | fade | seqfade | updown | sequpdown | showhide | disperse | rows
speed: 500, // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
easing: '', // for fade, seqfade, updown, sequpdown, showhide, disperse, rows
factor: 50, // for seqfade, sequpdown, rows
reverse: false, // for sequpdown
},
})
// $('.tj_gallery li').on('click', function () {
// layer.open({
// type: 2, // 0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)。 若你采用layer.open({type: 1})方式调用,则type为必填项(信息框除外)
// title: '测试视频layer',
// area: ['12.5rem', '10rem'],
// // shade: 0.8, // 默认0.3 不想显示遮罩设置为0
// // maxmin: true, //开启最大化最小化按钮
// shadeClose: true,
// content: '/media/video/ROS桌面多功能机械臂myCobot_280_Pi颜色识别分类.mp4'
// })
// })
})
</script>
</html>

332
test.html

@ -0,0 +1,332 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta
http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"
/>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<!-- <link rel="shortcut icon" type="image/x-icon" href="images/logo.png"> -->
<link rel="stylesheet" type="text/css" href="./css/libs/reset.css" />
<!-- <link rel="stylesheet" type="text/css" href="./iconfont/iconfont.css">
<link rel="stylesheet" type="text/css" href="./css/swiper.min.css"> -->
<!-- <link rel="stylesheet" type="text/css" href="./js/libs/layui/css/layui.css" media="all"> -->
<link rel="stylesheet" type="text/css" href="./css/libs/animate.min.css" />
<link rel="stylesheet" type="text/css" href="./css/common.css" />
<link rel="stylesheet" type="text/css" href="./css/style.css" />
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
<title>首页</title>
</head>
<!-- <div class="box_pdf">
<a
href="/media/pdf/AELOS PRO 3 使用手册V1.42-基于镜像1.0.4,软件版本2.0.0(含)以上.pdf"
>编程学习 看pdf open</a
>
</div> -->
<!-- https://animate.style/ -->
<body>
<div class="contanier">
<div class="return">返回</div>
<div class="flex-container">
<ul class="flex-left">
<li class="flex-item animate__animated animate__backInLeft">
<a href="javascript:;" alt="">编程系统</a>
<img src="/images/browsers/chrome.png" alt="" />
</li>
<li class="flex-item animate__animated animate__backInLeft">
<a style="color: yellow;" href="scene_presentation.html" alt="">场景演示</a>
<img src="/images/browsers/iexplore.png" alt="" />
</li>
<li class="flex-item animate__animated animate__backInLeft">
<a style="color: yellow;" onclick="showPDF2()">编程学习</a>
<img src="/images/browsers/safari.png" alt="" />
</li>
</ul>
<div class="flex-middle">中间机器人图</div>
<ul class="flex-right">
<li class="flex-item animate__animated animate__fadeInTopRight">
<img src="/images/browsers/iexplore.png" alt="" />
<a href="javascript:;" alt="">实战竞赛</a>
</li>
<li class="flex-item animate__animated animate__fadeInTopRight">
<img src="/images/browsers/chrome.png" alt="" />
<a href="javascript:;" alt="">作品展示</a>
</li>
<li class="flex-item flex-item-link animate__animated animate__fadeInTopRight">
<img src="/images/browsers/safari.png" alt="" />
<!-- ai_chat.html -->
<a style="color: yellow;" href="javascript:;" alt="">AI数字人</a>
</li>
</ul>
</div>
<div id="my-pdf"></div>
<!-- 静态图片 -->
<img src="./images/33e2e72d9a0c855f036b4cb55448f44af67a0635.webp" alt="静态webp">
<img src="./images/azpx0-52d5m.webp" alt="动态webp">
<!-- <picture>
<source media="(min-width:650px)" srcset="./images/azpx0-52d5m.webp">
<source media="(min-width:465px)" srcset="https://static.jyshare.com/libs/images/code-icon-script.png">
<img src="./images/azpx0-52d5m.webp" style="width:auto;">
</picture> -->
<!-- 动态图片 -->
<!-- <video autoplay loop muted playsinline>
<source src="./images/azpx0-52d5m.webp" type="image/webp">
Your browser does not support the video tag.
</video> -->
<!-- 菜单3D效果 -->
<!-- <div class="show-nav">
<ul id="showcase">
<li class="menu-item a">编程系统</li>
<li class="menu-item b">场景演示</li>
<li class="menu-item c">编程学习</li>
<li class="menu-item d">实战竞赛</li>
<li class="menu-item e">作品展示</li>
<li class="menu-item f">AI数字人</li>
</ul>
<div id="nav" class="noselect">
<button class="left"></button>
<button class="right"></button>
</div>
</div> -->
<div class="show-nav">
<div class="container">
<div class="carousel">
<div class="item a">编程系统</div>
<div class="item b"><a href="scene_presentation.html" alt="">场景演示</a></div>
<div class="item c"><a onclick="showPDF2()">编程学习</a></div>
<div class="item d">实战竞赛</div>
<div class="item e">作品展示</div>
<div class="item f"><a href="ai_chat.html" alt="">AI数字人</a></div>
</div>
</div>
<div class="next">Next</div>
<div class="prev">Prev</div>
</div>
</div>
</body>
<script type="text/javascript" src="/js/libs/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="/js/libs/flexible.js"></script>
<!-- 弹出框 -->
<script type="text/javascript" src="/js/libs/layer/layer.js"></script>
<!-- pdf控件 -->
<script type="text/javascript" src="/js/plugins/pdfobject.js"></script>
<!-- 粒子插件2个 -->
<!-- <script type="text/javascript" src="/js/plugins/particles.min.js"></script>
<script type="text/javascript" src="/js/plugins/app.js"></script> -->
<!-- 菜单3D效果2个 -->
<script type="text/javascript" src="js/plugins/jquery.reflection.js"></script>
<script type="text/javascript" src="js/plugins/jquery.cloud9carousel.js"></script>
<script type="text/javascript">
function showPDF() {
var pdf = document.createElement('embed')
pdf.src =
'/media/pdf/AELOS PRO 3 使用手册V1.42-基于镜像1.0.4,软件版本2.0.0(含)以上.pdf'
pdf.type = 'application/pdf'
pdf.width = '100%'
pdf.height = 'calc(100vh)'
document.getElementById('pdf-container').appendChild(pdf)
}
function showPDF2() {
PDFObject.embed(
'/media/pdf/AELOS PRO 3 使用手册V1.42-基于镜像1.0.4,软件版本2.0.0(含)以上.pdf',
'#my-pdf'
)
}
$('.flex-item-link').on('click', function () {
$(this).find('img').addClass('active animate__animated animate__zoomInDown');
// $(this).find('img').on('click', function () {
// const _this = $(this)
// setTimeout(function () {
// _this.removeClass('animate__zoomInDown').addClass('animate__animated animate__backOutRight')
// setTimeout(function(){
// window.top.location.href = 'ai_chat.html';
// return false;
// },1000)
// }, 1000)
// })
const _this = $(this)
setTimeout(function () {
_this.find('img').removeClass('animate__zoomInDown').addClass('animate__animated animate__backOutRight')
setTimeout(function(){
window.top.location.href = 'ai_chat.html';
return false;
},1000)
}, 2000)
})
$('.return').on('click', function () {
$('#my-pdf').removeClass('pdfobject-container')
$('#my-pdf').children().remove()
window.location.reload();
})
// 菜单切换
var showcase = $('#showcase')
showcase.Cloud9Carousel({
yOrigin: 52,
yRadius: 40,
itemClass: 'menu-item',
// mirror: {
// gap: 12,
// height: 0.2
// },
buttonLeft: $('#nav > .left'),
buttonRight: $('#nav > .right'),
autoPlay: 1,
bringToFront: true,
onLoaded: function () {
showcase.css('visibility', 'visible')
showcase.css('display', 'none')
showcase.fadeIn(1500)
},
})
$('#nav > button').click(function (e) {
var b = $(e.target).addClass('down')
setTimeout(function () {
b.removeClass('down')
}, 80)
})
$(document).keydown(function (e) {
switch (e.keyCode) {
/* left arrow */
case 37:
$('#nav > .left').click()
break
/* right arrow */
case 39:
$('#nav > .right').click()
}
})
// 菜单3D效果
var carousel = $(".carousel"),
items = $(".item"), // 轮播图的每一项
itemCount = items.length,
currdeg = 0,
autoRotateInterval,
autoRotateEnabled = true; // 标记是否启用自动旋转
rotationDuration = 2000; // 旋转时间,单位为毫秒
$(".next").on("click", { d: "n" }, btnRotate);
$(".prev").on("click", { d: "p" }, btnRotate);
// 绑定点击事件
items.on("click", function() {
var index = $(this).index(); // 获取被点击项的索引
rotateToItem(index); // 旋转到指定项
});
// 开始自动旋转
function startAutoRotate() {
if (autoRotateInterval) {
clearInterval(autoRotateInterval);
}
autoRotateInterval = setInterval(function() {
// 6个60
// 4个90
currdeg = currdeg - 60; // 向左旋转,每次 60 度
updateTransform();
}, rotationDuration);
}
// 停止自动旋转
function stopAutoRotate() {
clearInterval(autoRotateInterval);
}
// 旋转到指定项
function rotateToItem(index) {
var itemAngle = 360 / itemCount; // 计算每一项的角度
var targetDeg = -index * itemAngle; // 计算目标角度
var deltaDeg = targetDeg - currdeg; // 计算旋转的角度差
// 6个 如果旋转角度差大于 180 度,则选择顺时针旋转
// 4个 90
if (Math.abs(deltaDeg) > 180) {
deltaDeg = (deltaDeg > 0 ? deltaDeg - 360 : deltaDeg + 360);
}
// 设置旋转的时间和缓动效果
carousel.css({
// transition: "transform " + (rotationDuration / 1000) + "s ease-out",
"-webkit-transform": "rotateY(" + (currdeg + deltaDeg) + "deg)",
"-moz-transform": "rotateY(" + (currdeg + deltaDeg) + "deg)",
"-o-transform": "rotateY(" + (currdeg + deltaDeg) + "deg)",
"transform": "rotateY(" + (currdeg + deltaDeg) + "deg)"
});
// 更新当前旋转角度
currdeg += deltaDeg;
// 触发旋转后停止自动旋转
stopAutoRotate();
// 确保在旋转完成后继续自动旋转
setTimeout(function() {
if (autoRotateEnabled) {
startAutoRotate();
}
}, rotationDuration); // 旋转时间与自动旋转间隔匹配
}
// 更新 transform 样式
function updateTransform() {
carousel.css({
"-webkit-transform": "rotateY(" + currdeg + "deg)",
"-moz-transform": "rotateY(" + currdeg + "deg)",
"-o-transform": "rotateY(" + currdeg + "deg)",
"transform": "rotateY(" + currdeg + "deg)"
});
}
function btnRotate(e){
// 6个60
// 4个90
if(e.data.d=="n"){
currdeg = currdeg - 60;
}
if(e.data.d=="p"){
currdeg = currdeg + 60;
}
updateTransform()
// 触发旋转后停止自动旋转
stopAutoRotate();
// 确保在旋转完成后继续自动旋转
setTimeout(function() {
if (autoRotateEnabled) {
startAutoRotate();
}
}, rotationDuration); // 旋转时间与自动旋转间隔匹配
}
// 页面加载完成后开始自动旋转
$(document).ready(function() {
startAutoRotate();
});
</script>
</html>
Loading…
Cancel
Save