瀏覽代碼

my projest push

lizuxiao 2 年之前
父節點
當前提交
077247847b
共有 100 個文件被更改,包括 4812 次插入0 次删除
  1. 10 0
      .htaccess
  2. 47 0
      a.php
  3. 二進制
      book2.pdf
  4. 701 0
      css/index.css
  5. 二進制
      img/1.png
  6. 二進制
      img/10.png
  7. 二進制
      img/12.png
  8. 二進制
      img/123.jpg
  9. 二進制
      img/13.png
  10. 二進制
      img/14.png
  11. 二進制
      img/16.png
  12. 二進制
      img/2.png
  13. 二進制
      img/20.png
  14. 二進制
      img/3.png
  15. 二進制
      img/33.png
  16. 二進制
      img/34.png
  17. 二進制
      img/35.png
  18. 二進制
      img/36.png
  19. 二進制
      img/37.png
  20. 二進制
      img/4.jpg
  21. 二進制
      img/4.png
  22. 二進制
      img/42.png
  23. 二進制
      img/74.png
  24. 二進制
      img/8.png
  25. 二進制
      img/9.png
  26. 二進制
      img/l.png
  27. 二進制
      img/logo.png
  28. 二進制
      img/menu.png
  29. 二進制
      img/r.png
  30. 二進制
      img/图层 55.png
  31. 二進制
      img/图层 74.png
  32. 二進制
      img/图层 74@2x.png
  33. 二進制
      img/图层 75.png
  34. 二進制
      img/图层 75@2x.png
  35. 二進制
      img/矩形 1 拷贝 6.png
  36. 二進制
      img/组 19 拷贝.png
  37. 二進制
      img/组 19 拷贝@2x.png
  38. 二進制
      img/组 19 拷贝@3x.png
  39. 二進制
      img/组 19.png
  40. 二進制
      img/组 19@2x.png
  41. 二進制
      img/组 19@3x.png
  42. 二進制
      img/组 20 拷贝.png
  43. 二進制
      img/组 29(1).png
  44. 二進制
      img/组 29(2).png
  45. 二進制
      img/组 29.png
  46. 二進制
      img/组 29@2x(1).png
  47. 二進制
      img/组 29@2x(2).png
  48. 二進制
      img/组 29@2x.png
  49. 二進制
      img/组 3 拷贝 4@2x.png
  50. 二進制
      img/组 3 拷贝 5@2x.png
  51. 二進制
      img/组 3 拷贝 6@2x.png
  52. 二進制
      img/组 3 拷贝 7@2x.png
  53. 二進制
      img/组 33(1).png
  54. 二進制
      img/组 33.png
  55. 二進制
      img/组 34 拷贝.png
  56. 二進制
      img/组 35(1).png
  57. 二進制
      img/组 35(2).png
  58. 二進制
      img/组 35.png
  59. 二進制
      img/组 35@2x(1).png
  60. 二進制
      img/组 35@2x(2).png
  61. 二進制
      img/组 35@2x.png
  62. 282 0
      index.html
  63. 245 0
      index2.html
  64. 511 0
      js/jquery.media.js
  65. 1 0
      js/jquery.min.js
  66. 10 0
      music.html
  67. 0 0
      nginx.htaccess
  68. 20 0
      pdf.html
  69. 20 0
      swiper/LICENSE
  70. 11 0
      swiper/README.md
  71. 4 0
      swiper/angular/angular/src/public-api.d.ts
  72. 4 0
      swiper/angular/angular/src/swiper-events.d.ts
  73. 26 0
      swiper/angular/angular/src/swiper-slide.directive.d.ts
  74. 251 0
      swiper/angular/angular/src/swiper.component.d.ts
  75. 9 0
      swiper/angular/angular/src/swiper.module.d.ts
  76. 10 0
      swiper/angular/angular/src/utils/get-params.d.ts
  77. 1 0
      swiper/angular/angular/src/utils/params-list.d.ts
  78. 9 0
      swiper/angular/angular/src/utils/utils.d.ts
  79. 8 0
      swiper/angular/esm2020/angular/src/public-api.mjs
  80. 2 0
      swiper/angular/esm2020/angular/src/swiper-events.mjs
  81. 59 0
      swiper/angular/esm2020/angular/src/swiper-slide.directive.mjs
  82. 514 0
      swiper/angular/esm2020/angular/src/swiper.component.mjs
  83. 19 0
      swiper/angular/esm2020/angular/src/swiper.module.mjs
  84. 46 0
      swiper/angular/esm2020/angular/src/utils/get-params.mjs
  85. 117 0
      swiper/angular/esm2020/angular/src/utils/params-list.mjs
  86. 51 0
      swiper/angular/esm2020/angular/src/utils/utils.mjs
  87. 2 0
      swiper/angular/esm2020/swiper-angular.mjs
  88. 5 0
      swiper/angular/esm2020/swiper_angular.mjs
  89. 786 0
      swiper/angular/fesm2015/swiper_angular.mjs
  90. 0 0
      swiper/angular/fesm2015/swiper_angular.mjs.map
  91. 781 0
      swiper/angular/fesm2020/swiper_angular.mjs
  92. 0 0
      swiper/angular/fesm2020/swiper_angular.mjs.map
  93. 32 0
      swiper/angular/package.json
  94. 1 0
      swiper/angular/swiper-angular.d.ts
  95. 5 0
      swiper/angular/swiper_angular.d.ts
  96. 44 0
      swiper/core/breakpoints/getBreakpoint.js
  97. 6 0
      swiper/core/breakpoints/index.js
  98. 72 0
      swiper/core/breakpoints/setBreakpoint.js
  99. 38 0
      swiper/core/check-overflow/index.js
  100. 52 0
      swiper/core/classes/addClasses.js

+ 10 - 0
.htaccess

@@ -0,0 +1,10 @@
+<IfModule mod_rewrite.c>
+  Options +FollowSymlinks
+  RewriteEngine On
+  
+  RewriteCond %{REQUEST_FILENAME} !-d
+  RewriteCond %{REQUEST_FILENAME} !-f
+  
+  RewriteRule ^(.*)$ index.php?p=$1 [QSA,PT,L]
+
+</IfModule>

+ 47 - 0
a.php

@@ -0,0 +1,47 @@
+public function new_image($param)
+    {
+        $check_res = $this->checkImg();
+        if ($check_res[ "code" ] >= 0) {
+            $file = request()->file($param[ "name" ]);
+            if (empty($file))
+                return $this->error();
+
+            $tmp_name = $file->getPathname();//获取上传缓存文件
+            $original_name = $file->getOriginalName();//文件原名
+//            $file_path = $this->upload_path."/".$this->site_id . "/images/".date("Ymd"). '/';
+            $file_path = $this->path;
+            // 检测目录
+            $checkpath_result = $this->checkPath($file_path);//验证写入文件的权限
+            if ($checkpath_result[ "code" ] < 0)
+                return $checkpath_result;
+
+            $file_name = $file_path . $this->createNewFileName();
+            $extend_name = $file->getOriginalExtension();
+
+            $thumb_type = $param[ "thumb_type" ];
+            //原图保存
+            $new_file = $file_name . "." . $extend_name;
+            $image = Image::make($tmp_name);
+            $width = $image->width();//图片宽
+            $height = $image->height();//图片高
+            $image = $this->imageWater($image);
+
+   move_uploaded_file($tmp_name,$_SERVER['DOCUMENT_ROOT'].'/'.$new_file);
+   
+   $put_result = event("Put", [ "file_path" => $new_file, "key" => $new_file ], true);
+            if (!empty($put_result)) {
+                $this->deleteFile($new_file);
+                if ($put_result[ "code" ] >= 0) {
+                    $info = $put_result[ "data" ][ "path" ];
+                } else {
+                    return $put_result;
+                }
+            }
+            //云上传没有成功  保存到本地
+            return $this->success(['pic_path'=>$info], "UPLOAD_SUCCESS");
+            
+        } else {
+            //返回错误信息
+            return $check_res;
+        }
+    }

二進制
book2.pdf


+ 701 - 0
css/index.css

@@ -0,0 +1,701 @@
+* {
+	padding: 0;
+	margin: 0;
+	list-style: none;
+}
+
+.top {
+	z-index: 999;
+	margin-top: 10px;
+	position:absolute;
+	width: 100%;
+	height: 40px;
+}
+
+.logo {
+	margin-left: 10%;
+	float: left;
+	height: 100%;
+}
+
+.logo img {
+	width: 160px;
+	height: 38px;
+	float: left;
+}
+
+.logo h2 {
+	padding-left: 42px;
+	height: 40px;
+	font-size: 32px;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #FFFFFF;
+	line-height: 40px;
+}
+
+.nav {
+	margin-right: 8%;
+	height: 100%;
+	float: right;
+}
+
+.nav ul {
+	width: 100%;
+	height: 40px;
+	display: flex;
+}
+
+.nav ul li {
+	margin-left: 20px;
+	line-height: 40px;
+}
+
+.nav ul li a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+.banner_content {
+	margin-left: 10%;
+	padding-top: 14%;
+/* 	margin-top: 30%; */
+	z-index: 99;
+	position: absolute;
+}
+
+.banner_content>h2 {
+	height: 80px;
+	font-size: 46px;
+	font-family: Source Han Sans CN;
+	font-weight: bold;
+	color: #ffffff;
+	line-height: 60px;
+}
+.logo2 img {
+  width: 280px;
+}
+
+.logo2 h2 {
+	font-size: 57px;
+	height: 80px;
+	font-family: Source Han Sans CN;
+	font-weight: bold;
+	color: #ffffff;
+	line-height: 60px;
+	padding-left: 6%;
+}
+
+.banner_content p {
+	height: 62px;
+	font-size: 18px;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	line-height: 34px;
+	opacity: 0.81;
+}
+
+.project {
+
+	position: relative;
+	/* 	padding-top: 40px; */
+	/* text-align: center; */
+	margin-top: -4px;
+	background-repeat: no-repeat;
+	background-size: 100%;
+	height: 960px;
+	width: 100%;
+	/* 	background-image: url('../img/3.png'); */
+}
+
+.bg1 {
+	margin: 0 !important;
+	z-index: -1;
+	position: absolute;
+	width: 100% !important;
+}
+
+.project h2 {
+	padding-top: 120px;
+	height: 69px;
+	font-size: 66px;
+	font-family: Source Han Sans CN;
+	font-weight: bold;
+	color: #FFFFFF;
+	line-height: 15px;
+}
+
+.project img {
+	width: 404px;
+	height: 82px;
+}
+
+.project h1 {
+	margin-top: 40px;
+	height: 47px;
+	font-size: 61px;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #1193d1;
+	line-height: 24px;
+}
+
+.project p {
+	margin-top: 20px;
+/* 	height: 232px; */
+	font-size: 18px;
+	font-family: Source Han Sans CN;
+	font-weight: bold;
+	color: #FFFFFF;
+	line-height: 40px;
+}
+
+.car {
+	background-size: 100%;
+	width: 100%;
+	height: 960px;
+}
+
+.project_content {
+	text-align: center;
+}
+
+.car_content {
+	position: relative;
+	text-align: center;
+}
+
+.car_content h1 {
+	padding-top: 120px;
+	height: 54px;
+	font-size: 66px;
+	font-family: Source Han Sans CN;
+	font-weight: bold;
+	color: #FFFFFF;
+	line-height: 15px;
+}
+.swiper {
+	width: 80%;
+	height: 100%;
+}
+
+.swiper-slide {
+	text-align: center;
+	font-size: 18px;
+	display: -webkit-box;
+	display: -ms-flexbox;
+	display: -webkit-flex;
+	display: flex;
+	-webkit-box-pack: center;
+	-ms-flex-pack: center;
+	-webkit-justify-content: center;
+	justify-content: center;
+	-webkit-box-align: center;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	align-items: center;
+}
+
+.swiper-slide img {
+	display: block;
+	width: 100%;
+	height: 100%;
+	object-fit: cover;
+}
+
+.swiper-button-next {
+	margin-top: 5% !important;
+	position: absolute !important; 
+	left:92% !important;
+}
+
+.swiper-button-prev {
+	margin-top: 5% !important;
+	margin-left:6%;
+}
+.model_content{
+	position: relative;
+	text-align: center;
+}
+.model_content h1{
+	padding-top: 120px;
+	height: 55px;
+	font-size: 66px;
+	font-family: Source Han Sans CN;
+	font-weight: bold;
+	color: #FFFFFF;
+	line-height: 15px;
+}
+.model_content img{
+	margin-left: 16%;
+	float: left;
+	width:445px;
+}
+.model_content .content{
+	text-align: left;
+	margin-right: 16%;
+	float: right;
+	color: #fff;
+}
+.model_content .content p{
+	font-size: 33px;
+	margin-top: 10%;
+}
+.cs{
+	margin-left: 30%;
+	margin-top: 31%;
+}
+.cs ul{
+	display: flex;
+}
+.cs li span{
+	width:20px;
+	height:20px;
+	background-color:  #6C47FF;
+	border: 2px solid #6C47FF;
+	border-radius: 41px;
+	display: inline-block;
+}
+.cs li{
+	border-radius: 50px;
+	padding: 16px;
+	padding-right: 20px;
+	border: 1px solid #6C47FF;
+	margin-left: 80px;
+	font-size: 40px;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #FFFFFF;
+}
+.li{
+	border: 1px solid  #F72585 !important;
+
+}
+.li span{
+	background-color:  #F72585 !important;
+	border: 2px solid  #F72585 !important;
+}
+#xianlu{
+	width: 100%;
+	color: #fff;
+}
+#xianlu .container{
+	margin-top: 5%;
+	margin-left: 12%;
+	display: flex;
+	width:80%;
+	text-align: center;
+}
+
+#xianlu .container p{
+	font-size:16px;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #FFFFFF;
+	line-height: 47px;
+}
+.y{
+	margin: 5px;
+	display: block;
+	width: 10px;
+	height: 10px;
+	background: #FF6600;
+	border-radius: 4px;
+}
+.x{
+	margin-left: 8px;
+	display: block;
+	width: 3px;
+	height:198px;
+	background: #F0F0F2;
+}
+.Liberty2{
+	padding-top: 120px;
+	text-align: center;
+	height: 67px;
+	font-size: 66px;
+	font-family: Source Han Sans CN;
+	font-weight: bold;
+	color: #FFFFFF;
+	line-height: 15px;
+}
+#xianlu .left{
+	text-align: right;
+}
+.four{
+	margin-top: 371px;
+}
+#xianlu .right{
+	text-align: left;
+	margin-top:0px;
+}
+.five{
+	margin-top: 222px;
+}
+.footer{
+	text-align: center;
+	line-height:229px;
+	height: 229px;
+	background-color: #141E47;
+}
+.footer img{
+	margin-left: 10px;
+	height: 52px;
+}
+.pay{
+	opacity: 0.8;
+	margin-left: 40%;
+	line-height: 42px;
+	font-size: 18px;
+	text-align: center;
+	border-radius: 10px;
+	width: 320px;
+/* 	height:82px; */
+	top: 80px;
+	z-index: 9999;
+	background-color: #F0F0F2;
+	position: absolute;
+	cursor: pointer;
+}
+.pay span{
+	margin: 20px;
+}
+.nav-tab{
+	display: none;
+}
+.pay span:hover{
+	color: #007aff;
+}
+.nav-list{
+	margin-bottom: 40px;
+	display: none;
+}
+.nav-list .top{
+	
+	font-size: 24px;
+	text-align: right;
+	border-bottom:1px solid #fff;
+	width:500px;
+	color: #fff;
+}
+.nav-list .top span{
+	cursor: pointer;
+	margin-right: 20px;
+}
+@media (min-width:766px) and (max-width:1024px){ 
+	.logo {
+	    margin-left:2%;
+	}
+	.logo2 img{
+		width: 40px;
+	}
+	.logo2 h2 {
+	    font-size:42px;
+	}
+	.project {
+    height:580px;
+	}
+	.banner_content>h2 {
+	    height: 80px;
+	    font-size:26px;
+		line-height:40px;
+	}
+	.banner_content {
+	    padding-top: 20%;
+	}
+	.banner_content .bg1{
+		height: 1000px;
+	}
+	.banner_content p {
+	    font-size: 16px;
+	}
+	.bg1{
+	  height: 580px !important;
+	}
+	.project h2 {
+	    padding-top:80px;
+	    height: 49px;
+	    font-size: 46px;
+	}
+	.project img {
+	    width:202px;
+	    height: 42px;
+	}
+	.project h1 {
+	    font-size: 31px;
+	}
+	.project p {
+	    margin-top: 20px;
+	    height: 192px;
+	    font-size: 16px;
+	    line-height: 20px;
+	}
+	.car_content h1 {
+	    padding-top: 80px;
+	    font-size:46px;
+	}
+	.swiper-button-prev{
+	    left: -10px !important;
+	}
+	.car {
+	  height:580px;
+	}
+	.model_content h1 {
+	    padding-top:80px;
+	    font-size: 46px;
+	}
+	.model_content{
+		 height:580px;
+	}
+	.model_content img {
+	    margin-left: 10%;
+	    float: left;
+	    width: 245px;
+	}
+	.cs {
+	    margin-left: 26%;
+	    margin-top: 36%;
+	}
+	.cs li {
+	    border-radius:20px;
+	    padding:8px;
+	    border: 1px solid #6C47FF;
+	    margin-left: 80px;
+	    font-size: 16px;
+	}
+	.Liberty2 {
+	    padding-top:80px;
+	    font-size: 46px;
+	}
+	#xianlu {
+	    height:580px;
+	}
+	.x {
+	    height:46px;
+	}
+	#xianlu .container {
+		margin: 2% auto;
+	    margin-left:23%;
+		width:70%;
+	}
+	#xianlu .container p {
+		
+	    font-size: 18px;
+		line-height: 27px;
+	}
+	#xianlu .left {
+	    margin-top:60px;
+	}
+	.four {
+	    margin-top: 80px;
+	}
+	.three {
+	    margin-top: 90px;
+	}
+	.five {
+	    margin-top:88px;
+	}
+	
+	
+}
+.bg{
+	display: none;
+	position: relative;
+}
+@media (min-width:340px) and (max-width:766px){ 
+	.model_content .content p {
+		margin-left: 10px;
+	    font-size: 14px;
+	    margin-top: 10%;
+	}
+	#model{
+		height: 680px !important;
+	}
+	#model .bg1{
+		height: 680px !important;
+	}
+	.bg {
+	    height: 290px;
+	}
+	#mp4{
+		/* display: none; */
+	}
+	.logo img {
+	    width: 77px;
+	    height:28px;
+	}
+	.logo h2 {
+		line-height: 30px;
+	    font-size: 22px;
+	  
+	}
+	.nav{
+		display: none;
+	}
+	.logo2{
+		display: none;
+	}
+	.banner_content>h2 {
+		line-height: 30px;
+		height:30px;
+	    font-size: 22px;  
+	}
+	.banner_content{
+		padding: 10px;
+		margin-left:0%;
+		width: 90%;
+	}
+	.banner_content {
+	    padding-top: 20%;
+	}
+	.banner_content p {
+	    font-size: 14px; 
+	}
+	.bg1{
+		height: 480px !important;
+	}
+	.project h2 {
+	    padding-top: 20px;
+	    font-size:26px;
+	}
+	.project img {
+	    width:204px;
+	    height: 42px;
+	}
+	.project h1 {
+		margin-top: 20px;
+	    font-size:26px;
+	}
+	.project p {
+		margin-top: 10px;
+	    font-size: 12px;
+	    line-height: 20px;
+	}
+	.project {
+	    height:480px;
+	}
+	.car_content h1 {
+	    font-size:36px;
+	}
+	.swiper-button-next, .swiper-button-prev {
+	   display: none !important;
+	}
+	.car {
+	    height: 363px;
+	}
+	.model_content h1 {
+		padding-top:60px;
+	    font-size: 36px; 
+	}
+	.model{
+		 height:480px;
+	}
+	.cs ul {
+		margin-left:6%;
+	    display: block;
+	}
+	.model_content img {
+		margin-left: 18%;
+	    width: 245px;
+	}
+	.cs li {
+		width: 66%;
+	    border-radius:10px;
+	    padding:6px;
+		margin-top: 10px;
+	    border: 1px solid #6C47FF;
+	    margin-left: 80px;
+	    font-size:20px;
+	}
+	.model_content .content {
+	    text-align: left;
+	    margin-right: 6%;
+	    float: right;
+	    color: #fff;
+	}
+	.cs {
+	    margin-left:-10%;
+	    margin-top:110%;
+	}
+	.nav-tab{
+		cursor: pointer;
+		float: right;
+		display:inline-block;
+	}
+	.nav-tab img{
+		margin-right: 20px;
+		width: 60px;
+	}
+	.nav-list{
+		transition: all 0.8s;
+		text-align: center;
+		margin-left:-800px;
+		z-index: 9999;
+		margin-top: -20px;
+		height: 100vh;
+		width:500px;
+		background-color: black;
+		display:inline-block;
+	}
+	.nav-list ul{
+		line-height: 80px;
+		margin-top: 10%;
+		width: 100%;
+	}
+	.nav-list ul li{
+		margin-left: 30px;
+		width: 100%;
+	}
+	.nav-list a{
+		text-decoration: navy;
+		margin-top: 20px;
+		width: 100%;
+		text-align: center;
+		font-size: 24px;
+		color: #fff;
+	}
+	.bg{
+		background-size: 100%;
+		background-image: url('../img/74.png');
+		display: inline-block;
+	}
+	.Liberty2 {
+	    padding-top:60px;
+	    font-size: 36px;
+	}
+	#xianlu{
+		height: 600px;
+	}
+	#xianlu .bg1{
+		height: 800px !important;
+	}
+	#xianlu .container {
+		font-size: 14px !important;
+		width: 100%;
+	    margin-top: 2%;
+	    margin-left:-2%;
+	}
+	.x {
+	    height:126px !important;
+	}
+	#xianlu .container p {
+		line-height: 18px;
+	    font-size:12px;
+	}
+	#xianlu .left {
+	    margin-top: 60px;
+	}
+	.three {
+	    margin-top: 100px;
+	}
+	.four {
+		text-align: right;
+		padding: 10px;
+	    margin-top: 160px;
+	}
+	.five {
+		padding: 10px;
+	    margin-top:138px;
+	}
+}

二進制
img/1.png


二進制
img/10.png


二進制
img/12.png


二進制
img/123.jpg


二進制
img/13.png


二進制
img/14.png


二進制
img/16.png


二進制
img/2.png


二進制
img/20.png


二進制
img/3.png


二進制
img/33.png


二進制
img/34.png


二進制
img/35.png


二進制
img/36.png


二進制
img/37.png


二進制
img/4.jpg


二進制
img/4.png


二進制
img/42.png


二進制
img/74.png


二進制
img/8.png


二進制
img/9.png


二進制
img/l.png


二進制
img/logo.png


二進制
img/menu.png


二進制
img/r.png


二進制
img/图层 55.png


二進制
img/图层 74.png


二進制
img/图层 74@2x.png


二進制
img/图层 75.png


二進制
img/图层 75@2x.png


二進制
img/矩形 1 拷贝 6.png


二進制
img/组 19 拷贝.png


二進制
img/组 19 拷贝@2x.png


二進制
img/组 19 拷贝@3x.png


二進制
img/组 19.png


二進制
img/组 19@2x.png


二進制
img/组 19@3x.png


二進制
img/组 20 拷贝.png


二進制
img/组 29(1).png


二進制
img/组 29(2).png


二進制
img/组 29.png


二進制
img/组 29@2x(1).png


二進制
img/组 29@2x(2).png


二進制
img/组 29@2x.png


二進制
img/组 3 拷贝 4@2x.png


二進制
img/组 3 拷贝 5@2x.png


二進制
img/组 3 拷贝 6@2x.png


二進制
img/组 3 拷贝 7@2x.png


二進制
img/组 33(1).png


二進制
img/组 33.png


二進制
img/组 34 拷贝.png


二進制
img/组 35(1).png


二進制
img/组 35(2).png


二進制
img/组 35.png


二進制
img/组 35@2x(1).png


二進制
img/组 35@2x(2).png


二進制
img/组 35@2x.png


+ 282 - 0
index.html

@@ -0,0 +1,282 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<title>Cosmic Angel</title>
+		<link rel="stylesheet" href="./css/index.css">
+		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+		<meta http-equiv="X-UA-Compatible" content="ie=edge">
+		<link rel="stylesheet" href="./swiper/swiper-bundle.min.css">
+	</head>
+	<style>
+		.model_content .content p {
+			font-size: 23px;
+		}
+		.model_content .content {
+		    margin-right: 10%;
+		}
+		@media (max-width: 766px) and (min-width: 340px){
+			.bg {
+			    height: 340px;
+			}
+			.banner_content>h2 {
+				font-size: 18px;
+			    height: 70px;
+			}
+			.banner_content p {
+			    line-height:26px;
+			}
+			.project {
+			    height: 680px;
+			}
+			.project .bg1{
+			    height: 680px !important;
+			}
+			.model_content .content{
+				    margin-left: 30px;
+			}
+			.model_content .content p {
+			    font-size: 14px !important;
+			}
+			#xianlu {
+			    height: 800px;
+			}
+		}
+		
+	</style>
+	<body>
+		<div>
+			<div class="top">
+				<div class="logo">
+					<img src="./img/logo.png" alt="">
+					<!-- <h2>Liberty City</h2> -->
+				</div>
+				<div class="nav">
+					<ul>
+						<li><a href="#home">Home</a></li>
+						<li><a href="#project">Project</a></li>
+						<li><a href="#nft">NFT</a></li>
+						<li><a href="#model">Model</a></li>
+						<li><a href="#xianlu">Map</a></li>
+						<li><a target="_blank" href="./pdf.html">Book</a></li>
+						<li><a  href="./index2.html">CN</a></li>
+					</ul>
+				</div>
+				<div class="nav-tab">
+					<img id="zk" src="./img/menu.png" alt="">
+				</div>
+				<div class="nav-list">
+				 <div class="top">
+				 	<span id="cols">X</span>
+				 </div>
+				<ul>
+					<li><a href="#home">Home</a></li>
+					<li><a href="#project">Project</a></li>
+					<li><a href="#nft">NFT</a></li>
+					<li><a href="#model">Model</a></li>
+					<li><a href="#xianlu">Map</a></li>
+					<li><a target="_blank" href="./pdf.html">Book</a></li>
+					<li><a  href="./index2.html">CN</a></li>
+				</ul>
+				</div>
+			</div>
+			<div class="banner_content  cont" id="home">
+				<div class="banner_logo">
+					<div  class="logo2">
+						<img src="./img/33.png" alt="">
+					</div>
+				</div>
+				<h2>The linker of the ecological value transmission of the meta universe</h2>
+				
+				<p>Bring mainstream applications and assets into the whole cosmoangel ecosystem, and help many high-quality assets enter other blockchain networks,<br>
+				Return the entire encrypted digital asset market to its origin, and realize the free flow, interaction and aggregation of assets on different blockchain chains,<br>
+				And enable the development of real industries</p>
+			</div>
+			<div>
+				<img class="bg1" src="./img/74.png" alt="">	
+			</div>
+			<video type="video/mp4" autoplay="autoplay" muted loop="loop" style="width: 100%;" id="void">
+			<!-- 	<source src="./void/banner.mp4" type="video/ogg" / id="mp4"> -->
+			</video>
+	<!-- 		<audio autoplay="autoplay" id="audio" loop="loop">
+				<source src="./void/13.mp3" type="audio/MP3">
+			</audio> -->
+			<div class="bg"></div>
+			<!-- <div class="pay">是否播放背景音乐?
+				<br>
+				<span class="pays">是</span><span class="off">否</span>
+			</div> -->
+			<div class="project cont" id="project">
+				<img class="bg1" src="./img/16.png" alt="">
+				<div class="project_content">
+					<h2>Project</h2>
+					<h1>NEW WORLD IS COMING!</h1>
+					<p>
+						Cosmoangel is the first super aggregation platform with the theme of meta cosmic ecology, and integrates probability elements such as web3.0+dao+gamefi+defi+nft+metaverse。<br>
+						Cosmoangel creates application scenarios for Web3.0 yuan universe ecology, including games, sports, NFT collections, defi aggregators, decentralized exchanges, etc,<br>
+						Create a real ecological vision of infinite expansion and respect for the new financial paradigm of the meta universe。<br>
+						And it is 100% operated by its community Dao to drive development and management, and users with their own management token CAGL will be able to make decisions。<br>
+					</p>
+					<p>
+						Cosmosangel will also use the flow effect and wealth effect of the meta universe to promote human civilization to complete the dimensional transition from the material world to the digital world,<br>
+						Create a decentralized meta universe aggregation ecosystem with strong IP, and strive to create a lightweight, open and free meta universe super aggregation ecosystem that everyone can participate in,<br>
+						Meet users' all-round financial investment, production and living needs in the meta universe world, and become the first choice for all meta universe ecological application services。<br>
+					</p>
+				</div>
+			</div>
+			<div class="car cont" id="nft">
+				<img class="bg1" src="./img/4.png" alt="">
+				<div class="car_content">
+					<h1>NFT</h1>
+					<!-- Swiper -->
+					<div class="swiper mySwiper">
+						<div class="swiper-wrapper">
+							<div class="swiper-slide">
+								<img src="./img/34.png" alt="">
+							</div>
+							<div class="swiper-slide">
+								<img src="./img/35.png" alt="">
+							</div>
+							<div class="swiper-slide">
+								<img src="./img/36.png" alt="">
+							</div>
+							<div class="swiper-slide">
+								<img src="./img/37.png" alt="">
+							</div>
+						</div>
+					</div>
+					<div class="swiper-button-next"><img src="./img/r.png" alt=""></div>
+					<div class="swiper-button-prev"><img src="./img/l.png" alt=""> </div>
+				</div>
+			</div>
+			<video type="video/mp4"  style="width: 100%;" id="void" controls>
+				<source src="./void/banner.mp4" type="video/ogg" / id="mp4">
+			</video>
+			<div class="model cont" id="model">
+				<img class="bg1" src="./img/42.png" alt="">
+				<div class="model_content">
+					<h1>Model</h1>
+					<img src="./img/9.png" alt="">
+					<div class="content">
+						<p>
+							Total issuance of CAGL: 270000000 pieces<br>
+							Initial issuance method: Ido (liquidity mining)<br>
+						</p>
+						<p>
+							CAGL token allocation:<br>
+							30% to the community for early liquidity (excess destruction)<br>
+							70% ~ ore pool Ido output /nft medal computing power outputlp mining output<br>
+						</p>
+					</div>
+					<div class="cs">
+						<ul>
+							<li><span></span>70% - mining output</li>
+							<li class="li"><span></span>30% - initial liquidity</li>
+						</ul>
+					</div>
+				</div>
+			</div>
+			<!-- 线路图 -->
+			<div id="xianlu" class="cont">
+				<img class="bg1" src="./img/20.png" alt="">
+				<div class="Liberty2">Map</div>
+				<div class="container">
+					<div class="left">
+						<div class="tow">
+							 <h2>2021year</h2>
+							<p>	2021.10 build system architecture and develop cosmoangel ecosystem</p>
+						</div>
+						<div class="four">
+							 <h2>2023year</h2>
+							 <p>2023.01 CAGL token will be launched on the world famous central exchange<br>
+							 2023.02 aggregate different types of external partners
+							 2023.04 cosmicangel version 2.0 was officially launched and is open to users around the world<br>
+							 2023.08 iteration version 3.0, comprehensive ecological renewal and opening, achieving profitability</p>
+						</div>
+					</div>
+					<div class="hx">
+						<span class="y"></span>
+						<span class="x"></span>
+						<span class="y"></span>
+						<span class="x"></span>
+						<span class="y"></span>
+						<span class="x"></span>
+					</div>
+					<div class="right">
+						<div class="five">
+						 <h2>2022year</h2>
+						<p>2022.01 establishment of product ecological partners<br>
+							2022.03 cosmicangel system version 1.0 starts internal test<br>
+							2022.06 new mode and game development and upgrading<br>
+							2022.08 CAGL token will be launched on the world-famous Dex<br>
+							Launch coinmarketcap on October 2022<br>
+							On November 2022, open the ecological public beta, and users will be able to experience the meta universe scene<br>
+							2022.11 complete the construction of core communities, and realize the breakthrough of 1million community users. 2022.12 game deployment is launched<br>
+							</p>
+						</div>
+					</div>
+				</div>
+
+			</div>
+			<div class="footer">
+				<a target="_blank" href="https://ss.transgot.cn/libertycitydao"> <img src="./img/12.png" alt=""></a>
+				<a target="_blank" href="https://discord.gg"><img src="./img/13.png" alt=""></a>
+				<a target="_blank" href="https://twitter.com/dao_libertycity"><img src="./img/14.png" alt=""></a>
+			</div>
+		</div>
+	</body>
+	<script src="./swiper/swiper-bundle.min.js"></script>
+	<script src="./js/jquery.min.js"></script>
+	<script>
+		let w=$(window).width();
+		let h=$(window).height();
+		console.log(w)
+		if(w<766){
+			$('#void').css('display','none')
+			$('.bg').css('width',w,'display','line-break')
+		}
+		if(w>1024){
+			console.log(w,2)
+		  $('.cont').css('height',h+30+"px")
+		  $('.bg1').css('height',h+30+"px")
+		}
+		
+		$('.nav-tab').on('click',function(){
+			 $('#zk').css('display','none')
+			 $('.nav-list').css('margin-left','-300px')
+		})
+		
+		$('#cols').on('click',function(){
+			 $('#zk').css('display','inline-block')
+			 $('.nav-list').css('margin-left','-700px')
+		})
+		
+		$(function() {
+			let music = $("#audio")[0];
+			$('.off').click('on', function() {
+				$('.pay').css('display', 'none')
+			})
+			$('.pays').click('on', function() {
+
+				if (music.paused) { //判读是否播放  
+					music.paused = false;
+					music.play(); //没有就播放
+					$('.pay').css('display', 'none')
+					console.log(music)
+				}
+
+			})
+
+		})
+	</script>
+	<script>
+		var swiper = new Swiper(".mySwiper", {
+			slidesPerView: 3,
+			spaceBetween: 30,
+			navigation: {
+				nextEl: ".swiper-button-next",
+				prevEl: ".swiper-button-prev",
+			},
+		});
+	</script>
+</html>

+ 245 - 0
index2.html

@@ -0,0 +1,245 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<meta charset="utf-8">
+		<title>宇宙天使</title>
+		<link rel="stylesheet" href="./css/index.css">
+		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+		<meta http-equiv="X-UA-Compatible" content="ie=edge">
+		<link rel="stylesheet" href="./swiper/swiper-bundle.min.css">
+	</head>
+	<body>
+		<div>
+			<div class="top">
+				<div class="logo">
+					<img src="./img/logo.png" alt="">
+					<!-- <h2>Liberty City</h2> -->
+				</div>
+				<div class="nav">
+					<ul>
+						<li><a href="#home">首页</a></li>
+						<li><a href="#project">项目介绍</a></li>
+						<li><a href="#nft">NFT</a></li>
+						<li><a href="#model">经济模型</a></li>
+						<li><a href="#xianlu">路线图</a></li>
+						<li><a target="_blank" href="./pdf.html">白皮书</a></li>
+						<li><a  href="./index.html">EN</a></li>
+					</ul>
+				</div>
+				<div class="nav-tab">
+					<img id="zk" src="./img/menu.png" alt="">
+				</div>
+				<div class="nav-list">
+				 <div class="top">
+				 	<span id="cols">X</span>
+				 </div>
+				 <ul>
+				 	<li><a href="#home">首页</a></li>
+				 	<li><a href="#project">项目介绍</a></li>
+				 	<li><a href="#nft">NFT</a></li>
+				 	<li><a href="#model">经济模型</a></li>
+				 	<li><a href="#xianlu">路线图</a></li>
+				 	<li><a target="_blank" href="./pdf.html">白皮书</a></li>
+					<li><a  href="./index.html">EN</a></li>
+				 </ul>
+				</div>
+			</div>
+			<div class="banner_content  cont" id="home">
+				<div class="banner_logo">
+					<div  class="logo2">
+						<img src="./img/33.png" alt="">
+					</div>
+				</div>
+				<h2>元宇宙生态价值传递的链接者</h2>
+				<p>将主流应用与资产带入整个CosmicAngel生态,帮助众多优质资产走进其他区块链网络进,<br>
+				使整个加密数字资产市场回归本源,实现不同区块链链上资产的自由流动、交互和聚合,<br>
+				并赋能实体产业发展</p>
+			</div>
+			<div>
+				<img class="bg1" src="./img/74.png" alt="">	
+			</div>
+			<video type="video/mp4" autoplay="autoplay" muted loop="loop" style="width: 100%;" id="void">
+			<!-- 	<source src="./void/banner.mp4" type="video/ogg" / id="mp4"> -->
+			</video>
+	<!-- 		<audio autoplay="autoplay" id="audio" loop="loop">
+				<source src="./void/13.mp3" type="audio/MP3">
+			</audio> -->
+			<div class="bg"></div>
+			<!-- <div class="pay">是否播放背景音乐?
+				<br>
+				<span class="pays">是</span><span class="off">否</span>
+			</div> -->
+			<div class="project cont" id="project">
+				<img class="bg1" src="./img/16.png" alt="">
+				<div class="project_content">
+					<h2>项目介绍</h2>
+					<h1>NEW WORLD IS COMING!</h1>
+					<p>
+						CosmicAngel宇宙天使是首个以元宇宙生态为主题的的超级聚合平台,并融入了Web3.0+DAO+GameFi+DeFi+NFT+Metaverse等概率元素。<br>
+						CosmicAngel为web3.0元宇宙生态打造集游戏、体育竞技、NFT收藏、DeFi聚合器、去中心化交易所等应用场景,<br>
+						打造无限扩展并尊重元宇宙新金融范式的真实生态愿景。<br>
+						并100%由其社区DAO运营来驱动发展和管理,以及拥有和自己的管理令牌CAGL的用户将能够做出决策。<br>
+					</p>
+					<p>
+						CosmicAngel还将借助元宇宙的流量效应和财富效应推动人类文明完成从物质世界到数字世界的维度跃迁,<br>
+						缔造一个强IP的去中心化元宇宙聚合生态,致力于创造人人皆可以参与的轻量、开放、自由的元宇宙超级聚合生态,<br>
+						满足用户在元宇宙世界全方位的金融投资与生产生活需求,成为所有元宇宙生态应用服务的首选。<br>
+					</p>
+				</div>
+			</div>
+			<div class="car cont" id="nft">
+				<img class="bg1" src="./img/4.png" alt="">
+				<div class="car_content">
+					<h1>NFT 勋章</h1>
+					<!-- Swiper -->
+					<div class="swiper mySwiper">
+						<div class="swiper-wrapper">
+							<div class="swiper-slide">
+								<img src="./img/34.png" alt="">
+							</div>
+							<div class="swiper-slide">
+								<img src="./img/35.png" alt="">
+							</div>
+							<div class="swiper-slide">
+								<img src="./img/36.png" alt="">
+							</div>
+							<div class="swiper-slide">
+								<img src="./img/37.png" alt="">
+							</div>
+						</div>
+					</div>
+					<div class="swiper-button-next"><img src="./img/r.png" alt=""></div>
+					<div class="swiper-button-prev"><img src="./img/l.png" alt=""> </div>
+				</div>
+			</div>
+			<video type="video/mp4"  style="width: 100%; height: 100%; "  poster="./img/4.jpg" id="void" controls>
+				<source src="./void/banner.mp4" type="video/ogg" / id="mp4">
+			</video>
+			<div class="model cont" id="model">
+				<img class="bg1" src="./img/42.png" alt="">
+				<div class="model_content">
+					<h1>经济模型</h1>
+					<img src="./img/9.png" alt="">
+					<div class="content">
+						<p>
+							CAGL发行总量:270,000,000 枚<br>
+							首次发行方式:IDO(流动性挖矿)<br>
+						</p>
+						<p>
+							CAGL代币分配:<br>
+							30%~社区用于前期流动性(多余销毁)<br>
+							70%~矿池IDO产出/NFT勋章算力产出/LP挖矿产出<br>
+						</p>
+					</div>
+					<div class="cs">
+						<ul>
+							<li><span></span>70%- 挖矿产出</li>
+							<li class="li"><span></span>30%- 初始流动性</li>
+						</ul>
+					</div>
+				</div>
+			</div>
+			<!-- 线路图 -->
+			<div id="xianlu" class="cont">
+				<img class="bg1" src="./img/20.png" alt="">
+				<div class="Liberty2">路线图</div>
+				<div class="container">
+					<div class="left">
+						<div class="tow">
+							 <h2>2021年</h2>
+							<p>	2021.10  构建系统架构,开发CosmicAngel生态系统</p>
+						</div>
+						<div class="four">
+							 <h2>2023年</h2>
+							 <p>2023.01  CAGL代币将上线全球知名中心交易所<br>
+							 2023.02  聚合外部不同类型的合作伙伴
+							 2023.04  CosmicAngel2.0版本正式上线,对全球用户开放使用<br>
+							 2023.08  迭代3.0版本,全面生态更新与开放,实现盈利</p>
+						</div>
+					</div>
+					<div class="hx">
+						<span class="y"></span>
+						<span class="x"></span>
+						<span class="y"></span>
+						<span class="x"></span>
+						<span class="y"></span>
+						<span class="x"></span>
+					</div>
+					<div class="right">
+						<div class="five">
+						 <h2>2022年</h2>
+						<p>2022.01  产品生态合作伙伴建立<br>
+							2022.03  CosmicAngel系统1.0版开始内测<br>
+							2022.06  新模式及玩法研发升级<br>
+							2022.08  CAGL代币将上线全球知名DEX<br>
+							2022.10  上线CoinmarketCap<br>
+							2022.11  开启生态公测,用户将可以体验元宇宙场景<br>
+							2022.11  完成核心社区建设,实现社区用户突破100万人2022.12  游戏部署上线<br>
+							</p>
+						</div>
+					</div>
+				</div>
+
+			</div>
+			<div class="footer">
+				<a target="_blank" href="https://ss.transgot.cn/libertycitydao"> <img src="./img/12.png" alt=""></a>
+				<a target="_blank" href="https://discord.gg"><img src="./img/13.png" alt=""></a>
+				<a target="_blank" href="https://twitter.com/dao_libertycity"><img src="./img/14.png" alt=""></a>
+			</div>
+		</div>
+	</body>
+	<script src="./swiper/swiper-bundle.min.js"></script>
+	<script src="./js/jquery.min.js"></script>
+	<script>
+		let w=$(window).width();
+		let h=$(window).height();
+		console.log(w)
+		if(w<766){
+			$('#void').css('display','none')
+			$('.bg').css('width',w,'display','line-break')
+		}
+		if(w>1024){
+			console.log(w,2)
+		  $('.cont').css('height',h+30+"px")
+		  $('.bg1').css('height',h+30+"px")
+		}
+		
+		$('.nav-tab').on('click',function(){
+			 $('#zk').css('display','none')
+			 $('.nav-list').css('margin-left','-300px')
+		})
+		
+		$('#cols').on('click',function(){
+			 $('#zk').css('display','inline-block')
+			 $('.nav-list').css('margin-left','-700px')
+		})
+		
+		$(function() {
+			let music = $("#audio")[0];
+			$('.off').click('on', function() {
+				$('.pay').css('display', 'none')
+			})
+			$('.pays').click('on', function() {
+
+				if (music.paused) { //判读是否播放  
+					music.paused = false;
+					music.play(); //没有就播放
+					$('.pay').css('display', 'none')
+					console.log(music)
+				}
+
+			})
+
+		})
+	</script>
+	<script>
+		var swiper = new Swiper(".mySwiper", {
+			slidesPerView: 3,
+			spaceBetween: 30,
+			navigation: {
+				nextEl: ".swiper-button-next",
+				prevEl: ".swiper-button-prev",
+			},
+		});
+	</script>
+</html>

+ 511 - 0
js/jquery.media.js

@@ -0,0 +1,511 @@
+/*
+ * jQuery Media Plugin for converting elements into rich media content.
+ *
+ * Examples and documentation at: http://malsup.com/jquery/media/
+ * Copyright (c) 2007-2010 M. Alsup
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * @author: M. Alsup
+ * @version: 0.99 (05-JUN-2013)
+ * @requires jQuery v1.1.2 or later
+ * $Id: jquery.media.js 2460 2007-07-23 02:53:15Z malsup $
+ *
+ * Supported Media Players:
+ *	- Flash
+ *	- Quicktime
+ *	- Real Player
+ *	- Silverlight
+ *	- Windows Media Player
+ *	- iframe
+ *
+ * Supported Media Formats:
+ *	 Any types supported by the above players, such as:
+ *	 Video: asf, avi, flv, mov, mpg, mpeg, mp4, qt, smil, swf, wmv, 3g2, 3gp
+ *	 Audio: aif, aac, au, gsm, mid, midi, mov, mp3, m4a, snd, rm, wav, wma
+ *	 Other: bmp, html, pdf, psd, qif, qtif, qti, tif, tiff, xaml
+ *
+ * Thanks to Mark Hicken and Brent Pedersen for helping me debug this on the Mac!
+ * Thanks to Dan Rossi for numerous bug reports and code bits!
+ * Thanks to Skye Giordano for several great suggestions!
+ * Thanks to Richard Connamacher for excellent improvements to the non-IE behavior!
+ */
+/*global SWFObject alert Sys */
+/*jshint forin:false */
+;(function($) {
+"use strict";	
+
+var mode = document.documentMode || 0;
+var msie = /MSIE/.test(navigator.userAgent);
+var lameIE = msie && (/MSIE (6|7|8)\.0/.test(navigator.userAgent) || mode < 9);
+
+/**
+ * Chainable method for converting elements into rich media.
+ *
+ * @param options
+ * @param callback fn invoked for each matched element before conversion
+ * @param callback fn invoked for each matched element after conversion
+ */
+$.fn.media = function(options, f1, f2) {
+	if (options == 'undo') {
+		return this.each(function() {
+			var $this = $(this);
+			var html = $this.data('media.origHTML');
+			if (html)
+				$this.replaceWith(html);
+		});
+	}
+	
+	return this.each(function() {
+		if (typeof options == 'function') {
+			f2 = f1;
+			f1 = options;
+			options = {};
+		}
+		var o = getSettings(this, options);
+		// pre-conversion callback, passes original element and fully populated options
+		if (typeof f1 == 'function') f1(this, o);
+
+		var r = getTypesRegExp();
+		var m = r.exec(o.src.toLowerCase()) || [''];
+		var fn;
+
+		if (o.type)
+			m[0] = o.type;
+		else
+			m.shift();
+
+		for (var i=0; i < m.length; i++) {
+			fn = m[i].toLowerCase();
+			if (isDigit(fn[0])) fn = 'fn' + fn; // fns can't begin with numbers
+			if (!$.fn.media[fn])
+				continue;  // unrecognized media type
+			// normalize autoplay settings
+			var player = $.fn.media[fn+'_player'];
+			if (!o.params) o.params = {};
+			if (player) {
+				var num = player.autoplayAttr == 'autostart';
+				o.params[player.autoplayAttr || 'autoplay'] = num ? (o.autoplay ? 1 : 0) : o.autoplay ? true : false;
+			}
+			var $div = $.fn.media[fn](this, o);
+
+			$div.css('backgroundColor', o.bgColor).width(o.width);
+			
+			if (o.canUndo) {
+				var $temp = $('<div></div>').append(this);
+				$div.data('media.origHTML', $temp.html()); // store original markup
+			}
+			
+			// post-conversion callback, passes original element, new div element and fully populated options
+			if (typeof f2 == 'function') f2(this, $div[0], o, player.name);
+			break;
+		}
+	});
+};
+
+/**
+ * Non-chainable method for adding or changing file format / player mapping
+ * @name mapFormat
+ * @param String format File format extension (ie: mov, wav, mp3)
+ * @param String player Player name to use for the format (one of: flash, quicktime, realplayer, winmedia, silverlight or iframe
+ */
+$.fn.media.mapFormat = function(format, player) {
+	if (!format || !player || !$.fn.media.defaults.players[player]) return; // invalid
+	format = format.toLowerCase();
+	if (isDigit(format[0])) format = 'fn' + format;
+	$.fn.media[format] = $.fn.media[player];
+	$.fn.media[format+'_player'] = $.fn.media.defaults.players[player];
+};
+
+// global defautls; override as needed
+$.fn.media.defaults = {
+	standards:  true,       // use object tags only (no embeds for non-IE browsers)
+	canUndo:    true,       // tells plugin to store the original markup so it can be reverted via: $(sel).mediaUndo()
+	width:		400,
+	height:		400,
+	autoplay:	0,			// normalized cross-player setting
+	bgColor:	'#ffffff',	// background color
+	params:		{ wmode: 'transparent'},	// added to object element as param elements; added to embed element as attrs
+	attrs:		{},			// added to object and embed elements as attrs
+	flvKeyName: 'file',		// key used for object src param (thanks to Andrea Ercolino)
+	flashvars:	{},			// added to flash content as flashvars param/attr
+	flashVersion:	'7',	// required flash version
+	expressInstaller: null,	// src for express installer
+
+	// default flash video and mp3 player (@see: http://jeroenwijering.com/?item=Flash_Media_Player)
+	flvPlayer:	 'mediaplayer.swf',
+	mp3Player:	 'mediaplayer.swf',
+
+	// @see http://msdn2.microsoft.com/en-us/library/bb412401.aspx
+	silverlight: {
+		inplaceInstallPrompt: 'true', // display in-place install prompt?
+		isWindowless:		  'true', // windowless mode (false for wrapping markup)
+		framerate:			  '24',	  // maximum framerate
+		version:			  '0.9',  // Silverlight version
+		onError:			  null,	  // onError callback
+		onLoad:			      null,   // onLoad callback
+		initParams:			  null,	  // object init params
+		userContext:		  null	  // callback arg passed to the load callback
+	}
+};
+
+// Media Players; think twice before overriding
+$.fn.media.defaults.players = {
+	flash: {
+		name:		 'flash',
+		title:		 'Flash',
+		types:		 'flv,mp3,swf',
+		mimetype:	 'application/x-shockwave-flash',
+		pluginspage: 'http://www.adobe.com/go/getflashplayer',
+		ieAttrs: {
+			classid:  'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
+			type:	  'application/x-oleobject',
+			codebase: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + $.fn.media.defaults.flashVersion
+		}
+	},
+	quicktime: {
+		name:		 'quicktime',
+		title:		 'QuickTime',
+		mimetype:	 'video/quicktime',
+		pluginspage: 'http://www.apple.com/quicktime/download/',
+		types:		 'aif,aiff,aac,au,bmp,gsm,mov,mid,midi,mpg,mpeg,mp4,m4a,psd,qt,qtif,qif,qti,snd,tif,tiff,wav,3g2,3gp',
+		ieAttrs: {
+			classid:  'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+			codebase: 'http://www.apple.com/qtactivex/qtplugin.cab'
+		}
+	},
+	realplayer: {
+		name:		  'real',
+		title:		  'RealPlayer',
+		types:		  'ra,ram,rm,rpm,rv,smi,smil',
+		mimetype:	  'audio/x-pn-realaudio-plugin',
+		pluginspage:  'http://www.real.com/player/',
+		autoplayAttr: 'autostart',
+		ieAttrs: {
+			classid: 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'
+		}
+	},
+	winmedia: {
+		name:		  'winmedia',
+		title:		  'Windows Media',
+		types:		  'asx,asf,avi,wma,wmv',
+		mimetype:	  isFirefoxWMPPluginInstalled() ? 'application/x-ms-wmp' : 'application/x-mplayer2',
+		pluginspage:  'http://www.microsoft.com/Windows/MediaPlayer/',
+		autoplayAttr: 'autostart',
+		oUrl:		  'url',
+		ieAttrs: {
+			classid:  'clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6',
+			type:	  'application/x-oleobject'
+		}
+	},
+	// special cases
+	img: {
+		name:  'img',
+		title: 'Image',
+		types: 'gif,png,jpg'
+	},
+	iframe: {
+		name:  'iframe',
+		types: 'html,pdf'
+	},
+	silverlight: {
+		name:  'silverlight',
+		types: 'xaml'
+	}
+};
+
+//
+//	everything below here is private
+//
+
+
+// detection script for FF WMP plugin (http://www.therossman.org/experiments/wmp_play.html)
+// (hat tip to Mark Ross for this script)
+function isFirefoxWMPPluginInstalled() {
+	var plugs = navigator.plugins || [];
+	for (var i = 0; i < plugs.length; i++) {
+		var plugin = plugs[i];
+		if (plugin['filename'] == 'np-mswmp.dll')
+			return true;
+	}
+	return false;
+}
+
+var counter = 1;
+
+for (var player in $.fn.media.defaults.players) {
+	var types = $.fn.media.defaults.players[player].types;
+	$.each(types.split(','), function(i,o) {
+		if (isDigit(o[0])) o = 'fn' + o;
+		$.fn.media[o] = $.fn.media[player] = getGenerator(player);
+		$.fn.media[o+'_player'] = $.fn.media.defaults.players[player];
+	});
+}
+
+function getTypesRegExp() {
+	var types = '';
+	for (var player in $.fn.media.defaults.players) {
+		if (types.length) types += ',';
+		types += $.fn.media.defaults.players[player].types;
+	}
+	return new RegExp('\\.(' + types.replace(/,/ig,'|') + ')\\b');
+}
+
+function getGenerator(player) {
+	return function(el, options) {
+		return generate(el, options, player);
+	};
+}
+
+function isDigit(c) {
+	return '0123456789'.indexOf(c) > -1;
+}
+
+// flatten all possible options: global defaults, meta, option obj
+function getSettings(el, options) {
+	options = options || {};
+	var a, n;
+	var $el = $(el);
+	var cls = el.className || '';
+	// support metadata plugin (v1.0 and v2.0)
+	var meta = $.metadata ? $el.metadata() : $.meta ? $el.data() : {};
+	meta = meta || {};
+	var w = meta.width  || parseInt(((cls.match(/\bw:(\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\bwidth:(\d+)/)||[])[1]||0),10);
+	var h = meta.height || parseInt(((cls.match(/\bh:(\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\bheight:(\d+)/)||[])[1]||0),10);
+
+	if (w) meta.width = w;
+	if (h) meta.height = h;
+	if (cls) meta.cls = cls;
+	
+	// crank html5 style data attributes
+	var dataName = 'data-';
+    for (var i=0; i < el.attributes.length; i++) {
+        a = el.attributes[i], n = $.trim(a.name);
+        var index = n.indexOf(dataName);
+        if (index === 0) {
+			n = n.substring(dataName.length);
+			meta[n] = a.value;
+        }
+    }
+
+	a = $.fn.media.defaults;
+	var b = options;
+	var c = meta;
+
+	var p = { params: { bgColor: options.bgColor || $.fn.media.defaults.bgColor } };
+	var opts = $.extend({}, a, b, c);
+	$.each(['attrs','params','flashvars','silverlight'], function(i,o) {
+		opts[o] = $.extend({}, p[o] || {}, a[o] || {}, b[o] || {}, c[o] || {});
+	});
+
+	if (typeof opts.caption == 'undefined') opts.caption = $el.text();
+
+	// make sure we have a source!
+	opts.src = opts.src || $el.attr('href') || $el.attr('src') || 'unknown';
+	return opts;
+}
+
+//
+//	Flash Player
+//
+
+// generate flash using SWFObject library if possible
+$.fn.media.swf = function(el, opts) {
+	var f, p;
+	if (!window.SWFObject && !window.swfobject) {
+		// roll our own
+		if (opts.flashvars) {
+			var a = [];
+			for (f in opts.flashvars)
+				a.push(f + '=' + opts.flashvars[f]);
+			if (!opts.params) opts.params = {};
+			opts.params.flashvars = a.join('&');
+		}
+		return generate(el, opts, 'flash');
+	}
+
+	var id = el.id ? (' id="'+el.id+'"') : '';
+	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
+	var $div = $('<div' + id + cls + '>');
+
+	// swfobject v2+
+	if (window.swfobject) {
+		$(el).after($div).appendTo($div);
+		if (!el.id) el.id = 'movie_player_' + counter++;
+
+		// replace el with swfobject content
+		window.swfobject.embedSWF(opts.src, el.id, opts.width, opts.height, opts.flashVersion,
+			opts.expressInstaller, opts.flashvars, opts.params, opts.attrs);
+	}
+	// swfobject < v2
+	else {
+		$(el).after($div).remove();
+		var so = new SWFObject(opts.src, 'movie_player_' + counter++, opts.width, opts.height, opts.flashVersion, opts.bgColor);
+		if (opts.expressInstaller) so.useExpressInstall(opts.expressInstaller);
+
+		for (p in opts.params)
+			if (p != 'bgColor') so.addParam(p, opts.params[p]);
+		for (f in opts.flashvars)
+			so.addVariable(f, opts.flashvars[f]);
+		so.write($div[0]);
+	}
+
+	if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
+	return $div;
+};
+
+// map flv and mp3 files to the swf player by default
+$.fn.media.flv = $.fn.media.mp3 = function(el, opts) {
+	var src = opts.src;
+	var player = /\.mp3\b/i.test(src) ? opts.mp3Player : opts.flvPlayer;
+	var key = opts.flvKeyName;
+	src = encodeURIComponent(src);
+	opts.src = player;
+	opts.src = opts.src + '?'+key+'=' + (src);
+	var srcObj = {};
+	srcObj[key] = src;
+	opts.flashvars = $.extend({}, srcObj, opts.flashvars );
+	return $.fn.media.swf(el, opts);
+};
+
+//
+//	Silverlight
+//
+$.fn.media.xaml = function(el, opts) {
+	if (!window.Sys || !window.Sys.Silverlight) {
+		if ($.fn.media.xaml.warning) return;
+		$.fn.media.xaml.warning = 1;
+		alert('You must include the Silverlight.js script.');
+		return;
+	}
+
+	var props = {
+		width: opts.width,
+		height: opts.height,
+		background: opts.bgColor,
+		inplaceInstallPrompt: opts.silverlight.inplaceInstallPrompt,
+		isWindowless: opts.silverlight.isWindowless,
+		framerate: opts.silverlight.framerate,
+		version: opts.silverlight.version
+	};
+	var events = {
+		onError: opts.silverlight.onError,
+		onLoad: opts.silverlight.onLoad
+	};
+
+	var id1 = el.id ? (' id="'+el.id+'"') : '';
+	var id2 = opts.id || 'AG' + counter++;
+	// convert element to div
+	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
+	var $div = $('<div' + id1 + cls + '>');
+	$(el).after($div).remove();
+
+	Sys.Silverlight.createObjectEx({
+		source: opts.src,
+		initParams: opts.silverlight.initParams,
+		userContext: opts.silverlight.userContext,
+		id: id2,
+		parentElement: $div[0],
+		properties: props,
+		events: events
+	});
+
+	if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
+	return $div;
+};
+
+//
+// generate object/embed markup
+//
+function generate(el, opts, player) {
+	var $el = $(el);
+	var o = $.fn.media.defaults.players[player];
+	var a, key, v;
+
+	if (player == 'iframe') {
+		o = $('<iframe' + ' width="' + opts.width + '" height="' + opts.height + '" >');
+		o.attr('src', opts.src);
+		o.css('backgroundColor', o.bgColor);
+	}
+	else if (player == 'img') {
+		o = $('<img>');
+		o.attr('src', opts.src);
+		if (opts.width)
+			o.attr('width', opts.width);
+		if (opts.height)
+			o.attr('height', opts.height);
+		o.css('backgroundColor', o.bgColor);
+	}
+	else if (lameIE) {
+		a = ['<object width="' + opts.width + '" height="' + opts.height + '" '];
+		for (key in opts.attrs)
+			a.push(key + '="'+opts.attrs[key]+'" ');
+		for (key in o.ieAttrs || {}) {
+			v = o.ieAttrs[key];
+			if (key == 'codebase' && window.location.protocol == 'https:')
+				v = v.replace('http','https');
+			a.push(key + '="'+v+'" ');
+		}
+		a.push('></ob'+'ject'+'>');
+		var p = ['<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">'];
+		for (key in opts.params)
+			p.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
+		o = document.createElement(a.join(''));
+		for (var i=0; i < p.length; i++)
+			o.appendChild(document.createElement(p[i]));
+	}
+	else if (opts.standards) {
+		// Rewritten to be standards compliant by Richard Connamacher
+		a = ['<object type="' + o.mimetype +'" width="' + opts.width + '" height="' + opts.height +'"'];
+		if (opts.src) a.push(' data="' + opts.src + '" ');
+		if (msie) {
+			for (key in o.ieAttrs || {}) {
+				v = o.ieAttrs[key];
+				if (key == 'codebase' && window.location.protocol == 'https:')
+					v = v.replace('http','https');
+				a.push(key + '="'+v+'" ');
+			}
+		}
+		a.push('>');
+		a.push('<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">');
+		for (key in opts.params) {
+			if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
+				continue;
+			a.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
+		}
+		// Alternate HTML
+		a.push('<div><p><strong>'+o.title+' Required</strong></p><p>'+o.title+' is required to view this media. <a href="'+o.pluginspage+'">Download Here</a>.</p></div>');
+		a.push('</ob'+'ject'+'>');
+	}
+	 else {
+	        a = ['<embed width="' + opts.width + '" height="' + opts.height + '" style="display:block"'];
+	        if (opts.src) a.push(' src="' + opts.src + '" ');
+	        for (key in opts.attrs)
+	            a.push(key + '="'+opts.attrs[key]+'" ');
+	        for (key in o.eAttrs || {})
+	            a.push(key + '="'+o.eAttrs[key]+'" ');
+	        for (key in opts.params) {
+	            if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
+					continue;
+	            a.push(key + '="'+opts.params[key]+'" ');
+	        }
+	        a.push('></em'+'bed'+'>');
+	    }	
+	// convert element to div
+	var id = el.id ? (' id="'+el.id+'"') : '';
+	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
+	var $div = $('<div' + id + cls + '>');
+	$el.after($div).remove();
+	if (lameIE || player == 'iframe' || player == 'img')
+		$div.append(o);
+	else
+		$div.html(a.join(''));
+	
+	if (opts.caption) 
+		$('<div>').appendTo($div).html(opts.caption);
+	return $div;
+}
+
+
+})(jQuery);

文件差異過大導致無法顯示
+ 1 - 0
js/jquery.min.js


+ 10 - 0
music.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>music</title>
+</head>
+<body>
+<audio src="./void/13.mp3" loop="loop" controls="controls" autoplay="autoplay"></audio>
+</body>
+</html>

+ 0 - 0
nginx.htaccess


+ 20 - 0
pdf.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>  
+<html>  
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>  
+<title>CAGL</title>  
+<script type="text/javascript" src="./js/jquery.min.js"></script>  
+<script type="text/javascript" src="./js/jquery.media.js"></script>  
+<script type="text/javascript">  
+    $(function() {  
+        $('a.media').media({width:1890, height:1080});  
+    });  
+</script> 
+ 
+</head>
+<body>
+<center>
+  <a class="media" href="book2.pdf"></a>  
+</center>
+</body>
+</html>

+ 20 - 0
swiper/LICENSE

@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2019 Vladimir Kharlampidi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 11 - 0
swiper/README.md

@@ -0,0 +1,11 @@
+Swiper
+==========
+
+Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps.
+
+Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity.
+
+# Getting Started
+  * [Getting Started Guide](https://swiperjs.com/get-started/)
+  * [API](https://swiperjs.com/swiper-api/)
+  * [Demos](https://swiperjs.com/demos/)

+ 4 - 0
swiper/angular/angular/src/public-api.d.ts

@@ -0,0 +1,4 @@
+export * from './swiper-events';
+export * from './swiper.module';
+export * from './swiper.component';
+export * from './swiper-slide.directive';

+ 4 - 0
swiper/angular/angular/src/swiper-events.d.ts

@@ -0,0 +1,4 @@
+import { SwiperEvents } from 'swiper/types';
+export declare type EventsParams<T = SwiperEvents> = {
+    [P in keyof T]: T[P] extends (...args: any[]) => any ? Parameters<T[P]> : never;
+};

+ 26 - 0
swiper/angular/angular/src/swiper-slide.directive.d.ts

@@ -0,0 +1,26 @@
+import { TemplateRef } from '@angular/core';
+import * as i0 from "@angular/core";
+export declare class SwiperSlideDirective {
+    template: TemplateRef<any>;
+    virtualIndex: number;
+    class: string;
+    autoplayDelay: string | null;
+    set zoom(val: boolean);
+    get zoom(): boolean;
+    private _zoom;
+    slideIndex: number;
+    get classNames(): string;
+    set classNames(val: string);
+    private _hasClass;
+    slideData: {
+        isActive: boolean;
+        isPrev: boolean;
+        isNext: boolean;
+        isVisible: boolean;
+        isDuplicate: boolean;
+    };
+    private _classNames;
+    constructor(template: TemplateRef<any>);
+    static ɵfac: i0.ɵɵFactoryDeclaration<SwiperSlideDirective, never>;
+    static ɵdir: i0.ɵɵDirectiveDeclaration<SwiperSlideDirective, "ng-template[swiperSlide]", never, { "virtualIndex": "virtualIndex"; "class": "class"; "autoplayDelay": "data-swiper-autoplay"; "zoom": "zoom"; }, {}, never>;
+}

文件差異過大導致無法顯示
+ 251 - 0
swiper/angular/angular/src/swiper.component.d.ts


+ 9 - 0
swiper/angular/angular/src/swiper.module.d.ts

@@ -0,0 +1,9 @@
+import * as i0 from "@angular/core";
+import * as i1 from "./swiper.component";
+import * as i2 from "./swiper-slide.directive";
+import * as i3 from "@angular/common";
+export declare class SwiperModule {
+    static ɵfac: i0.ɵɵFactoryDeclaration<SwiperModule, never>;
+    static ɵmod: i0.ɵɵNgModuleDeclaration<SwiperModule, [typeof i1.SwiperComponent, typeof i2.SwiperSlideDirective], [typeof i3.CommonModule], [typeof i1.SwiperComponent, typeof i2.SwiperSlideDirective]>;
+    static ɵinj: i0.ɵɵInjectorDeclaration<SwiperModule>;
+}

+ 10 - 0
swiper/angular/angular/src/utils/get-params.d.ts

@@ -0,0 +1,10 @@
+declare type KeyValueType = {
+    [x: string]: any;
+};
+export declare const allowedParams: string[];
+export declare function getParams(obj?: any): {
+    params: any;
+    passedParams: KeyValueType;
+    rest: KeyValueType;
+};
+export {};

+ 1 - 0
swiper/angular/angular/src/utils/params-list.d.ts

@@ -0,0 +1 @@
+export declare const paramsList: string[];

+ 9 - 0
swiper/angular/angular/src/utils/utils.d.ts

@@ -0,0 +1,9 @@
+export declare function isObject(o: any): boolean;
+export declare function isEnabled(val: boolean | {
+    enabled?: boolean;
+}): boolean;
+export declare function isShowEl(val: any, obj: any, el: any): boolean;
+export declare function extend(target: any, src: any): void;
+export declare function coerceBooleanProperty(value: any): boolean;
+export declare const ignoreNgOnChanges: string[];
+export declare function setProperty(val: any, obj?: {}): {} | false;

+ 8 - 0
swiper/angular/esm2020/angular/src/public-api.mjs

@@ -0,0 +1,8 @@
+/*
+ * Public API Surface of angular
+ */
+export * from './swiper-events';
+export * from './swiper.module';
+export * from './swiper.component';
+export * from './swiper-slide.directive';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYW5ndWxhclxuICovXG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zd2lwZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3dpcGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1zbGlkZS5kaXJlY3RpdmUnO1xuIl19

+ 2 - 0
swiper/angular/esm2020/angular/src/swiper-events.mjs

@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXItZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTd2lwZXJFdmVudHMgfSBmcm9tICdzd2lwZXIvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBFdmVudHNQYXJhbXM8VCA9IFN3aXBlckV2ZW50cz4gPSB7XG4gIFtQIGluIGtleW9mIFRdOiBUW1BdIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkgPyBQYXJhbWV0ZXJzPFRbUF0+IDogbmV2ZXI7XG59O1xuIl19

文件差異過大導致無法顯示
+ 59 - 0
swiper/angular/esm2020/angular/src/swiper-slide.directive.mjs


文件差異過大導致無法顯示
+ 514 - 0
swiper/angular/esm2020/angular/src/swiper.component.mjs


+ 19 - 0
swiper/angular/esm2020/angular/src/swiper.module.mjs

@@ -0,0 +1,19 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { SwiperComponent } from './swiper.component';
+import { SwiperSlideDirective } from './swiper-slide.directive';
+import * as i0 from "@angular/core";
+export class SwiperModule {
+}
+SwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
+SwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] });
+SwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] });
+i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: SwiperModule, decorators: [{
+            type: NgModule,
+            args: [{
+                    declarations: [SwiperComponent, SwiperSlideDirective],
+                    exports: [SwiperComponent, SwiperSlideDirective],
+                    imports: [CommonModule],
+                }]
+        }] });
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyL3NyYy9zd2lwZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxpQkFKUixlQUFlLEVBQUUsb0JBQW9CLGFBRTFDLFlBQVksYUFEWixlQUFlLEVBQUUsb0JBQW9COzBHQUdwQyxZQUFZLFlBRmQsQ0FBQyxZQUFZLENBQUM7MkZBRVosWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3dpcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zd2lwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXBlclNsaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9zd2lwZXItc2xpZGUuZGlyZWN0aXZlJztcbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1N3aXBlckNvbXBvbmVudCwgU3dpcGVyU2xpZGVEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbU3dpcGVyQ29tcG9uZW50LCBTd2lwZXJTbGlkZURpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTd2lwZXJNb2R1bGUge31cbiJdfQ==

文件差異過大導致無法顯示
+ 46 - 0
swiper/angular/esm2020/angular/src/utils/get-params.mjs


文件差異過大導致無法顯示
+ 117 - 0
swiper/angular/esm2020/angular/src/utils/params-list.mjs


文件差異過大導致無法顯示
+ 51 - 0
swiper/angular/esm2020/angular/src/utils/utils.mjs


+ 2 - 0
swiper/angular/esm2020/swiper-angular.mjs

@@ -0,0 +1,2 @@
+export * from './angular/src/public-api';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5ndWxhci9zcmMvcHVibGljLWFwaSc7XG4iXX0=

+ 5 - 0
swiper/angular/esm2020/swiper_angular.mjs

@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+export * from './swiper-angular';
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGVyX2FuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3dpcGVyX2FuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3N3aXBlci1hbmd1bGFyJztcbiJdfQ==

文件差異過大導致無法顯示
+ 786 - 0
swiper/angular/fesm2015/swiper_angular.mjs


文件差異過大導致無法顯示
+ 0 - 0
swiper/angular/fesm2015/swiper_angular.mjs.map


文件差異過大導致無法顯示
+ 781 - 0
swiper/angular/fesm2020/swiper_angular.mjs


文件差異過大導致無法顯示
+ 0 - 0
swiper/angular/fesm2020/swiper_angular.mjs.map


+ 32 - 0
swiper/angular/package.json

@@ -0,0 +1,32 @@
+{
+  "name": "swiper_angular",
+  "version": "0.0.1",
+  "private": "true",
+  "peerDependencies": {
+    "@angular/common": "^12.2.0",
+    "@angular/core": "^12.2.0"
+  },
+  "dependencies": {
+    "tslib": "^2.3.0"
+  },
+  "module": "fesm2015/swiper_angular.mjs",
+  "es2020": "fesm2020/swiper_angular.mjs",
+  "esm2020": "esm2020/swiper_angular.mjs",
+  "fesm2020": "fesm2020/swiper_angular.mjs",
+  "fesm2015": "fesm2015/swiper_angular.mjs",
+  "typings": "swiper_angular.d.ts",
+  "exports": {
+    "./package.json": {
+      "default": "./package.json"
+    },
+    ".": {
+      "types": "./swiper_angular.d.ts",
+      "esm2020": "./esm2020/swiper_angular.mjs",
+      "es2020": "./fesm2020/swiper_angular.mjs",
+      "es2015": "./fesm2015/swiper_angular.mjs",
+      "node": "./fesm2015/swiper_angular.mjs",
+      "default": "./fesm2020/swiper_angular.mjs"
+    }
+  },
+  "sideEffects": false
+}

+ 1 - 0
swiper/angular/swiper-angular.d.ts

@@ -0,0 +1 @@
+export * from './angular/src/public-api';

+ 5 - 0
swiper/angular/swiper_angular.d.ts

@@ -0,0 +1,5 @@
+/**
+ * Generated bundle index. Do not edit.
+ */
+/// <amd-module name="swiper_angular" />
+export * from './swiper-angular';

+ 44 - 0
swiper/core/breakpoints/getBreakpoint.js

@@ -0,0 +1,44 @@
+import { getWindow } from 'ssr-window';
+export default function getBreakpoint(breakpoints, base, containerEl) {
+  if (base === void 0) {
+    base = 'window';
+  }
+
+  if (!breakpoints || base === 'container' && !containerEl) return undefined;
+  let breakpoint = false;
+  const window = getWindow();
+  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
+  const points = Object.keys(breakpoints).map(point => {
+    if (typeof point === 'string' && point.indexOf('@') === 0) {
+      const minRatio = parseFloat(point.substr(1));
+      const value = currentHeight * minRatio;
+      return {
+        value,
+        point
+      };
+    }
+
+    return {
+      value: point,
+      point
+    };
+  });
+  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
+
+  for (let i = 0; i < points.length; i += 1) {
+    const {
+      point,
+      value
+    } = points[i];
+
+    if (base === 'window') {
+      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
+        breakpoint = point;
+      }
+    } else if (value <= containerEl.clientWidth) {
+      breakpoint = point;
+    }
+  }
+
+  return breakpoint || 'max';
+}

+ 6 - 0
swiper/core/breakpoints/index.js

@@ -0,0 +1,6 @@
+import setBreakpoint from './setBreakpoint.js';
+import getBreakpoint from './getBreakpoint.js';
+export default {
+  setBreakpoint,
+  getBreakpoint
+};

+ 72 - 0
swiper/core/breakpoints/setBreakpoint.js

@@ -0,0 +1,72 @@
+import { extend } from '../../shared/utils.js';
+
+const isGridEnabled = (swiper, params) => {
+  return swiper.grid && params.grid && params.grid.rows > 1;
+};
+
+export default function setBreakpoint() {
+  const swiper = this;
+  const {
+    activeIndex,
+    initialized,
+    loopedSlides = 0,
+    params,
+    $el
+  } = swiper;
+  const breakpoints = params.breakpoints;
+  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
+
+  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
+  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
+  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
+  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
+  const wasMultiRow = isGridEnabled(swiper, params);
+  const isMultiRow = isGridEnabled(swiper, breakpointParams);
+  const wasEnabled = params.enabled;
+
+  if (wasMultiRow && !isMultiRow) {
+    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);
+    swiper.emitContainerClasses();
+  } else if (!wasMultiRow && isMultiRow) {
+    $el.addClass(`${params.containerModifierClass}grid`);
+
+    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
+      $el.addClass(`${params.containerModifierClass}grid-column`);
+    }
+
+    swiper.emitContainerClasses();
+  }
+
+  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
+  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
+
+  if (directionChanged && initialized) {
+    swiper.changeDirection();
+  }
+
+  extend(swiper.params, breakpointParams);
+  const isEnabled = swiper.params.enabled;
+  Object.assign(swiper, {
+    allowTouchMove: swiper.params.allowTouchMove,
+    allowSlideNext: swiper.params.allowSlideNext,
+    allowSlidePrev: swiper.params.allowSlidePrev
+  });
+
+  if (wasEnabled && !isEnabled) {
+    swiper.disable();
+  } else if (!wasEnabled && isEnabled) {
+    swiper.enable();
+  }
+
+  swiper.currentBreakpoint = breakpoint;
+  swiper.emit('_beforeBreakpoint', breakpointParams);
+
+  if (needsReLoop && initialized) {
+    swiper.loopDestroy();
+    swiper.loopCreate();
+    swiper.updateSlides();
+    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
+  }
+
+  swiper.emit('breakpoint', breakpointParams);
+}

+ 38 - 0
swiper/core/check-overflow/index.js

@@ -0,0 +1,38 @@
+function checkOverflow() {
+  const swiper = this;
+  const {
+    isLocked: wasLocked,
+    params
+  } = swiper;
+  const {
+    slidesOffsetBefore
+  } = params;
+
+  if (slidesOffsetBefore) {
+    const lastSlideIndex = swiper.slides.length - 1;
+    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
+    swiper.isLocked = swiper.size > lastSlideRightEdge;
+  } else {
+    swiper.isLocked = swiper.snapGrid.length === 1;
+  }
+
+  if (params.allowSlideNext === true) {
+    swiper.allowSlideNext = !swiper.isLocked;
+  }
+
+  if (params.allowSlidePrev === true) {
+    swiper.allowSlidePrev = !swiper.isLocked;
+  }
+
+  if (wasLocked && wasLocked !== swiper.isLocked) {
+    swiper.isEnd = false;
+  }
+
+  if (wasLocked !== swiper.isLocked) {
+    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
+  }
+}
+
+export default {
+  checkOverflow
+};

+ 52 - 0
swiper/core/classes/addClasses.js

@@ -0,0 +1,52 @@
+function prepareClasses(entries, prefix) {
+  const resultClasses = [];
+  entries.forEach(item => {
+    if (typeof item === 'object') {
+      Object.keys(item).forEach(classNames => {
+        if (item[classNames]) {
+          resultClasses.push(prefix + classNames);
+        }
+      });
+    } else if (typeof item === 'string') {
+      resultClasses.push(prefix + item);
+    }
+  });
+  return resultClasses;
+}
+
+export default function addClasses() {
+  const swiper = this;
+  const {
+    classNames,
+    params,
+    rtl,
+    $el,
+    device,
+    support
+  } = swiper; // prettier-ignore
+
+  const suffixes = prepareClasses(['initialized', params.direction, {
+    'pointer-events': !support.touch
+  }, {
+    'free-mode': swiper.params.freeMode && params.freeMode.enabled
+  }, {
+    'autoheight': params.autoHeight
+  }, {
+    'rtl': rtl
+  }, {
+    'grid': params.grid && params.grid.rows > 1
+  }, {
+    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
+  }, {
+    'android': device.android
+  }, {
+    'ios': device.ios
+  }, {
+    'css-mode': params.cssMode
+  }, {
+    'centered': params.cssMode && params.centeredSlides
+  }], params.containerModifierClass);
+  classNames.push(...suffixes);
+  $el.addClass([...classNames].join(' '));
+  swiper.emitContainerClasses();
+}

部分文件因文件數量過多而無法顯示