├── .gitignore ├── LICENSE ├── README.md ├── css └── sou.css ├── font_1230786_swt4kkie8ym ├── demo.css ├── demo_index.html ├── iconfont.css ├── iconfont.eot ├── iconfont.js ├── iconfont.svg ├── iconfont.ttf ├── iconfont.woff └── iconfont.woff2 ├── font_1614281 ├── demo.css ├── demo_index.html ├── iconfont.css ├── iconfont.eot ├── iconfont.js ├── iconfont.json ├── iconfont.svg ├── iconfont.ttf ├── iconfont.woff └── iconfont.woff2 ├── icon ├── Logo.ico ├── baidu.ico ├── bilibili.png ├── bing.ico ├── btn.svg ├── btn2.svg ├── doge_ico.png ├── g.svg ├── github.ico ├── google_1.png ├── mijisou.png ├── right.svg ├── scp.png ├── seeres.png ├── shlogo.png ├── steam.ico ├── user.png └── v2ex.png ├── index.html └── js ├── jQuery.rTabs.js ├── jquery-3.4.1.min.js ├── js.cookie.js └── sou.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | jquery-tabs20160103 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 yeetime 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Alone 导航 V2 2 | 3 | **原项目:** https://github.com/5iux/sou 4 | 5 | **修改版** 6 | - [**v1**](https://github.com/yeetime/sou2/tree/v1):使用其前端样式,重写部分代码,去除了不需要的模块。 7 | - **v2**:侧栏结构修改,使用 cookie 简单实现了部分数据的可视化编辑。 8 | 9 | ### 预览 10 | 11 | ![Alone 导航](https://cdn.jsdelivr.net/gh/yeetime/img/20200411182948.gif) 12 | 13 | ![Alone 导航](https://cdn.jsdelivr.net/gh/yeetime/img/20200627095800.gif) 14 | 15 | > (图片效果,以实际页面为准) 16 | 17 | ### 示例页面: 18 | 19 | + [https://yeetime.top/sou2/](https://yeetime.top/sou2/) 20 | 21 | ### 图标: 22 | 图标调用了阿里的图标 [https://www.iconfont.cn/](https://www.iconfont.cn/) 23 | -------------------------------------------------------------------------------- /css/sou.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | /* 4 | 作者:D.Young 5 | 主页:https://yyv.me/ 6 | github:https://github.com/5iux/sou 7 | 日期:2019-07-11 8 | 版权所有,请勿删除 9 | ❶❷❸❹❺❻❼❽❾❿ 10 | 由 yeetime 修改 11 | github:https://github.com/yeetime/sou2 12 | 日期:2019-12-13 13 | */ 14 | 15 | * { 16 | padding: 0; 17 | margin: 0; 18 | outline: none; 19 | -webkit-tap-highlight-color: transparent; 20 | } 21 | 22 | html, 23 | body { 24 | width: 100%; 25 | height: 100%; 26 | position: relative; 27 | overflow: hidden; 28 | /*加载背景图*/ 29 | background-image: none; 30 | /* 背景图垂直、水平均居中 */ 31 | background-position: center center; 32 | /* 背景图不平铺 */ 33 | background-repeat: no-repeat; 34 | /* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 此条属性必须设置否则可能无效 */ 35 | background-attachment: fixed; 36 | /* 让背景图基于容器大小伸缩 */ 37 | background-size: cover; 38 | /* 设置背景颜色,背景图加载过程中会显示背景色 */ 39 | background-color: #cccccc; 40 | } 41 | 42 | html { 43 | font-family: 'Noto Sans SC Sliced', PingFangSC-Light, Microsoft YaHei UI, Microsoft YaHei, helvetica, sans-serif; 44 | font-weight: 300; 45 | color: #000; 46 | } 47 | 48 | .search, 49 | .wd, 50 | .s { 51 | padding: 0; 52 | margin: 0; 53 | border: none; 54 | outline: none; 55 | background: none; 56 | } 57 | 58 | .wd::-webkit-input-placeholder { 59 | color: #ccc; 60 | letter-spacing: 2px; 61 | font-size: 16px; 62 | } 63 | 64 | ul, 65 | li { 66 | display: block; 67 | list-style: none; 68 | } 69 | 70 | a { 71 | text-decoration: none; 72 | color: inherit; 73 | font:inherit; 74 | } 75 | 76 | #content { 77 | width: 100%; 78 | height: 100%; 79 | } 80 | 81 | .con { 82 | width: 100%; 83 | transition: 1s all; 84 | margin: auto; 85 | min-width: 320px; 86 | height: 380px; 87 | position: absolute; 88 | left: 0; 89 | top: -100px; 90 | right: 0; 91 | bottom: 0; 92 | } 93 | 94 | .con .shlogo { 95 | position: relative; 96 | width: 480px; 97 | height: 120px; 98 | margin: 20px auto; 99 | background: url("../icon/shlogo.png") no-repeat center/cover; 100 | /*background: none no-repeat center/cover;*/ 101 | } 102 | 103 | .con .shlogo a { 104 | display: block; 105 | width: 100%; 106 | height: 100%; 107 | } 108 | 109 | .sou { 110 | max-width: 680px; 111 | height: 50px; 112 | } 113 | 114 | .con .sou { 115 | max-width: 680px; 116 | position: relative; 117 | width: calc(100% - 60px); 118 | min-width: 320px; 119 | margin: 0 auto; 120 | } 121 | 122 | .con .sou form { 123 | width: 100%; 124 | /*border: 1px solid #ddd;*/ 125 | height: 50px; 126 | display: block; 127 | margin: 10px auto 30px; 128 | position: relative; 129 | } 130 | 131 | .sou form .se { 132 | width: 40px; 133 | height: 40px; 134 | display: block; 135 | position: absolute; 136 | z-index: 10; 137 | left: 6px; 138 | top: 6px; 139 | cursor: pointer; 140 | font-size: 22px; 141 | line-height: 40px; 142 | border-radius: 50%; 143 | color: #777; 144 | } 145 | 146 | .sou form .se:hover { 147 | opacity: 0.7; 148 | filter:alpha(opacity=70); /* IE8 及其更早版本 */ 149 | -moz-opacity: 0.7; 150 | } 151 | 152 | .con .sou form .wd { 153 | width: 100%; 154 | height: 100%; 155 | display: block; 156 | border: 1px solid #ddd; 157 | border-radius: 25px; 158 | line-height: 100%; 159 | text-indent: 55px; 160 | font-size: 18px; 161 | } 162 | 163 | /*.con .sou form .wd:focus {*/ 164 | /* background: #fff;*/ 165 | /* box-shadow: 0 1px 6px 0 rgba(32, 33, 36, 0.28);*/ 166 | /* border-color: #fff*/ 167 | /*}*/ 168 | 169 | .sou form .s { 170 | width: 40px; 171 | height: 40px; 172 | display: block; 173 | position: absolute; 174 | z-index: 10; 175 | right: 6px; 176 | top: 6px; 177 | cursor: pointer; 178 | font-size: 22px; 179 | line-height: 40px; 180 | border-radius: 50%; 181 | color: #777; 182 | } 183 | 184 | #keywords { 185 | position: absolute; 186 | top: 60px; 187 | left: 0; 188 | width: 100%; 189 | background: #FFF; 190 | padding: 0 0; 191 | border-radius: 5px; 192 | box-shadow: 0 5px 20px 0 #d8d7d7; 193 | transition: all 0.3s; 194 | display: none; 195 | z-index: 999; 196 | box-sizing: border-box; 197 | max-height: 208px; 198 | overflow-x: hidden; 199 | } 200 | 201 | #keywords li { 202 | box-sizing: border-box; 203 | white-space: nowrap; 204 | overflow: hidden; 205 | text-overflow: ellipsis; 206 | cursor: pointer; 207 | line-height: 1.1; 208 | font-size: 1.1em; 209 | padding: 4px .681818em; 210 | margin: 0 auto; 211 | position: static; 212 | } 213 | 214 | .keyword-active { 215 | font-weight: bold; 216 | } 217 | 218 | .search-engine { 219 | position: absolute; 220 | top: 60px; 221 | left: 0; 222 | width: 100%; 223 | background: #FFF; 224 | padding: 15px 0 0 0; 225 | border-radius: 5px; 226 | box-shadow: 0 5px 20px 0 #d8d7d7; 227 | transition: all 0.3s; 228 | display: none; 229 | z-index: 999 230 | } 231 | 232 | .search-engine-head { 233 | overflow: hidden; 234 | text-indent: 20px; 235 | margin-bottom: 10px; 236 | padding-right: 15px; 237 | } 238 | 239 | .search-engine-tit { 240 | float: left; 241 | margin: 0; 242 | font-size: 14px; 243 | color: #999; 244 | } 245 | 246 | .search-engine ul { 247 | padding: 0; 248 | height: 40px; 249 | margin: 0 auto; 250 | justify-content: left; 251 | } 252 | 253 | .search-engine-tip { 254 | width: 0; 255 | height: 0; 256 | position: absolute; 257 | top: -15px; 258 | left: 15px; 259 | border-top: 8px solid transparent; 260 | border-right: 8px solid transparent; 261 | border-bottom: 8px solid #fff; 262 | border-left: 8px solid transparent; 263 | 264 | } 265 | 266 | .search-engine-list::after { 267 | content: ''; 268 | width: 70px; 269 | height: 18px; 270 | position: absolute; 271 | top: -17px; 272 | left: 1px; 273 | } 274 | 275 | .search-engine-list li { 276 | float: left; 277 | width: 80px; 278 | height: 30px; 279 | line-height: 30px; 280 | text-align: left; 281 | font-size: 14px; 282 | left: 15px; 283 | padding: 5px 10px 5px 10px; 284 | margin: 0 10px 10px 0; 285 | background: #f9f9f9; 286 | color: #999; 287 | cursor: pointer; 288 | list-style: none; 289 | position: relative; 290 | border-radius: 10px; 291 | text-overflow: ellipsis; 292 | overflow: hidden; 293 | white-space: nowrap; 294 | } 295 | 296 | .search-engine-list li img { 297 | width: 25px; 298 | height: 25px; 299 | border-radius: 15px; 300 | float: left; 301 | margin-right: 5px; 302 | margin-top: 2px; 303 | } 304 | 305 | .quick-div { 306 | margin: 0 auto; 307 | width: 100%; 308 | justify-content: left; 309 | } 310 | 311 | .quick-ul { 312 | } 313 | 314 | .quick { 315 | width: 17%; 316 | height: 40px; 317 | margin: 5px 3px; 318 | left: 30px; 319 | float: left; 320 | -webkit-tap-highlight-color: transparent; 321 | background: #eee; 322 | font-size: 16px; 323 | line-height: 40px; 324 | text-align: left; 325 | text-indent: 40px; 326 | text-overflow: ellipsis; 327 | cursor: pointer; 328 | position: relative; 329 | border-radius: 10px; 330 | overflow: hidden; 331 | white-space: nowrap; 332 | } 333 | 334 | .quick:active { 335 | background: #fff; 336 | box-shadow: 0 1px 20px 0 rgba(0, 0, 0, .1); 337 | } 338 | 339 | .quick i { 340 | position: absolute; 341 | display: block; 342 | width: 40px; 343 | height: 40px; 344 | left: 0; 345 | border-radius: 50%; 346 | background-size: cover; 347 | background-repeat: no-repeat; 348 | background-position: center; 349 | transform: scale(0.7); 350 | } 351 | 352 | .foot { 353 | position: absolute; 354 | bottom: 10px; 355 | z-index: 1000; 356 | text-align: center; 357 | width: 100%; 358 | color: #999; 359 | height: 20px; 360 | line-height: 20px; 361 | font-size: 12px; 362 | } 363 | 364 | 365 | #menu { 366 | width: 50px; 367 | height: 50px; 368 | transform: scale(0.8); 369 | position: absolute; 370 | right: 10px; 371 | top: 5px; 372 | z-index: 2000000; 373 | cursor: pointer; 374 | transition: 0.5s; 375 | } 376 | 377 | #menu i { 378 | position: absolute; 379 | left: 0; 380 | right: 0; 381 | margin: 24px auto; 382 | width: 30px; 383 | height: 2px; 384 | background: #777; 385 | } 386 | 387 | #menu i:before { 388 | content: ''; 389 | width: 20px; 390 | height: 2px; 391 | top: -8px; 392 | background: #777; 393 | position: absolute; 394 | right: 0; 395 | } 396 | 397 | #menu i:after { 398 | content: ''; 399 | width: 20px; 400 | height: 2px; 401 | bottom: -8px; 402 | background: #777; 403 | position: absolute; 404 | left: 0; 405 | } 406 | 407 | #menu.on { 408 | right: 380px; 409 | background: #29f; 410 | border-radius: 25px; 411 | box-shadow: 0 6px 8px rgba(36, 159, 253, .3); 412 | } 413 | 414 | #menu.on i { 415 | width: 20px; 416 | background: #fff; 417 | } 418 | 419 | #menu.on i:before { 420 | top: -5px; 421 | transform: rotate(45deg); 422 | width: 14px; 423 | right: -1px; 424 | left: auto; 425 | background: #fff; 426 | } 427 | 428 | #menu.on i:after { 429 | bottom: -5px; 430 | transform: rotate(-45deg); 431 | width: 14px; 432 | right: -1px; 433 | left: auto; 434 | background: #fff; 435 | } 436 | 437 | .side { 438 | width: 357px; 439 | padding: 0 10px; 440 | height: 100%; 441 | position: absolute; 442 | right: 0; 443 | z-index: 2000; 444 | background: #222d46; 445 | transition: 0.3s all linear; 446 | } 447 | 448 | .side.closed { 449 | right: -380px; 450 | } 451 | 452 | .tab-nav { 453 | overflow: hidden; 454 | height: 5%; 455 | } 456 | 457 | .tab-nav a { 458 | display: block; 459 | float: left; 460 | width: 60px; 461 | height: 30px; 462 | line-height: 30px; 463 | text-align: center; 464 | text-decoration: none; 465 | color: #999; 466 | 467 | } 468 | 469 | .tab-nav a.current { 470 | background: rgba(0, 27, 26, 0.28); 471 | color: #fff; 472 | } 473 | 474 | .tab-con { 475 | position: relative; 476 | width: 357px; 477 | height: 95%; 478 | overflow: hidden; 479 | } 480 | 481 | .j-tab-con { 482 | height: 100%; 483 | } 484 | 485 | .tab-con-item { 486 | height: 100%; 487 | width: 357px; 488 | display: none; 489 | overflow: hidden; 490 | overflow-y: auto; 491 | } 492 | 493 | .list ul { 494 | height: 100%; 495 | float: left; 496 | margin-bottom: 20px; 497 | 498 | } 499 | 500 | .list ul li { 501 | float: left; 502 | margin: 5px; 503 | width: 100px; 504 | height: 30px; 505 | text-align: left; 506 | line-height: 30px; 507 | } 508 | 509 | .list ul li a { 510 | width: 100%; 511 | border-radius: 5px; 512 | transition: 0.2s all linear; 513 | height: 100%; 514 | display: block; 515 | color: #fff; 516 | font-weight: 500; 517 | background: #293550; 518 | text-align: left; 519 | font-size: 12px; 520 | } 521 | 522 | .list ul li a i { 523 | margin-right: 5px; 524 | margin-left: 15px; 525 | transition: 0.2s all linear; 526 | } 527 | 528 | .list ul li a i.iconfont { 529 | font-size: 14px; 530 | } 531 | 532 | .list ul li:hover a { 533 | color: #fff; 534 | background-color: #29f; 535 | background-image: linear-gradient(135deg, rgba(35, 153, 255, 0) , rgba(84, 175, 253, 1)); 536 | box-shadow: 0 3px 3px rgba(0, 40, 70, .3); 537 | } 538 | 539 | .list ul li:hover a i { 540 | color: #fff !important; 541 | } 542 | 543 | .list ul li.title { 544 | width: 100%; 545 | height: 40px; 546 | line-height: 40px; 547 | margin: 10px 0 0; 548 | text-align: left; 549 | text-indent: 10px; 550 | /*border-bottom: 1px dashed #dedede;*/ 551 | color: #fff; 552 | font-size: 18px; 553 | font-weight: bold; 554 | } 555 | 556 | .list ul li.title i { 557 | color: #29f; 558 | margin-right: 5px; 559 | font-weight: normal; 560 | } 561 | 562 | .set { 563 | 564 | } 565 | 566 | .set_blocks { 567 | background: rgb(221, 221, 221); 568 | margin-top: 10px; 569 | border-radius: 5px; 570 | } 571 | 572 | .set_blocks_title { 573 | font-size: 14px; 574 | background-color: rgb(65, 110, 152); 575 | color: #fff; 576 | padding: 10px 15px; 577 | border-top-right-radius: 5px; 578 | border-top-left-radius: 5px; 579 | } 580 | 581 | .set_blocks_content { 582 | font-size: 14px; 583 | padding: 10px 15px; 584 | } 585 | 586 | .set_blocks_content table { 587 | font-size: 14px; 588 | text-align: right; 589 | width: 100%; 590 | border-collapse: collapse; 591 | } 592 | 593 | .set_blocks_content table tr td:nth-child(2) { 594 | text-align: left; 595 | } 596 | 597 | .set_blocks_content table tr td { 598 | border-bottom: 1px solid; 599 | border-color: rgb(71, 144, 191); 600 | } 601 | 602 | .set_blocks_content button { 603 | background: none; 604 | border: 1px solid rgb(72, 91, 94); 605 | border-radius: 3px; 606 | } 607 | 608 | .set_blocks_content button:hover { 609 | border: 2px solid #485b5e; 610 | } 611 | 612 | .set_blocks_content button:active { 613 | color: #fff; 614 | background-color: #599cff; 615 | } 616 | 617 | .set_blocks_content .se_add_preinstall { 618 | margin-top: 10px; 619 | text-align: center; 620 | } 621 | 622 | .set_blocks_content .se_add_preinstall button { 623 | width: 40%; 624 | height: 20px; 625 | border: 1px solid #485b5e; 626 | border-radius: 3px; 627 | text-align: center; 628 | background: none; 629 | } 630 | 631 | .set_blocks_content .se_add_preinstall button:active { 632 | color: #fff; 633 | background-color: #599cff; 634 | } 635 | 636 | .add_content { 637 | border: 1px solid #599cff; 638 | border-radius: 3px; 639 | margin-top: 10px; 640 | padding: 8px 12px; 641 | } 642 | 643 | .add_content .from_items { 644 | margin-top: 5px; 645 | margin-bottom: 5px; 646 | } 647 | 648 | .add_content input { 649 | width: 100%; 650 | } 651 | 652 | .add_content .button { 653 | text-align: center; 654 | } 655 | 656 | .add_content button { 657 | width: 30%; 658 | height: 20px; 659 | border: 1px solid #485b5e; 660 | border-radius: 3px; 661 | text-align: center; 662 | background: none; 663 | margin: 0 10px; 664 | } 665 | 666 | .add_content .se_add_save:active { 667 | color: #fff; 668 | background-color: #21ff2c; 669 | } 670 | 671 | .add_content .se_add_cancel:active { 672 | color: #fff; 673 | background-color: #599cff; 674 | } 675 | 676 | .but-ordinary { 677 | width: 25%; 678 | height: 20px; 679 | border-radius: 3px; 680 | text-align: center; 681 | background: none; 682 | margin: 0 10px; 683 | } 684 | 685 | .but-active { 686 | color: #fff; 687 | background: #599cff; 688 | border: 2px solid #485b5e; 689 | } 690 | 691 | .me { 692 | text-align: center; 693 | color: #fff; 694 | } 695 | 696 | /*表单样式*/ 697 | .from_container { 698 | border: 1px solid #599cff; 699 | border-radius: 3px; 700 | margin-top: 10px; 701 | padding: 8px 12px; 702 | } 703 | 704 | .from_row { 705 | margin: 10px 0; 706 | } 707 | 708 | .from_row_title { 709 | margin: 5px 0; 710 | } 711 | 712 | .from_row_content { 713 | margin: 5px 0; 714 | } 715 | 716 | .from_row_content input[type="text"] { 717 | width: 100% 718 | } 719 | .from_row_content input[type="radio"] { 720 | margin-left: 10px; 721 | } 722 | 723 | .right { 724 | text-align: right; 725 | } 726 | 727 | .left { 728 | text-align: left; 729 | } 730 | 731 | @media (max-width: 720px) { 732 | .con { 733 | top: 0; 734 | } 735 | 736 | .con .shlogo { 737 | width: 320px; 738 | height: 100px; 739 | } 740 | 741 | .con .sou form .wd:focus { 742 | background: #f1f1f1; 743 | box-shadow: none; 744 | border-color: #ccc 745 | } 746 | 747 | .con .sou form button { 748 | border-radius: 25px; 749 | } 750 | 751 | #menu.on { 752 | right: 270px; 753 | } 754 | 755 | .side { 756 | width: 227px; 757 | } 758 | 759 | .tab-con { 760 | width: 227px; 761 | } 762 | 763 | .tab-con-item { 764 | width: 227px; 765 | } 766 | 767 | .side ul { 768 | width: 220px; 769 | } 770 | 771 | .con .sou ul li { 772 | width: 100px; 773 | font-size: 12px; 774 | } 775 | 776 | .quick { 777 | left: 0; 778 | } 779 | 780 | .home, 781 | #menu { 782 | top: 5px; 783 | } 784 | } 785 | 786 | @media (max-height: 420px) { 787 | .con { 788 | margin: 0; 789 | top: 0; 790 | } 791 | 792 | .con .sou form .wd { 793 | text-indent: 50px; 794 | } 795 | 796 | .con .sou form:after { 797 | content: ""; 798 | display: block; 799 | width: 30px; 800 | height: 30px; 801 | position: absolute; 802 | left: 10px; 803 | top: 10px; 804 | /*background: url(icon/lg.svg) no-repeat center/cover;*/ 805 | border-radius: 50%; 806 | overflow: hidden; 807 | } 808 | 809 | .con .shlogo { 810 | display: none; 811 | } 812 | 813 | .home, 814 | #menu, 815 | .foot { 816 | display: none; 817 | } 818 | } 819 | 820 | ::-webkit-scrollbar { 821 | width: 6px; 822 | height: 6px; 823 | } 824 | 825 | ::-webkit-scrollbar-track { 826 | background: #222d46; 827 | border-radius: 0; 828 | } 829 | 830 | ::-webkit-scrollbar-thumb { 831 | background: #293550; 832 | border-radius: 0; 833 | } 834 | 835 | ::-webkit-scrollbar-thumb:hover { 836 | background: #293550; 837 | } 838 | 839 | ::-webkit-scrollbar-corner { 840 | background: #222d46; 841 | } -------------------------------------------------------------------------------- /font_1230786_swt4kkie8ym/demo.css: -------------------------------------------------------------------------------- 1 | /* Logo 字体 */ 2 | @font-face { 3 | font-family: "iconfont logo"; 4 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); 5 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), 6 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), 7 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), 8 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); 9 | } 10 | 11 | .logo { 12 | font-family: "iconfont logo"; 13 | font-size: 160px; 14 | font-style: normal; 15 | -webkit-font-smoothing: antialiased; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | 19 | /* tabs */ 20 | .nav-tabs { 21 | position: relative; 22 | } 23 | 24 | .nav-tabs .nav-more { 25 | position: absolute; 26 | right: 0; 27 | bottom: 0; 28 | height: 42px; 29 | line-height: 42px; 30 | color: #666; 31 | } 32 | 33 | #tabs { 34 | border-bottom: 1px solid #eee; 35 | } 36 | 37 | #tabs li { 38 | cursor: pointer; 39 | width: 100px; 40 | height: 40px; 41 | line-height: 40px; 42 | text-align: center; 43 | font-size: 16px; 44 | border-bottom: 2px solid transparent; 45 | position: relative; 46 | z-index: 1; 47 | margin-bottom: -1px; 48 | color: #666; 49 | } 50 | 51 | 52 | #tabs .active { 53 | border-bottom-color: #f00; 54 | color: #222; 55 | } 56 | 57 | .tab-container .content { 58 | display: none; 59 | } 60 | 61 | /* 页面布局 */ 62 | .main { 63 | padding: 30px 100px; 64 | width: 960px; 65 | margin: 0 auto; 66 | } 67 | 68 | .main .logo { 69 | color: #333; 70 | text-align: left; 71 | margin-bottom: 30px; 72 | line-height: 1; 73 | height: 110px; 74 | margin-top: -50px; 75 | overflow: hidden; 76 | *zoom: 1; 77 | } 78 | 79 | .main .logo a { 80 | font-size: 160px; 81 | color: #333; 82 | } 83 | 84 | .helps { 85 | margin-top: 40px; 86 | } 87 | 88 | .helps pre { 89 | padding: 20px; 90 | margin: 10px 0; 91 | border: solid 1px #e7e1cd; 92 | background-color: #fffdef; 93 | overflow: auto; 94 | } 95 | 96 | .icon_lists { 97 | width: 100% !important; 98 | overflow: hidden; 99 | *zoom: 1; 100 | } 101 | 102 | .icon_lists li { 103 | width: 100px; 104 | margin-bottom: 10px; 105 | margin-right: 20px; 106 | text-align: center; 107 | list-style: none !important; 108 | cursor: default; 109 | } 110 | 111 | .icon_lists li .code-name { 112 | line-height: 1.2; 113 | } 114 | 115 | .icon_lists .icon { 116 | display: block; 117 | height: 100px; 118 | line-height: 100px; 119 | font-size: 42px; 120 | margin: 10px auto; 121 | color: #333; 122 | -webkit-transition: font-size 0.25s linear, width 0.25s linear; 123 | -moz-transition: font-size 0.25s linear, width 0.25s linear; 124 | transition: font-size 0.25s linear, width 0.25s linear; 125 | } 126 | 127 | .icon_lists .icon:hover { 128 | font-size: 100px; 129 | } 130 | 131 | .icon_lists .svg-icon { 132 | /* 通过设置 font-size 来改变图标大小 */ 133 | width: 1em; 134 | /* 图标和文字相邻时,垂直对齐 */ 135 | vertical-align: -0.15em; 136 | /* 通过设置 color 来改变 SVG 的颜色/fill */ 137 | fill: currentColor; 138 | /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 139 | normalize.css 中也包含这行 */ 140 | overflow: hidden; 141 | } 142 | 143 | .icon_lists li .name, 144 | .icon_lists li .code-name { 145 | color: #666; 146 | } 147 | 148 | /* markdown 样式 */ 149 | .markdown { 150 | color: #666; 151 | font-size: 14px; 152 | line-height: 1.8; 153 | } 154 | 155 | .highlight { 156 | line-height: 1.5; 157 | } 158 | 159 | .markdown img { 160 | vertical-align: middle; 161 | max-width: 100%; 162 | } 163 | 164 | .markdown h1 { 165 | color: #404040; 166 | font-weight: 500; 167 | line-height: 40px; 168 | margin-bottom: 24px; 169 | } 170 | 171 | .markdown h2, 172 | .markdown h3, 173 | .markdown h4, 174 | .markdown h5, 175 | .markdown h6 { 176 | color: #404040; 177 | margin: 1.6em 0 0.6em 0; 178 | font-weight: 500; 179 | clear: both; 180 | } 181 | 182 | .markdown h1 { 183 | font-size: 28px; 184 | } 185 | 186 | .markdown h2 { 187 | font-size: 22px; 188 | } 189 | 190 | .markdown h3 { 191 | font-size: 16px; 192 | } 193 | 194 | .markdown h4 { 195 | font-size: 14px; 196 | } 197 | 198 | .markdown h5 { 199 | font-size: 12px; 200 | } 201 | 202 | .markdown h6 { 203 | font-size: 12px; 204 | } 205 | 206 | .markdown hr { 207 | height: 1px; 208 | border: 0; 209 | background: #e9e9e9; 210 | margin: 16px 0; 211 | clear: both; 212 | } 213 | 214 | .markdown p { 215 | margin: 1em 0; 216 | } 217 | 218 | .markdown>p, 219 | .markdown>blockquote, 220 | .markdown>.highlight, 221 | .markdown>ol, 222 | .markdown>ul { 223 | width: 80%; 224 | } 225 | 226 | .markdown ul>li { 227 | list-style: circle; 228 | } 229 | 230 | .markdown>ul li, 231 | .markdown blockquote ul>li { 232 | margin-left: 20px; 233 | padding-left: 4px; 234 | } 235 | 236 | .markdown>ul li p, 237 | .markdown>ol li p { 238 | margin: 0.6em 0; 239 | } 240 | 241 | .markdown ol>li { 242 | list-style: decimal; 243 | } 244 | 245 | .markdown>ol li, 246 | .markdown blockquote ol>li { 247 | margin-left: 20px; 248 | padding-left: 4px; 249 | } 250 | 251 | .markdown code { 252 | margin: 0 3px; 253 | padding: 0 5px; 254 | background: #eee; 255 | border-radius: 3px; 256 | } 257 | 258 | .markdown strong, 259 | .markdown b { 260 | font-weight: 600; 261 | } 262 | 263 | .markdown>table { 264 | border-collapse: collapse; 265 | border-spacing: 0px; 266 | empty-cells: show; 267 | border: 1px solid #e9e9e9; 268 | width: 95%; 269 | margin-bottom: 24px; 270 | } 271 | 272 | .markdown>table th { 273 | white-space: nowrap; 274 | color: #333; 275 | font-weight: 600; 276 | } 277 | 278 | .markdown>table th, 279 | .markdown>table td { 280 | border: 1px solid #e9e9e9; 281 | padding: 8px 16px; 282 | text-align: left; 283 | } 284 | 285 | .markdown>table th { 286 | background: #F7F7F7; 287 | } 288 | 289 | .markdown blockquote { 290 | font-size: 90%; 291 | color: #999; 292 | border-left: 4px solid #e9e9e9; 293 | padding-left: 0.8em; 294 | margin: 1em 0; 295 | } 296 | 297 | .markdown blockquote p { 298 | margin: 0; 299 | } 300 | 301 | .markdown .anchor { 302 | opacity: 0; 303 | transition: opacity 0.3s ease; 304 | margin-left: 8px; 305 | } 306 | 307 | .markdown .waiting { 308 | color: #ccc; 309 | } 310 | 311 | .markdown h1:hover .anchor, 312 | .markdown h2:hover .anchor, 313 | .markdown h3:hover .anchor, 314 | .markdown h4:hover .anchor, 315 | .markdown h5:hover .anchor, 316 | .markdown h6:hover .anchor { 317 | opacity: 1; 318 | display: inline-block; 319 | } 320 | 321 | .markdown>br, 322 | .markdown>p>br { 323 | clear: both; 324 | } 325 | 326 | 327 | .hljs { 328 | display: block; 329 | background: white; 330 | padding: 0.5em; 331 | color: #333333; 332 | overflow-x: auto; 333 | } 334 | 335 | .hljs-comment, 336 | .hljs-meta { 337 | color: #969896; 338 | } 339 | 340 | .hljs-string, 341 | .hljs-variable, 342 | .hljs-template-variable, 343 | .hljs-strong, 344 | .hljs-emphasis, 345 | .hljs-quote { 346 | color: #df5000; 347 | } 348 | 349 | .hljs-keyword, 350 | .hljs-selector-tag, 351 | .hljs-type { 352 | color: #a71d5d; 353 | } 354 | 355 | .hljs-literal, 356 | .hljs-symbol, 357 | .hljs-bullet, 358 | .hljs-attribute { 359 | color: #0086b3; 360 | } 361 | 362 | .hljs-section, 363 | .hljs-name { 364 | color: #63a35c; 365 | } 366 | 367 | .hljs-tag { 368 | color: #333333; 369 | } 370 | 371 | .hljs-title, 372 | .hljs-attr, 373 | .hljs-selector-id, 374 | .hljs-selector-class, 375 | .hljs-selector-attr, 376 | .hljs-selector-pseudo { 377 | color: #795da3; 378 | } 379 | 380 | .hljs-addition { 381 | color: #55a532; 382 | background-color: #eaffea; 383 | } 384 | 385 | .hljs-deletion { 386 | color: #bd2c00; 387 | background-color: #ffecec; 388 | } 389 | 390 | .hljs-link { 391 | text-decoration: underline; 392 | } 393 | 394 | /* 代码高亮 */ 395 | /* PrismJS 1.15.0 396 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ 397 | /** 398 | * prism.js default theme for JavaScript, CSS and HTML 399 | * Based on dabblet (http://dabblet.com) 400 | * @author Lea Verou 401 | */ 402 | code[class*="language-"], 403 | pre[class*="language-"] { 404 | color: black; 405 | background: none; 406 | text-shadow: 0 1px white; 407 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 408 | text-align: left; 409 | white-space: pre; 410 | word-spacing: normal; 411 | word-break: normal; 412 | word-wrap: normal; 413 | line-height: 1.5; 414 | 415 | -moz-tab-size: 4; 416 | -o-tab-size: 4; 417 | tab-size: 4; 418 | 419 | -webkit-hyphens: none; 420 | -moz-hyphens: none; 421 | -ms-hyphens: none; 422 | hyphens: none; 423 | } 424 | 425 | pre[class*="language-"]::-moz-selection, 426 | pre[class*="language-"] ::-moz-selection, 427 | code[class*="language-"]::-moz-selection, 428 | code[class*="language-"] ::-moz-selection { 429 | text-shadow: none; 430 | background: #b3d4fc; 431 | } 432 | 433 | pre[class*="language-"]::selection, 434 | pre[class*="language-"] ::selection, 435 | code[class*="language-"]::selection, 436 | code[class*="language-"] ::selection { 437 | text-shadow: none; 438 | background: #b3d4fc; 439 | } 440 | 441 | @media print { 442 | 443 | code[class*="language-"], 444 | pre[class*="language-"] { 445 | text-shadow: none; 446 | } 447 | } 448 | 449 | /* Code blocks */ 450 | pre[class*="language-"] { 451 | padding: 1em; 452 | margin: .5em 0; 453 | overflow: auto; 454 | } 455 | 456 | :not(pre)>code[class*="language-"], 457 | pre[class*="language-"] { 458 | background: #f5f2f0; 459 | } 460 | 461 | /* Inline code */ 462 | :not(pre)>code[class*="language-"] { 463 | padding: .1em; 464 | border-radius: .3em; 465 | white-space: normal; 466 | } 467 | 468 | .token.comment, 469 | .token.prolog, 470 | .token.doctype, 471 | .token.cdata { 472 | color: slategray; 473 | } 474 | 475 | .token.punctuation { 476 | color: #999; 477 | } 478 | 479 | .namespace { 480 | opacity: .7; 481 | } 482 | 483 | .token.property, 484 | .token.tag, 485 | .token.boolean, 486 | .token.number, 487 | .token.constant, 488 | .token.symbol, 489 | .token.deleted { 490 | color: #905; 491 | } 492 | 493 | .token.selector, 494 | .token.attr-name, 495 | .token.string, 496 | .token.char, 497 | .token.builtin, 498 | .token.inserted { 499 | color: #690; 500 | } 501 | 502 | .token.operator, 503 | .token.entity, 504 | .token.url, 505 | .language-css .token.string, 506 | .style .token.string { 507 | color: #9a6e3a; 508 | background: hsla(0, 0%, 100%, .5); 509 | } 510 | 511 | .token.atrule, 512 | .token.attr-value, 513 | .token.keyword { 514 | color: #07a; 515 | } 516 | 517 | .token.function, 518 | .token.class-name { 519 | color: #DD4A68; 520 | } 521 | 522 | .token.regex, 523 | .token.important, 524 | .token.variable { 525 | color: #e90; 526 | } 527 | 528 | .token.important, 529 | .token.bold { 530 | font-weight: bold; 531 | } 532 | 533 | .token.italic { 534 | font-style: italic; 535 | } 536 | 537 | .token.entity { 538 | cursor: help; 539 | } 540 | -------------------------------------------------------------------------------- /font_1230786_swt4kkie8ym/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('iconfont.eot?t=1561962427119'); /* IE9 */ 3 | src: url('iconfont.eot?t=1561962427119#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), 5 | url('iconfont.woff?t=1561962427119') format('woff'), 6 | url('iconfont.ttf?t=1561962427119') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('iconfont.svg?t=1561962427119#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-douban:before { 19 | content: "\e600"; 20 | } 21 | 22 | .icon-wode:before { 23 | content: "\e660"; 24 | } 25 | 26 | .icon-msg:before { 27 | content: "\e61c"; 28 | } 29 | 30 | .icon-99:before { 31 | content: "\e6bf"; 32 | } 33 | 34 | .icon-baiduyun:before { 35 | content: "\e622"; 36 | } 37 | 38 | .icon-wangluo1:before { 39 | content: "\e687"; 40 | } 41 | 42 | .icon-ip:before { 43 | content: "\e64f"; 44 | } 45 | 46 | .icon-jshunxiao:before { 47 | content: "\e645"; 48 | } 49 | 50 | .icon-huaban:before { 51 | content: "\e690"; 52 | } 53 | 54 | .icon-github:before { 55 | content: "\e709"; 56 | } 57 | 58 | .icon-pinterest:before { 59 | content: "\e79a"; 60 | } 61 | 62 | .icon-weibo:before { 63 | content: "\e63d"; 64 | } 65 | 66 | .icon-youhuiquan:before { 67 | content: "\e65d"; 68 | } 69 | 70 | .icon-juhuasuan:before { 71 | content: "\e779"; 72 | } 73 | 74 | .icon-gmail:before { 75 | content: "\e89f"; 76 | } 77 | 78 | .icon-windows:before { 79 | content: "\ebb1"; 80 | } 81 | 82 | .icon-ai-tool:before { 83 | content: "\e627"; 84 | } 85 | 86 | .icon-emizhifeiji:before { 87 | content: "\e649"; 88 | } 89 | 90 | .icon-h5:before { 91 | content: "\e633"; 92 | } 93 | 94 | .icon-xinlang:before { 95 | content: "\e604"; 96 | } 97 | 98 | .icon-wangyi:before { 99 | content: "\e605"; 100 | } 101 | 102 | .icon-bolezaixian:before { 103 | content: "\e6ea"; 104 | } 105 | 106 | .icon-youxiang:before { 107 | content: "\e667"; 108 | } 109 | 110 | .icon-aiqiyi:before { 111 | content: "\e719"; 112 | } 113 | 114 | .icon-kongzhi:before { 115 | content: "\e60b"; 116 | } 117 | 118 | .icon-gouwuche:before { 119 | content: "\e63b"; 120 | } 121 | 122 | .icon-twitter:before { 123 | content: "\e69b"; 124 | } 125 | 126 | .icon-wangluo:before { 127 | content: "\e617"; 128 | } 129 | 130 | .icon-behance:before { 131 | content: "\e643"; 132 | } 133 | 134 | .icon-zhanku:before { 135 | content: "\e66f"; 136 | } 137 | 138 | .icon-amazon:before { 139 | content: "\e616"; 140 | } 141 | 142 | .icon-eye:before { 143 | content: "\e722"; 144 | } 145 | 146 | .icon-cloud-download:before { 147 | content: "\e61b"; 148 | } 149 | 150 | .icon-gongju:before { 151 | content: "\e603"; 152 | } 153 | 154 | .icon-ip2:before { 155 | content: "\e648"; 156 | } 157 | 158 | .icon-fanyi:before { 159 | content: "\e6ba"; 160 | } 161 | 162 | .icon-acfun:before { 163 | content: "\e68e"; 164 | } 165 | 166 | .icon-yunyouxiang:before { 167 | content: "\e72e"; 168 | } 169 | 170 | .icon-anzhuo:before { 171 | content: "\e64d"; 172 | } 173 | 174 | .icon-youku:before { 175 | content: "\e619"; 176 | } 177 | 178 | .icon-shipin:before { 179 | content: "\e677"; 180 | } 181 | 182 | .icon-temai:before { 183 | content: "\e60f"; 184 | } 185 | 186 | .icon-S:before { 187 | content: "\e67f"; 188 | } 189 | 190 | .icon-youtube:before { 191 | content: "\e612"; 192 | } 193 | 194 | .icon-feedly:before { 195 | content: "\e62e"; 196 | } 197 | 198 | .icon-pingup:before { 199 | content: "\e651"; 200 | } 201 | 202 | .icon-cdnjs:before { 203 | content: "\e665"; 204 | } 205 | 206 | .icon-codepen:before { 207 | content: "\e689"; 208 | } 209 | 210 | .icon-jingdong:before { 211 | content: "\e631"; 212 | } 213 | 214 | .icon-taobao:before { 215 | content: "\e634"; 216 | } 217 | 218 | .icon-sousuo:before { 219 | content: "\e61a"; 220 | } 221 | 222 | .icon-kongzhitai:before { 223 | content: "\e654"; 224 | } 225 | 226 | .icon-daohang:before { 227 | content: "\e611"; 228 | } 229 | 230 | .icon-quxian:before { 231 | content: "\e61e"; 232 | } 233 | 234 | .icon-QQ:before { 235 | content: "\e613"; 236 | } 237 | 238 | .icon-base64:before { 239 | content: "\e84b"; 240 | } 241 | 242 | .icon-instagram:before { 243 | content: "\e87f"; 244 | } 245 | 246 | .icon-feiji:before { 247 | content: "\e704"; 248 | } 249 | 250 | .icon-yinle:before { 251 | content: "\e7b8"; 252 | } 253 | 254 | .icon-zhifeiji:before { 255 | content: "\e7d5"; 256 | } 257 | 258 | .icon-sheji:before { 259 | content: "\eac1"; 260 | } 261 | 262 | .icon-theater-masks:before { 263 | content: "\f0fd"; 264 | } 265 | 266 | .icon-font-awesome:before { 267 | content: "\f1a7"; 268 | } 269 | 270 | .icon-tengxunshipin:before { 271 | content: "\e636"; 272 | } 273 | 274 | .icon-dianshi:before { 275 | content: "\e64b"; 276 | } 277 | 278 | .icon-gongxiang:before { 279 | content: "\e608"; 280 | } 281 | 282 | .icon-dribbble:before { 283 | content: "\e6ec"; 284 | } 285 | 286 | .icon-google:before { 287 | content: "\e8f0"; 288 | } 289 | 290 | .icon-jiaocheng:before { 291 | content: "\e62b"; 292 | } 293 | 294 | .icon-cloudflare:before { 295 | content: "\e64c"; 296 | } 297 | 298 | .icon-md:before { 299 | content: "\e6b5"; 300 | } 301 | 302 | .icon-facebook:before { 303 | content: "\e7ff"; 304 | } 305 | 306 | .icon-yanxuan:before { 307 | content: "\e609"; 308 | } 309 | 310 | .icon-suning:before { 311 | content: "\e60c"; 312 | } 313 | 314 | .icon-zhihu:before { 315 | content: "\e60d"; 316 | } 317 | 318 | .icon-dangdang:before { 319 | content: "\e60e"; 320 | } 321 | 322 | .icon-V:before { 323 | content: "\e610"; 324 | } 325 | 326 | .icon-zimu:before { 327 | content: "\e614"; 328 | } 329 | 330 | .icon-bili:before { 331 | content: "\e615"; 332 | } 333 | 334 | .icon-iconfont:before { 335 | content: "\e618"; 336 | } 337 | 338 | .icon-daohang1:before { 339 | content: "\e620"; 340 | } 341 | 342 | .icon-yunbo:before { 343 | content: "\e621"; 344 | } 345 | 346 | .icon-shilaimu:before { 347 | content: "\e61d"; 348 | } 349 | 350 | -------------------------------------------------------------------------------- /font_1230786_swt4kkie8ym/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1230786_swt4kkie8ym/iconfont.eot -------------------------------------------------------------------------------- /font_1230786_swt4kkie8ym/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1230786_swt4kkie8ym/iconfont.ttf -------------------------------------------------------------------------------- /font_1230786_swt4kkie8ym/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1230786_swt4kkie8ym/iconfont.woff -------------------------------------------------------------------------------- /font_1230786_swt4kkie8ym/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1230786_swt4kkie8ym/iconfont.woff2 -------------------------------------------------------------------------------- /font_1614281/demo.css: -------------------------------------------------------------------------------- 1 | /* Logo 字体 */ 2 | @font-face { 3 | font-family: "iconfont logo"; 4 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); 5 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), 6 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), 7 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), 8 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); 9 | } 10 | 11 | .logo { 12 | font-family: "iconfont logo"; 13 | font-size: 160px; 14 | font-style: normal; 15 | -webkit-font-smoothing: antialiased; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | 19 | /* tabs */ 20 | .nav-tabs { 21 | position: relative; 22 | } 23 | 24 | .nav-tabs .nav-more { 25 | position: absolute; 26 | right: 0; 27 | bottom: 0; 28 | height: 42px; 29 | line-height: 42px; 30 | color: #666; 31 | } 32 | 33 | #tabs { 34 | border-bottom: 1px solid #eee; 35 | } 36 | 37 | #tabs li { 38 | cursor: pointer; 39 | width: 100px; 40 | height: 40px; 41 | line-height: 40px; 42 | text-align: center; 43 | font-size: 16px; 44 | border-bottom: 2px solid transparent; 45 | position: relative; 46 | z-index: 1; 47 | margin-bottom: -1px; 48 | color: #666; 49 | } 50 | 51 | 52 | #tabs .active { 53 | border-bottom-color: #f00; 54 | color: #222; 55 | } 56 | 57 | .tab-container .content { 58 | display: none; 59 | } 60 | 61 | /* 页面布局 */ 62 | .main { 63 | padding: 30px 100px; 64 | width: 960px; 65 | margin: 0 auto; 66 | } 67 | 68 | .main .logo { 69 | color: #333; 70 | text-align: left; 71 | margin-bottom: 30px; 72 | line-height: 1; 73 | height: 110px; 74 | margin-top: -50px; 75 | overflow: hidden; 76 | *zoom: 1; 77 | } 78 | 79 | .main .logo a { 80 | font-size: 160px; 81 | color: #333; 82 | } 83 | 84 | .helps { 85 | margin-top: 40px; 86 | } 87 | 88 | .helps pre { 89 | padding: 20px; 90 | margin: 10px 0; 91 | border: solid 1px #e7e1cd; 92 | background-color: #fffdef; 93 | overflow: auto; 94 | } 95 | 96 | .icon_lists { 97 | width: 100% !important; 98 | overflow: hidden; 99 | *zoom: 1; 100 | } 101 | 102 | .icon_lists li { 103 | width: 100px; 104 | margin-bottom: 10px; 105 | margin-right: 20px; 106 | text-align: center; 107 | list-style: none !important; 108 | cursor: default; 109 | } 110 | 111 | .icon_lists li .code-name { 112 | line-height: 1.2; 113 | } 114 | 115 | .icon_lists .icon { 116 | display: block; 117 | height: 100px; 118 | line-height: 100px; 119 | font-size: 42px; 120 | margin: 10px auto; 121 | color: #333; 122 | -webkit-transition: font-size 0.25s linear, width 0.25s linear; 123 | -moz-transition: font-size 0.25s linear, width 0.25s linear; 124 | transition: font-size 0.25s linear, width 0.25s linear; 125 | } 126 | 127 | .icon_lists .icon:hover { 128 | font-size: 100px; 129 | } 130 | 131 | .icon_lists .svg-icon { 132 | /* 通过设置 font-size 来改变图标大小 */ 133 | width: 1em; 134 | /* 图标和文字相邻时,垂直对齐 */ 135 | vertical-align: -0.15em; 136 | /* 通过设置 color 来改变 SVG 的颜色/fill */ 137 | fill: currentColor; 138 | /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 139 | normalize.css 中也包含这行 */ 140 | overflow: hidden; 141 | } 142 | 143 | .icon_lists li .name, 144 | .icon_lists li .code-name { 145 | color: #666; 146 | } 147 | 148 | /* markdown 样式 */ 149 | .markdown { 150 | color: #666; 151 | font-size: 14px; 152 | line-height: 1.8; 153 | } 154 | 155 | .highlight { 156 | line-height: 1.5; 157 | } 158 | 159 | .markdown img { 160 | vertical-align: middle; 161 | max-width: 100%; 162 | } 163 | 164 | .markdown h1 { 165 | color: #404040; 166 | font-weight: 500; 167 | line-height: 40px; 168 | margin-bottom: 24px; 169 | } 170 | 171 | .markdown h2, 172 | .markdown h3, 173 | .markdown h4, 174 | .markdown h5, 175 | .markdown h6 { 176 | color: #404040; 177 | margin: 1.6em 0 0.6em 0; 178 | font-weight: 500; 179 | clear: both; 180 | } 181 | 182 | .markdown h1 { 183 | font-size: 28px; 184 | } 185 | 186 | .markdown h2 { 187 | font-size: 22px; 188 | } 189 | 190 | .markdown h3 { 191 | font-size: 16px; 192 | } 193 | 194 | .markdown h4 { 195 | font-size: 14px; 196 | } 197 | 198 | .markdown h5 { 199 | font-size: 12px; 200 | } 201 | 202 | .markdown h6 { 203 | font-size: 12px; 204 | } 205 | 206 | .markdown hr { 207 | height: 1px; 208 | border: 0; 209 | background: #e9e9e9; 210 | margin: 16px 0; 211 | clear: both; 212 | } 213 | 214 | .markdown p { 215 | margin: 1em 0; 216 | } 217 | 218 | .markdown>p, 219 | .markdown>blockquote, 220 | .markdown>.highlight, 221 | .markdown>ol, 222 | .markdown>ul { 223 | width: 80%; 224 | } 225 | 226 | .markdown ul>li { 227 | list-style: circle; 228 | } 229 | 230 | .markdown>ul li, 231 | .markdown blockquote ul>li { 232 | margin-left: 20px; 233 | padding-left: 4px; 234 | } 235 | 236 | .markdown>ul li p, 237 | .markdown>ol li p { 238 | margin: 0.6em 0; 239 | } 240 | 241 | .markdown ol>li { 242 | list-style: decimal; 243 | } 244 | 245 | .markdown>ol li, 246 | .markdown blockquote ol>li { 247 | margin-left: 20px; 248 | padding-left: 4px; 249 | } 250 | 251 | .markdown code { 252 | margin: 0 3px; 253 | padding: 0 5px; 254 | background: #eee; 255 | border-radius: 3px; 256 | } 257 | 258 | .markdown strong, 259 | .markdown b { 260 | font-weight: 600; 261 | } 262 | 263 | .markdown>table { 264 | border-collapse: collapse; 265 | border-spacing: 0px; 266 | empty-cells: show; 267 | border: 1px solid #e9e9e9; 268 | width: 95%; 269 | margin-bottom: 24px; 270 | } 271 | 272 | .markdown>table th { 273 | white-space: nowrap; 274 | color: #333; 275 | font-weight: 600; 276 | } 277 | 278 | .markdown>table th, 279 | .markdown>table td { 280 | border: 1px solid #e9e9e9; 281 | padding: 8px 16px; 282 | text-align: left; 283 | } 284 | 285 | .markdown>table th { 286 | background: #F7F7F7; 287 | } 288 | 289 | .markdown blockquote { 290 | font-size: 90%; 291 | color: #999; 292 | border-left: 4px solid #e9e9e9; 293 | padding-left: 0.8em; 294 | margin: 1em 0; 295 | } 296 | 297 | .markdown blockquote p { 298 | margin: 0; 299 | } 300 | 301 | .markdown .anchor { 302 | opacity: 0; 303 | transition: opacity 0.3s ease; 304 | margin-left: 8px; 305 | } 306 | 307 | .markdown .waiting { 308 | color: #ccc; 309 | } 310 | 311 | .markdown h1:hover .anchor, 312 | .markdown h2:hover .anchor, 313 | .markdown h3:hover .anchor, 314 | .markdown h4:hover .anchor, 315 | .markdown h5:hover .anchor, 316 | .markdown h6:hover .anchor { 317 | opacity: 1; 318 | display: inline-block; 319 | } 320 | 321 | .markdown>br, 322 | .markdown>p>br { 323 | clear: both; 324 | } 325 | 326 | 327 | .hljs { 328 | display: block; 329 | background: white; 330 | padding: 0.5em; 331 | color: #333333; 332 | overflow-x: auto; 333 | } 334 | 335 | .hljs-comment, 336 | .hljs-meta { 337 | color: #969896; 338 | } 339 | 340 | .hljs-string, 341 | .hljs-variable, 342 | .hljs-template-variable, 343 | .hljs-strong, 344 | .hljs-emphasis, 345 | .hljs-quote { 346 | color: #df5000; 347 | } 348 | 349 | .hljs-keyword, 350 | .hljs-selector-tag, 351 | .hljs-type { 352 | color: #a71d5d; 353 | } 354 | 355 | .hljs-literal, 356 | .hljs-symbol, 357 | .hljs-bullet, 358 | .hljs-attribute { 359 | color: #0086b3; 360 | } 361 | 362 | .hljs-section, 363 | .hljs-name { 364 | color: #63a35c; 365 | } 366 | 367 | .hljs-tag { 368 | color: #333333; 369 | } 370 | 371 | .hljs-title, 372 | .hljs-attr, 373 | .hljs-selector-id, 374 | .hljs-selector-class, 375 | .hljs-selector-attr, 376 | .hljs-selector-pseudo { 377 | color: #795da3; 378 | } 379 | 380 | .hljs-addition { 381 | color: #55a532; 382 | background-color: #eaffea; 383 | } 384 | 385 | .hljs-deletion { 386 | color: #bd2c00; 387 | background-color: #ffecec; 388 | } 389 | 390 | .hljs-link { 391 | text-decoration: underline; 392 | } 393 | 394 | /* 代码高亮 */ 395 | /* PrismJS 1.15.0 396 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ 397 | /** 398 | * prism.js default theme for JavaScript, CSS and HTML 399 | * Based on dabblet (http://dabblet.com) 400 | * @author Lea Verou 401 | */ 402 | code[class*="language-"], 403 | pre[class*="language-"] { 404 | color: black; 405 | background: none; 406 | text-shadow: 0 1px white; 407 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 408 | text-align: left; 409 | white-space: pre; 410 | word-spacing: normal; 411 | word-break: normal; 412 | word-wrap: normal; 413 | line-height: 1.5; 414 | 415 | -moz-tab-size: 4; 416 | -o-tab-size: 4; 417 | tab-size: 4; 418 | 419 | -webkit-hyphens: none; 420 | -moz-hyphens: none; 421 | -ms-hyphens: none; 422 | hyphens: none; 423 | } 424 | 425 | pre[class*="language-"]::-moz-selection, 426 | pre[class*="language-"] ::-moz-selection, 427 | code[class*="language-"]::-moz-selection, 428 | code[class*="language-"] ::-moz-selection { 429 | text-shadow: none; 430 | background: #b3d4fc; 431 | } 432 | 433 | pre[class*="language-"]::selection, 434 | pre[class*="language-"] ::selection, 435 | code[class*="language-"]::selection, 436 | code[class*="language-"] ::selection { 437 | text-shadow: none; 438 | background: #b3d4fc; 439 | } 440 | 441 | @media print { 442 | 443 | code[class*="language-"], 444 | pre[class*="language-"] { 445 | text-shadow: none; 446 | } 447 | } 448 | 449 | /* Code blocks */ 450 | pre[class*="language-"] { 451 | padding: 1em; 452 | margin: .5em 0; 453 | overflow: auto; 454 | } 455 | 456 | :not(pre)>code[class*="language-"], 457 | pre[class*="language-"] { 458 | background: #f5f2f0; 459 | } 460 | 461 | /* Inline code */ 462 | :not(pre)>code[class*="language-"] { 463 | padding: .1em; 464 | border-radius: .3em; 465 | white-space: normal; 466 | } 467 | 468 | .token.comment, 469 | .token.prolog, 470 | .token.doctype, 471 | .token.cdata { 472 | color: slategray; 473 | } 474 | 475 | .token.punctuation { 476 | color: #999; 477 | } 478 | 479 | .namespace { 480 | opacity: .7; 481 | } 482 | 483 | .token.property, 484 | .token.tag, 485 | .token.boolean, 486 | .token.number, 487 | .token.constant, 488 | .token.symbol, 489 | .token.deleted { 490 | color: #905; 491 | } 492 | 493 | .token.selector, 494 | .token.attr-name, 495 | .token.string, 496 | .token.char, 497 | .token.builtin, 498 | .token.inserted { 499 | color: #690; 500 | } 501 | 502 | .token.operator, 503 | .token.entity, 504 | .token.url, 505 | .language-css .token.string, 506 | .style .token.string { 507 | color: #9a6e3a; 508 | background: hsla(0, 0%, 100%, .5); 509 | } 510 | 511 | .token.atrule, 512 | .token.attr-value, 513 | .token.keyword { 514 | color: #07a; 515 | } 516 | 517 | .token.function, 518 | .token.class-name { 519 | color: #DD4A68; 520 | } 521 | 522 | .token.regex, 523 | .token.important, 524 | .token.variable { 525 | color: #e90; 526 | } 527 | 528 | .token.important, 529 | .token.bold { 530 | font-weight: bold; 531 | } 532 | 533 | .token.italic { 534 | font-style: italic; 535 | } 536 | 537 | .token.entity { 538 | cursor: help; 539 | } 540 | -------------------------------------------------------------------------------- /font_1614281/demo_index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IconFont Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |

19 | 29 |
30 |
31 |
    32 | 33 |
  • 34 | 35 |
    home
    36 |
    
    37 |
  • 38 | 39 |
  • 40 | 41 |
    警告
    42 |
    
    43 |
  • 44 | 45 |
  • 46 | 47 |
    添加
    48 |
    
    49 |
  • 50 | 51 |
  • 52 | 53 |
    close
    54 |
    
    55 |
  • 56 | 57 |
  • 58 | 59 |
    user
    60 |
    
    61 |
  • 62 | 63 |
  • 64 | 65 |
    edit
    66 |
    
    67 |
  • 68 | 69 |
  • 70 | 71 |
    delete
    72 |
    
    73 |
  • 74 | 75 |
  • 76 | 77 |
    align-left
    78 |
    
    79 |
  • 80 | 81 |
  • 82 | 83 |
    plus
    84 |
    
    85 |
  • 86 | 87 |
  • 88 | 89 |
    strore-add
    90 |
    
    91 |
  • 92 | 93 |
  • 94 | 95 |
    set
    96 |
    
    97 |
  • 98 | 99 |
  • 100 | 101 |
    book-edit
    102 |
    
    103 |
  • 104 | 105 |
106 |
107 |

Unicode 引用

108 |
109 | 110 |

Unicode 是字体在网页端最原始的应用方式,特点是:

111 |
    112 |
  • 兼容性最好,支持 IE6+,及所有现代浏览器。
  • 113 |
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • 114 |
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
  • 115 |
116 |
117 |

注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式

118 |
119 |

Unicode 使用步骤如下:

120 |

第一步:拷贝项目下面生成的 @font-face

121 |
@font-face {
123 |   font-family: 'iconfont';
124 |   src: url('iconfont.eot');
125 |   src: url('iconfont.eot?#iefix') format('embedded-opentype'),
126 |       url('iconfont.woff2') format('woff2'),
127 |       url('iconfont.woff') format('woff'),
128 |       url('iconfont.ttf') format('truetype'),
129 |       url('iconfont.svg#iconfont') format('svg');
130 | }
131 | 
132 |

第二步:定义使用 iconfont 的样式

133 |
.iconfont {
135 |   font-family: "iconfont" !important;
136 |   font-size: 16px;
137 |   font-style: normal;
138 |   -webkit-font-smoothing: antialiased;
139 |   -moz-osx-font-smoothing: grayscale;
140 | }
141 | 
142 |

第三步:挑选相应图标并获取字体编码,应用于页面

143 |
144 | <span class="iconfont">&#x33;</span>
146 | 
147 |
148 |

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

149 |
150 |
151 |
152 |
153 |
    154 | 155 |
  • 156 | 157 |
    158 | home 159 |
    160 |
    .iconhome 161 |
    162 |
  • 163 | 164 |
  • 165 | 166 |
    167 | 警告 168 |
    169 |
    .iconjinggao 170 |
    171 |
  • 172 | 173 |
  • 174 | 175 |
    176 | 添加 177 |
    178 |
    .icontianjia 179 |
    180 |
  • 181 | 182 |
  • 183 | 184 |
    185 | close 186 |
    187 |
    .iconclose 188 |
    189 |
  • 190 | 191 |
  • 192 | 193 |
    194 | user 195 |
    196 |
    .iconuser 197 |
    198 |
  • 199 | 200 |
  • 201 | 202 |
    203 | edit 204 |
    205 |
    .iconedit 206 |
    207 |
  • 208 | 209 |
  • 210 | 211 |
    212 | delete 213 |
    214 |
    .icondelete 215 |
    216 |
  • 217 | 218 |
  • 219 | 220 |
    221 | align-left 222 |
    223 |
    .iconalign-left 224 |
    225 |
  • 226 | 227 |
  • 228 | 229 |
    230 | plus 231 |
    232 |
    .iconplus 233 |
    234 |
  • 235 | 236 |
  • 237 | 238 |
    239 | strore-add 240 |
    241 |
    .iconstrore-add 242 |
    243 |
  • 244 | 245 |
  • 246 | 247 |
    248 | set 249 |
    250 |
    .iconset 251 |
    252 |
  • 253 | 254 |
  • 255 | 256 |
    257 | book-edit 258 |
    259 |
    .iconbook-edit 260 |
    261 |
  • 262 | 263 |
264 |
265 |

font-class 引用

266 |
267 | 268 |

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

269 |

与 Unicode 使用方式相比,具有如下特点:

270 |
    271 |
  • 兼容性良好,支持 IE8+,及所有现代浏览器。
  • 272 |
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • 273 |
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • 274 |
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
  • 275 |
276 |

使用步骤如下:

277 |

第一步:引入项目下面生成的 fontclass 代码:

278 |
<link rel="stylesheet" href="./iconfont.css">
279 | 
280 |

第二步:挑选相应图标并获取类名,应用于页面:

281 |
<span class="iconfont iconxxx"></span>
282 | 
283 |
284 |

" 285 | iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

286 |
287 |
288 |
289 |
290 |
    291 | 292 |
  • 293 | 296 |
    home
    297 |
    #iconhome
    298 |
  • 299 | 300 |
  • 301 | 304 |
    警告
    305 |
    #iconjinggao
    306 |
  • 307 | 308 |
  • 309 | 312 |
    添加
    313 |
    #icontianjia
    314 |
  • 315 | 316 |
  • 317 | 320 |
    close
    321 |
    #iconclose
    322 |
  • 323 | 324 |
  • 325 | 328 |
    user
    329 |
    #iconuser
    330 |
  • 331 | 332 |
  • 333 | 336 |
    edit
    337 |
    #iconedit
    338 |
  • 339 | 340 |
  • 341 | 344 |
    delete
    345 |
    #icondelete
    346 |
  • 347 | 348 |
  • 349 | 352 |
    align-left
    353 |
    #iconalign-left
    354 |
  • 355 | 356 |
  • 357 | 360 |
    plus
    361 |
    #iconplus
    362 |
  • 363 | 364 |
  • 365 | 368 |
    strore-add
    369 |
    #iconstrore-add
    370 |
  • 371 | 372 |
  • 373 | 376 |
    set
    377 |
    #iconset
    378 |
  • 379 | 380 |
  • 381 | 384 |
    book-edit
    385 |
    #iconbook-edit
    386 |
  • 387 | 388 |
389 |
390 |

Symbol 引用

391 |
392 | 393 |

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 394 | 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

395 |
    396 |
  • 支持多色图标了,不再受单色限制。
  • 397 |
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • 398 |
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • 399 |
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • 400 |
401 |

使用步骤如下:

402 |

第一步:引入项目下面生成的 symbol 代码:

403 |
<script src="./iconfont.js"></script>
404 | 
405 |

第二步:加入通用 CSS 代码(引入一次就行):

406 |
<style>
407 | .icon {
408 |   width: 1em;
409 |   height: 1em;
410 |   vertical-align: -0.15em;
411 |   fill: currentColor;
412 |   overflow: hidden;
413 | }
414 | </style>
415 | 
416 |

第三步:挑选相应图标并获取类名,应用于页面:

417 |
<svg class="icon" aria-hidden="true">
418 |   <use xlink:href="#icon-xxx"></use>
419 | </svg>
420 | 
421 |
422 |
423 | 424 |
425 |
426 | 445 | 446 | 447 | -------------------------------------------------------------------------------- /font_1614281/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face {font-family: "iconfont"; 2 | src: url('iconfont.eot?t=1579680559784'); /* IE9 */ 3 | src: url('iconfont.eot?t=1579680559784#iefix') format('embedded-opentype'), /* IE6-IE8 */ 4 | url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), 5 | url('iconfont.woff?t=1579680559784') format('woff'), 6 | url('iconfont.ttf?t=1579680559784') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ 7 | url('iconfont.svg?t=1579680559784#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family: "iconfont" !important; 12 | font-size: 16px; 13 | font-style: normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .iconhome:before { 19 | content: "\e600"; 20 | } 21 | 22 | .iconjinggao:before { 23 | content: "\e631"; 24 | } 25 | 26 | .icontianjia:before { 27 | content: "\e64b"; 28 | } 29 | 30 | .iconclose:before { 31 | content: "\e7e3"; 32 | } 33 | 34 | .iconuser:before { 35 | content: "\e7e7"; 36 | } 37 | 38 | .iconedit:before { 39 | content: "\e7e4"; 40 | } 41 | 42 | .icondelete:before { 43 | content: "\e7e5"; 44 | } 45 | 46 | .iconalign-left:before { 47 | content: "\e7e8"; 48 | } 49 | 50 | .iconplus:before { 51 | content: "\e7e6"; 52 | } 53 | 54 | .iconstrore-add:before { 55 | content: "\e7ea"; 56 | } 57 | 58 | .iconset:before { 59 | content: "\e7e9"; 60 | } 61 | 62 | .iconbook-edit:before { 63 | content: "\e7eb"; 64 | } 65 | 66 | -------------------------------------------------------------------------------- /font_1614281/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1614281/iconfont.eot -------------------------------------------------------------------------------- /font_1614281/iconfont.js: -------------------------------------------------------------------------------- 1 | !function(a){var c,o='',t=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var t=function(){document.removeEventListener("DOMContentLoaded",t,!1),c()};document.addEventListener("DOMContentLoaded",t,!1)}else document.attachEvent&&(e=c,s=a.document,i=!1,(o=function(){try{s.documentElement.doScroll("left")}catch(c){return void setTimeout(o,50)}l()})(),s.onreadystatechange=function(){"complete"==s.readyState&&(s.onreadystatechange=null,l())});function l(){i||(i=!0,e())}var e,s,i,o}(function(){var c,t,l,e,s,i;(c=document.createElement("div")).innerHTML=o,o=null,(t=c.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",l=t,(e=document.body).firstChild?(s=l,(i=e.firstChild).parentNode.insertBefore(s,i)):e.appendChild(l))})}(window); -------------------------------------------------------------------------------- /font_1614281/iconfont.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1614281", 3 | "name": "sou2", 4 | "font_family": "iconfont", 5 | "css_prefix_text": "icon", 6 | "description": "sou2 图标管理", 7 | "glyphs": [ 8 | { 9 | "icon_id": "1058864", 10 | "name": "home", 11 | "font_class": "home", 12 | "unicode": "e600", 13 | "unicode_decimal": 58880 14 | }, 15 | { 16 | "icon_id": "1618316", 17 | "name": "警告", 18 | "font_class": "jinggao", 19 | "unicode": "e631", 20 | "unicode_decimal": 58929 21 | }, 22 | { 23 | "icon_id": "5831309", 24 | "name": "添加", 25 | "font_class": "tianjia", 26 | "unicode": "e64b", 27 | "unicode_decimal": 58955 28 | }, 29 | { 30 | "icon_id": "12818648", 31 | "name": "close", 32 | "font_class": "close", 33 | "unicode": "e7e3", 34 | "unicode_decimal": 59363 35 | }, 36 | { 37 | "icon_id": "12818653", 38 | "name": "user", 39 | "font_class": "user", 40 | "unicode": "e7e7", 41 | "unicode_decimal": 59367 42 | }, 43 | { 44 | "icon_id": "12818654", 45 | "name": "edit", 46 | "font_class": "edit", 47 | "unicode": "e7e4", 48 | "unicode_decimal": 59364 49 | }, 50 | { 51 | "icon_id": "12818655", 52 | "name": "delete", 53 | "font_class": "delete", 54 | "unicode": "e7e5", 55 | "unicode_decimal": 59365 56 | }, 57 | { 58 | "icon_id": "12818659", 59 | "name": "align-left", 60 | "font_class": "align-left", 61 | "unicode": "e7e8", 62 | "unicode_decimal": 59368 63 | }, 64 | { 65 | "icon_id": "12818665", 66 | "name": "plus", 67 | "font_class": "plus", 68 | "unicode": "e7e6", 69 | "unicode_decimal": 59366 70 | }, 71 | { 72 | "icon_id": "12818673", 73 | "name": "strore-add", 74 | "font_class": "strore-add", 75 | "unicode": "e7ea", 76 | "unicode_decimal": 59370 77 | }, 78 | { 79 | "icon_id": "12818677", 80 | "name": "set", 81 | "font_class": "set", 82 | "unicode": "e7e9", 83 | "unicode_decimal": 59369 84 | }, 85 | { 86 | "icon_id": "12818679", 87 | "name": "book-edit", 88 | "font_class": "book-edit", 89 | "unicode": "e7eb", 90 | "unicode_decimal": 59371 91 | } 92 | ] 93 | } 94 | -------------------------------------------------------------------------------- /font_1614281/iconfont.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by iconfont 9 | 10 | 11 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /font_1614281/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1614281/iconfont.ttf -------------------------------------------------------------------------------- /font_1614281/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1614281/iconfont.woff -------------------------------------------------------------------------------- /font_1614281/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/font_1614281/iconfont.woff2 -------------------------------------------------------------------------------- /icon/Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/Logo.ico -------------------------------------------------------------------------------- /icon/baidu.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/baidu.ico -------------------------------------------------------------------------------- /icon/bilibili.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/bilibili.png -------------------------------------------------------------------------------- /icon/bing.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/bing.ico -------------------------------------------------------------------------------- /icon/btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /icon/btn2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /icon/doge_ico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/doge_ico.png -------------------------------------------------------------------------------- /icon/g.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 12 | 13 | 14 | 16 | 18 | 20 | 21 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /icon/github.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/github.ico -------------------------------------------------------------------------------- /icon/google_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/google_1.png -------------------------------------------------------------------------------- /icon/mijisou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/mijisou.png -------------------------------------------------------------------------------- /icon/right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /icon/scp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/scp.png -------------------------------------------------------------------------------- /icon/seeres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/seeres.png -------------------------------------------------------------------------------- /icon/shlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/shlogo.png -------------------------------------------------------------------------------- /icon/steam.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/steam.ico -------------------------------------------------------------------------------- /icon/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/user.png -------------------------------------------------------------------------------- /icon/v2ex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yeetime/sou2/e6cb48f66d6bae393940621c883236c75a4e7660/icon/v2ex.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Alone 导航 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
34 | 35 |
36 | 37 | 书签 38 | 39 | 设置 40 | 41 | 42 | 43 |
44 | 45 |
46 | 47 |
48 | 49 |
50 | 51 |
52 | 208 |
209 | 210 |
211 | 212 | 213 |
214 | 215 |
216 | 217 |
218 |
搜索引擎
219 |
220 |
221 | 222 | 223 | 224 | 225 | 235 | 236 | 237 | 238 | 239 | 249 | 250 |
百度 226 | 228 |   229 | 231 |   232 | 234 |
谷歌 240 | 242 |   243 | 245 |   246 | 248 |
251 |
252 |
253 | 255 | 257 |
258 | 285 |
286 |
287 | 288 | 289 |
290 |
快捷方式
291 |
292 |
293 | 294 | 295 | 296 | 297 | 306 | 307 | 308 | 309 | 310 | 319 | 320 |
1. 哔哩哔哩 298 | 301 |   302 | 305 |
2. 知乎 311 | 314 |   315 | 318 |
321 |
322 |
323 | 326 | 329 |
330 | 353 |
354 |
355 | 356 | 357 |
358 |
主题
359 |
360 |
361 | 362 | 363 |
364 |
365 |
366 | 367 | 368 |
369 |
壁纸
370 |
371 |
372 |
373 |
壁纸设置
374 |
375 |
376 | 默认 377 | 无 378 | 自定义 379 |
380 |
381 | 382 |
383 | 396 |
397 |
398 |
399 | 400 | 401 |
402 |
数据备份
403 |
404 |
405 | 406 | 407 | 408 |
409 |
410 |
411 | 412 |
413 | 414 |
415 | 416 | 424 |
425 | 426 |
427 | 428 |
429 | 430 | 431 | 432 |
433 |
434 | 435 | 436 | 437 | 438 |
439 | 446 | 447 | 473 |
474 | 506 |
507 |
508 | 509 |
510 |
511 | 冀ICP备2001****号 512 | | 513 | Made with by 514 | 515 | Yeetime 516 | 517 | 518 |
519 |
520 | 521 | 522 | 533 | 534 | -------------------------------------------------------------------------------- /js/jQuery.rTabs.js: -------------------------------------------------------------------------------- 1 | 2 | (function($){ 3 | 4 | $.fn.rTabs = function(options){ 5 | 6 | //默认值 7 | var defaultVal = { 8 | btnClass:'.j-tab-nav', /*按钮的父级Class*/ 9 | conClass:'.j-tab-con', /*内容的父级Class*/ 10 | bind:'hover', /*事件参数 click,hover*/ 11 | animation:'0', /*动画方向 left,up,fadein,0 为无动画*/ 12 | speed:300, /*动画运动速度*/ 13 | delay:200, /*Tab延迟速度*/ 14 | auto:false, /*是否开启自动运行 true,false*/ 15 | autoSpeed:3000 /*自动运行速度*/ 16 | }; 17 | 18 | //全局变量 19 | var obj = $.extend(defaultVal, options), 20 | evt = obj.bind, 21 | btn = $(this).find(obj.btnClass), 22 | con = $(this).find(obj.conClass), 23 | anim = obj.animation, 24 | conWidth = con.width(), 25 | conHeight = con.height(), 26 | len = con.children().length, 27 | sw = len * conWidth, 28 | sh = len * conHeight, 29 | i = 0, 30 | len,t,timer; 31 | 32 | return this.each(function(){ 33 | 34 | //判断动画方向 35 | function judgeAnim(){ 36 | var w = i * conWidth, 37 | h = i * conHeight; 38 | btn.children().removeClass('current').eq(i).addClass('current'); 39 | switch(anim){ 40 | case '0': 41 | con.children().hide().eq(i).show(); 42 | break; 43 | case 'left': 44 | con.css({position:'absolute',width:sw}).children().css({float:'left',display:'block'}).end().stop().animate({left:-w},obj.speed); 45 | break; 46 | case 'up': 47 | con.css({position:'absolute',height:sh}).children().css({display:'block'}).end().stop().animate({top:-h},obj.speed); 48 | break; 49 | case 'fadein': 50 | con.children().hide().eq(i).fadeIn(); 51 | break; 52 | } 53 | } 54 | 55 | //判断事件类型 56 | if(evt == "hover"){ 57 | btn.children().hover(function(){ 58 | var j = $(this).index(); 59 | function s(){ 60 | i = j; 61 | judgeAnim(); 62 | } 63 | timer=setTimeout(s,obj.delay); 64 | }, function(){ 65 | clearTimeout(timer); 66 | }) 67 | }else{ 68 | btn.children().bind(evt,function(){ 69 | i = $(this).index(); 70 | judgeAnim(); 71 | }) 72 | } 73 | 74 | //自动运行 75 | function startRun(){ 76 | t = setInterval(function(){ 77 | i++; 78 | if(i>=len){ 79 | switch(anim){ 80 | case 'left': 81 | con.stop().css({left:conWidth}); 82 | break; 83 | case 'up': 84 | con.stop().css({top:conHeight}); 85 | } 86 | i=0; 87 | } 88 | judgeAnim(); 89 | },obj.autoSpeed) 90 | } 91 | 92 | //如果自动运行开启,调用自动运行函数 93 | if(obj.auto){ 94 | $(this).hover(function(){ 95 | clearInterval(t); 96 | },function(){ 97 | startRun(); 98 | }) 99 | startRun(); 100 | } 101 | 102 | }) 103 | 104 | } 105 | 106 | })(jQuery); -------------------------------------------------------------------------------- /js/js.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * JavaScript Cookie v2.2.1 3 | * https://github.com/js-cookie/js-cookie 4 | * 5 | * Copyright 2006, 2015 Klaus Hartl & Fagner Brack 6 | * Released under the MIT license 7 | */ 8 | ;(function (factory) { 9 | var registeredInModuleLoader; 10 | if (typeof define === 'function' && define.amd) { 11 | define(factory); 12 | registeredInModuleLoader = true; 13 | } 14 | if (typeof exports === 'object') { 15 | module.exports = factory(); 16 | registeredInModuleLoader = true; 17 | } 18 | if (!registeredInModuleLoader) { 19 | var OldCookies = window.Cookies; 20 | var api = window.Cookies = factory(); 21 | api.noConflict = function () { 22 | window.Cookies = OldCookies; 23 | return api; 24 | }; 25 | } 26 | }(function () { 27 | function extend () { 28 | var i = 0; 29 | var result = {}; 30 | for (; i < arguments.length; i++) { 31 | var attributes = arguments[ i ]; 32 | for (var key in attributes) { 33 | result[key] = attributes[key]; 34 | } 35 | } 36 | return result; 37 | } 38 | 39 | function decode (s) { 40 | return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent); 41 | } 42 | 43 | function init (converter) { 44 | function api() {} 45 | 46 | function set (key, value, attributes) { 47 | if (typeof document === 'undefined') { 48 | return; 49 | } 50 | 51 | attributes = extend({ 52 | path: '/' 53 | }, api.defaults, attributes); 54 | 55 | if (typeof attributes.expires === 'number') { 56 | attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5); 57 | } 58 | 59 | // We're using "expires" because "max-age" is not supported by IE 60 | attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; 61 | 62 | try { 63 | var result = JSON.stringify(value); 64 | if (/^[\{\[]/.test(result)) { 65 | value = result; 66 | } 67 | } catch (e) {} 68 | 69 | value = converter.write ? 70 | converter.write(value, key) : 71 | encodeURIComponent(String(value)) 72 | .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); 73 | 74 | key = encodeURIComponent(String(key)) 75 | .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent) 76 | .replace(/[\(\)]/g, escape); 77 | 78 | var stringifiedAttributes = ''; 79 | for (var attributeName in attributes) { 80 | if (!attributes[attributeName]) { 81 | continue; 82 | } 83 | stringifiedAttributes += '; ' + attributeName; 84 | if (attributes[attributeName] === true) { 85 | continue; 86 | } 87 | 88 | // Considers RFC 6265 section 5.2: 89 | // ... 90 | // 3. If the remaining unparsed-attributes contains a %x3B (";") 91 | // character: 92 | // Consume the characters of the unparsed-attributes up to, 93 | // not including, the first %x3B (";") character. 94 | // ... 95 | stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; 96 | } 97 | 98 | return (document.cookie = key + '=' + value + stringifiedAttributes); 99 | } 100 | 101 | function get (key, json) { 102 | if (typeof document === 'undefined') { 103 | return; 104 | } 105 | 106 | var jar = {}; 107 | // To prevent the for loop in the first place assign an empty array 108 | // in case there are no cookies at all. 109 | var cookies = document.cookie ? document.cookie.split('; ') : []; 110 | var i = 0; 111 | 112 | for (; i < cookies.length; i++) { 113 | var parts = cookies[i].split('='); 114 | var cookie = parts.slice(1).join('='); 115 | 116 | if (!json && cookie.charAt(0) === '"') { 117 | cookie = cookie.slice(1, -1); 118 | } 119 | 120 | try { 121 | var name = decode(parts[0]); 122 | cookie = (converter.read || converter)(cookie, name) || 123 | decode(cookie); 124 | 125 | if (json) { 126 | try { 127 | cookie = JSON.parse(cookie); 128 | } catch (e) {} 129 | } 130 | 131 | jar[name] = cookie; 132 | 133 | if (key === name) { 134 | break; 135 | } 136 | } catch (e) {} 137 | } 138 | 139 | return key ? jar[key] : jar; 140 | } 141 | 142 | api.set = set; 143 | api.get = function (key) { 144 | return get(key, false /* read as raw */); 145 | }; 146 | api.getJSON = function (key) { 147 | return get(key, true /* read as json */); 148 | }; 149 | api.remove = function (key, attributes) { 150 | set(key, '', extend(attributes, { 151 | expires: -1 152 | })); 153 | }; 154 | 155 | api.defaults = {}; 156 | 157 | api.withConverter = init; 158 | 159 | return api; 160 | } 161 | 162 | return init(function () {}); 163 | })); 164 | -------------------------------------------------------------------------------- /js/sou.js: -------------------------------------------------------------------------------- 1 | /* 2 | 作者:D.Young 3 | 主页:https://yyv.me/ 4 | github:https://github.com/5iux/sou 5 | 日期:2019-07-26 6 | 版权所有,请勿删除 7 | ❶❷❸❹❺❻❼❽❾❿ 8 | 由 yeetime 修改 9 | github:https://github.com/yeetime/sou2 10 | 日期:2019-12-13 11 | */ 12 | 13 | // 搜索引擎列表【预设】 14 | var se_list_preinstall = { 15 | '1': { 16 | id: 1, 17 | title: "百度", 18 | url: "https://www.baidu.com/s", 19 | name: "wd", 20 | img: "./icon/baidu.ico", 21 | }, 22 | '2': { 23 | id: 2, 24 | title: "谷歌", 25 | url: "https://www.google.com/search", 26 | name: "q", 27 | img: "./icon/google_1.png", 28 | }, 29 | '3': { 30 | id: 3, 31 | title: "必应", 32 | url: "https://cn.bing.com/search", 33 | name: "q", 34 | img: "./icon/bing.ico", 35 | } 36 | }; 37 | 38 | // 主页快捷方式【预设】 39 | var quick_list_preinstall = { 40 | '1': { 41 | title: "哔哩哔哩", 42 | url: "https://www.bilibili.com/", 43 | img: "./icon/bilibili.png", 44 | explain: "哔哩哔哩 (゜-゜)つロ 干杯~", 45 | }, 46 | '2': { 47 | title: "GitHub", 48 | url: "https://github.com/", 49 | img: "./icon/github.ico", 50 | explain: "GitHub", 51 | }, 52 | '3': { 53 | title: "V2EX", 54 | url: "https://www.v2ex.com/", 55 | img: "./icon/v2ex.png", 56 | explain: "V2EX", 57 | }, 58 | '4': { 59 | title: "Steam", 60 | url: "https://store.steampowered.com/", 61 | img: "./icon/steam.ico", 62 | explain: "Steam", 63 | }, 64 | '5': { 65 | title: "scp基金会", 66 | url: "http://scp-wiki-cn.wikidot.com/", 67 | img: "./icon/scp.png", 68 | explain: "控制,收容,保护", 69 | }, 70 | }; 71 | 72 | // 主题方案【预设】 73 | var themes_preinstall = { 74 | '1': { 75 | 'name': 'light',// 主题名称 76 | 'bg': "#f5f5f5",// 背景色 77 | 'pop_bg': "#ffffff",// 弹窗背景色 78 | 'shadow': "#d8d7d7",// 阴影 79 | 'bottom_bg': "#ddd",// 按钮背景 80 | //'top_bg': "#2299ff",// 高亮 81 | 'text_color': "#777777",// 文本颜色 82 | 'bg_img': "",//背景图片 83 | }, 84 | '2': { 85 | 'name': 'darcula', 86 | 'bg': "#2b2b2b", 87 | 'pop_bg': "#3c3f41", 88 | 'shadow': "#211f1f", 89 | 'bottom_bg': "#4c5052", 90 | //'top_bg': "#365880",// 高亮 91 | 'text_color': "#bbbbbb", 92 | 'bg_img': "",//背景图片 93 | }, 94 | }; 95 | 96 | //背景图片 97 | var bg_img_preinstall = { 98 | "type" : "3",// 1:使用主题默认的背景图片、2:关闭背景图片、3:使用自定义的背景图片 99 | "path" : "https://cdn.jsdelivr.net/gh/yeetime/img/20200627173550.png",//背景图片 100 | }; 101 | 102 | // 获取背景图片 103 | function getBgImg() { 104 | var bg_img_local = Cookies.get('bg_img'); 105 | if (bg_img_local && bg_img_local !== "{}") { 106 | return JSON.parse(bg_img_local); 107 | } else { 108 | setBgImg(bg_img_preinstall); 109 | return bg_img_preinstall; 110 | } 111 | } 112 | 113 | // 设置背景图片 114 | function setBgImg(bg_img){ 115 | if (bg_img) { 116 | Cookies.set('bg_img', bg_img, {expires: 36500}); 117 | return true; 118 | } 119 | return false; 120 | } 121 | 122 | // 设置-壁纸 123 | function setBgImgInit() { 124 | var bg_img = getBgImg(); 125 | $("input[name='wallpaper-type'][value="+bg_img["type"]+"]").click(); 126 | if (bg_img["type"] === "3") { 127 | $("#wallpaper-url").val(bg_img["path"]); 128 | $("#wallpaper_url").show(); 129 | } else { 130 | $("#wallpaper_url").hide(); 131 | } 132 | } 133 | 134 | // 获取搜索引擎列表 135 | function getSeList() { 136 | var se_list_local = Cookies.get('se_list'); 137 | if (se_list_local !== "{}" && se_list_local) { 138 | return JSON.parse(se_list_local); 139 | } else { 140 | setSeList(se_list_preinstall); 141 | return se_list_preinstall; 142 | } 143 | } 144 | 145 | // 设置搜索引擎列表 146 | function setSeList(se_list) { 147 | if (se_list) { 148 | Cookies.set('se_list', se_list, {expires: 36500}); 149 | return true; 150 | } 151 | return false; 152 | } 153 | 154 | // 获得默认搜索引擎 155 | function getSeDefault() { 156 | var se_default = Cookies.get('se_default'); 157 | return se_default ? se_default : "1"; 158 | } 159 | 160 | // 主题初始化 161 | function themesInit() { 162 | var bg_img = getBgImg(); 163 | var themes = getThemes(); 164 | var key = getThemesDefault(); 165 | var theme = themes[key]; 166 | 167 | switch (bg_img["type"]) { 168 | case "1": 169 | if (theme["bg_img"]) { 170 | $("body").css("background-image", "url(\"" + theme["bg_img"] +"\")");//主题图片 171 | } else { 172 | $("body").css("background-image", "none");//无 173 | } 174 | break; 175 | case "2": 176 | $("body").css("background-image", "none");//无 177 | break; 178 | case "3": 179 | $("body").css("background-image", "url(\"" + bg_img["path"] +"\")");//自定义 180 | break; 181 | } 182 | 183 | $("body").css("background-color", theme["bg"]);//主页背景 184 | $(".con .sou form .wd").css({ 185 | "border": "1px solid " + theme["bottom_bg"], 186 | "color": theme["text_color"], 187 | });//输入框 188 | $(".search-engine").css({ 189 | "background-color": theme["pop_bg"], 190 | "box-shadow": "0 5px 20px 0 " + theme["shadow"], 191 | });//搜索引擎选择弹窗 192 | $("#keywords").css({ 193 | "background-color": theme["pop_bg"], 194 | "box-shadow": "0 5px 20px 0 " + theme["shadow"], 195 | "color": theme["text_color"] 196 | });//关键字提示弹窗 197 | $(".search-engine-list .se-li").css({ 198 | "background-color": theme["bottom_bg"], 199 | "color": theme["text_color"], 200 | });//搜索引擎选择弹窗里的按钮 201 | $(".search-engine-tip").css({ 202 | "border-bottom": "8px solid " + theme["pop_bg"], 203 | });//搜索引擎选择弹窗上的箭头 204 | $(".quick").css({"background-color": theme["bottom_bg"]});//快捷方式 205 | $(".quick a").css({"color": theme["text_color"]});//快捷方式 文本 206 | $(".foot").css({"color": theme["text_color"]});//底部 文本 207 | } 208 | 209 | // 获取默认主题 210 | function getThemesDefault() { 211 | var theme_default = Cookies.get('theme_default'); 212 | return theme_default ? theme_default : "1"; 213 | } 214 | 215 | // 修改默认主题 216 | function setThemesDefault(key) { 217 | Cookies.set('theme_default', key, {expires: 36500}); 218 | return true; 219 | } 220 | 221 | // 获取主题方案列表 222 | function getThemes() { 223 | var themes = Cookies.get('themes'); 224 | if (themes && themes !== "{}") { 225 | return JSON.parse(themes); 226 | } else { 227 | setThemes(themes_preinstall); 228 | return themes_preinstall; 229 | } 230 | } 231 | 232 | // 设置主题列表 Cookies 233 | function setThemes(themes) { 234 | if (themes) { 235 | Cookies.set('themes', themes, {expires: 36500}); 236 | return true; 237 | } 238 | return false; 239 | } 240 | 241 | // 设置-主题方案列表加载 242 | function setThemesInit() { 243 | var html = ""; 244 | var themes = getThemes(); 245 | var theme_default = getThemesDefault(); 246 | 247 | for (var i in themes) { 248 | if (i === theme_default) { 249 | //html += ""; 250 | html += ""; 251 | } else { 252 | html += ""; 253 | } 254 | } 255 | $("#themes").html(html); 256 | } 257 | 258 | // 搜索框高亮 259 | function focusWd() { 260 | var themes = getThemes(); 261 | var key = getThemesDefault(); 262 | var theme = themes[key]; 263 | 264 | $(".wd").css({ 265 | "background-color": theme["pop_bg"], 266 | "box-shadow": "0 1px 6px 0 " + theme["shadow"], 267 | });//输入框 268 | } 269 | 270 | // 搜索框取消高亮 271 | function blurWd() { 272 | $(".wd").css({ 273 | "background-color": "", 274 | "box-shadow": "", 275 | });//输入框 276 | } 277 | 278 | // 关键字提示 279 | function keywordReminder() { 280 | var keyword = $(".wd").val(); 281 | if (keyword != "") { 282 | $.ajax({ 283 | url: 'https://suggestion.baidu.com/su?wd=' + keyword, 284 | dataType: 'jsonp', 285 | jsonp: 'cb', //回调函数的参数名(键值)key 286 | success: function (data) { 287 | $("#keywords").empty().show(); 288 | $.each(data.s, function (i, val) { 289 | $('#keywords').append("
  • " + val + "
  • "); 290 | }); 291 | $("#keywords").attr("data-length", data.s["length"]); 292 | }, 293 | error: function () { 294 | $("#keywords").empty().show(); 295 | $("#keywords").hide(); 296 | } 297 | }) 298 | } else { 299 | $("#keywords").empty().show(); 300 | $("#keywords").hide(); 301 | } 302 | } 303 | 304 | // 搜索框数据加载 305 | function searchData() { 306 | var se_default = getSeDefault(); 307 | var se_list = getSeList(); 308 | var defaultSe = se_list[se_default]; 309 | if (defaultSe) { 310 | $(".search").attr("action", defaultSe["url"]); 311 | $(".se").attr("src", defaultSe["img"]); 312 | $(".wd").attr("name", defaultSe["name"]); 313 | } 314 | 315 | // 判断窗口大小,添加输入框自动完成 316 | var wid = $("body").width(); 317 | if (wid < 640) { 318 | $(".wd").attr('autocomplete', 'off'); 319 | } else { 320 | $(".wd").focus(); 321 | focusWd(); 322 | } 323 | } 324 | 325 | // 搜索引擎列表加载 326 | function seList() { 327 | var html = ""; 328 | var se_list = getSeList(); 329 | for (var i in se_list) { 330 | html += "
  • " + se_list[i]["title"] + "
  • "; 331 | } 332 | $(".search-engine-list").html(html); 333 | } 334 | 335 | // 设置-搜索引擎列表加载 336 | function setSeInit() { 337 | var se_default = getSeDefault(); 338 | var se_list = getSeList(); 339 | var html = ""; 340 | for (var i in se_list) { 341 | var tr = ""; 342 | if (i === se_default) { 343 | tr = ""; 344 | } 345 | tr += "" + i + ". " + se_list[i]["title"] + " "; 346 | html += tr; 347 | } 348 | $(".se_list_table").html(html); 349 | } 350 | 351 | // 获取快捷方式列表 352 | function getQuickList() { 353 | var quick_list_local = Cookies.get('quick_list'); 354 | if (quick_list_local !== "{}" && quick_list_local) { 355 | return JSON.parse(quick_list_local); 356 | } else { 357 | setQuickList(quick_list_preinstall); 358 | return quick_list_preinstall; 359 | } 360 | } 361 | 362 | // 设置快捷方式列表 363 | function setQuickList(quick_list) { 364 | if (quick_list) { 365 | Cookies.set('quick_list', quick_list, {expires: 36500}); 366 | return true; 367 | } 368 | return false; 369 | } 370 | 371 | // 快捷方式数据加载 372 | function quickData() { 373 | var html = ""; 374 | var quick_list = getQuickList(); 375 | for (var i in quick_list) { 376 | html += "
  • \ 377 | \ 378 | \ 379 | " + quick_list[i]['title'] + "\ 380 | \ 381 |
  • "; 382 | } 383 | $(".quick-ul").html(html); 384 | } 385 | 386 | // 设置-快捷方式加载 387 | function setQuickInit() { 388 | 389 | var quick_list = getQuickList(); 390 | var html = ""; 391 | for (var i in quick_list) { 392 | tr = "\ 393 | " + i + ". \ 394 | " + quick_list[i]['title'] + "\ 395 | \ 396 | \ 397 |  \ 398 | \ 399 | \ 400 | "; 401 | html += tr; 402 | } 403 | $(".quick_list_table").html(html); 404 | } 405 | 406 | /** 407 | * 下載文本为文件 408 | * @param filename 文件名 409 | * @param text 内容 410 | */ 411 | function download(filename, text) { 412 | var element = document.createElement('a'); 413 | element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 414 | element.setAttribute('download', filename); 415 | 416 | element.style.display = 'none'; 417 | document.body.appendChild(element); 418 | 419 | element.click(); 420 | 421 | document.body.removeChild(element); 422 | } 423 | 424 | // 侧边栏打开 425 | function openSide() { 426 | $("#menu").addClass('on'); 427 | $(".side").removeClass('closed'); 428 | } 429 | 430 | // 侧边栏关闭 431 | function closeSide() { 432 | $("#menu").removeClass('on'); 433 | $(".side").addClass('closed'); 434 | 435 | // 刷新主页数据 436 | seList(); 437 | quickData(); 438 | themesInit(); 439 | } 440 | 441 | $(document).ready(function () { 442 | 443 | // 搜索框数据加载 444 | searchData(); 445 | 446 | // 搜索引擎列表加载 447 | seList(); 448 | 449 | // 快捷方式数据加载 450 | quickData(); 451 | 452 | // 主题初始化(必须在页面元素都加载完成后再加载主题,每当页面元素改变时都应进行主题初始化) 453 | themesInit(); 454 | 455 | // 点击事件 456 | $(document).on('click', function (e) { 457 | // 选择搜索引擎点击 458 | if ($(".search-engine").is(":hidden") && $(".se").is(e.target)) { 459 | if ($(".se").is(e.target)) { 460 | $(".search-engine").show(); 461 | } 462 | } else { 463 | if (!$(".search-engine").is(e.target) && $(".search-engine").has(e.target).length === 0) { 464 | $(".search-engine").hide(); 465 | } 466 | } 467 | 468 | // 自动提示隐藏 469 | if (!$(".sou").is(e.target) && $(".sou").has(e.target).length === 0) { 470 | $("#keywords").hide(); 471 | } 472 | 473 | }); 474 | 475 | // 搜索引擎列表点击 476 | $(".search-engine-list").on("click", ".se-li", function () { 477 | var url = $(this).attr('data-url'); 478 | var name = $(this).attr('data-name'); 479 | var img = $(this).attr('data-img'); 480 | $(".search").attr("action", url); 481 | $(".wd").attr("name", name); 482 | $(".se").attr("src", img); 483 | $(".search-engine").hide(); 484 | }); 485 | 486 | // 搜索框获得焦点事件 487 | $(".wd").focus(function () { 488 | focusWd(); 489 | keywordReminder(); 490 | }); 491 | 492 | // 搜索框失去焦点事件 493 | $(".wd").blur(function () { 494 | blurWd(); 495 | }); 496 | 497 | // 自动提示( 调用百度 api ) 498 | $('.wd').keyup(function(event) { 499 | var key = event.keyCode; 500 | // 屏蔽上下键 501 | var shieldKey = [38, 40]; 502 | if (shieldKey.includes(key)) return; 503 | keywordReminder(); 504 | }); 505 | 506 | // 点击自动提示的关键字 507 | $("#keywords").on("click", "li", function () { 508 | var wd = $(this).text(); 509 | $(".wd").val(wd); 510 | $(".search").submit(); 511 | }); 512 | 513 | // 自动提示键盘方向键选择操作 514 | $(".wd").keydown(function (event) {//上下键获取焦点 515 | var key = event.keyCode; 516 | if ($.trim($(this).val()).length === 0) return; 517 | 518 | var id = $(".keyword-active").attr("data-id"); 519 | if (id === undefined) id = 0; 520 | 521 | if (key === 38) { /*向上按钮*/ 522 | id--; 523 | } else if (key === 40) {/*向下按钮*/ 524 | id++; 525 | } else { 526 | return; 527 | } 528 | var length = $("#keywords").attr("data-length"); 529 | if (id > length) id = 1; 530 | if (id < 1) id = length; 531 | 532 | $(".keyword[data-id=" + id + "]").addClass("keyword-active").siblings().removeClass("keyword-active"); 533 | $(".wd").val($(".keyword[data-id=" + id + "]").text()); 534 | }); 535 | 536 | // 菜单点击 537 | $("#menu").click(function (event) { 538 | if ($(this).attr("class") === "on") { 539 | closeSide(); 540 | } else { 541 | openSide(); 542 | 543 | // 设置内容加载 544 | setSeInit();//搜索引擎设置 545 | setQuickInit();//快捷方式设置 546 | setThemesInit();//主题方案 547 | setBgImgInit();//壁纸 548 | } 549 | }); 550 | $("#content").click(function (event) { 551 | if ($("#menu").attr("class") === "on") { 552 | closeSide(); 553 | } 554 | // 关闭关键字提示 555 | // $("#keywords").hide(); 556 | }); 557 | 558 | // 侧栏标签卡切换 559 | $(".side").rTabs({ 560 | bind: 'click', 561 | animation: 'left' 562 | }); 563 | 564 | // 修改默认搜索引擎 565 | $(".se_list_table").on("click", ".set_se_default", function () { 566 | var name = $(this).val(); 567 | Cookies.set('se_default', name, {expires: 36500}); 568 | setSeInit(); 569 | }); 570 | 571 | // 搜索引擎添加 572 | $(".set_se_list_add").click(function () { 573 | $(".se_add_content input").val(""); 574 | $(".se_add_content").show(); 575 | }); 576 | 577 | // 搜索引擎保存 578 | $(".se_add_save").click(function () { 579 | var key_inhere = $(".se_add_content input[name='key_inhere']").val(); 580 | var key = $(".se_add_content input[name='key']").val(); 581 | var title = $(".se_add_content input[name='title']").val(); 582 | var url = $(".se_add_content input[name='url']").val(); 583 | var name = $(".se_add_content input[name='name']").val(); 584 | var img = $(".se_add_content input[name='img']").val(); 585 | 586 | var num = /^\+?[1-9][0-9]*$/; 587 | if (!num.test(key)) { 588 | alert("顺序:" + key + " 不是正数数!"); 589 | return; 590 | } 591 | 592 | var se_list = getSeList(); 593 | 594 | if (se_list[key]) { 595 | alert("顺序:" + key + " 已有数据,不可用"); 596 | return; 597 | } 598 | 599 | if (key_inhere && key !== key_inhere) { 600 | delete se_list[key_inhere]; 601 | } 602 | 603 | se_list[key] = { 604 | title: title, 605 | url: url, 606 | name: name, 607 | img: img, 608 | }; 609 | setSeList(se_list); 610 | setSeInit(); 611 | $(".se_add_content").hide(); 612 | }); 613 | 614 | // 关闭表单 615 | $(".se_add_cancel").click(function () { 616 | $(".se_add_content").hide(); 617 | }); 618 | 619 | // 搜索引擎修改 620 | $(".se_list").on("click", ".edit_se", function () { 621 | 622 | var se_list = getSeList(); 623 | var key = $(this).val(); 624 | $(".se_add_content input[name='key_inhere']").val(key); 625 | $(".se_add_content input[name='key']").val(key); 626 | $(".se_add_content input[name='title']").val(se_list[key]["title"]); 627 | $(".se_add_content input[name='url']").val(se_list[key]["url"]); 628 | $(".se_add_content input[name='name']").val(se_list[key]["name"]); 629 | $(".se_add_content input[name='img']").val(se_list[key]["img"]); 630 | 631 | $(".se_add_content").show(); 632 | }); 633 | 634 | // 搜索引擎删除 635 | $(".se_list").on("click", ".delete_se", function () { 636 | var se_default = getSeDefault(); 637 | var key = $(this).val(); 638 | if (key == se_default) { 639 | alert("默认搜索引擎不可删除!"); 640 | } else { 641 | var r = confirm("顺序 " + key + " 是否删除!"); 642 | if (r) { 643 | var se_list = getSeList(); 644 | delete se_list[key]; 645 | setSeList(se_list); 646 | setSeInit(); 647 | } 648 | } 649 | }); 650 | 651 | // 恢复预设搜索引擎 652 | $(".set_se_list_preinstall").click(function () { 653 | var r = confirm("现有设置和数据将被清空!"); 654 | if (r) { 655 | setSeList(se_list_preinstall); 656 | Cookies.set('se_default', 1, {expires: 36500}); 657 | setSeInit(); 658 | } 659 | }); 660 | 661 | // 设置-快捷方式添加 662 | $(".set_quick_list_add").click(function () { 663 | $(".quick_add_content input").val(""); 664 | $(".quick_add_content").show(); 665 | }); 666 | 667 | // 设置-快捷方式保存 668 | $(".quick_add_save").click(function () { 669 | var key_inhere = $(".quick_add_content input[name='key_inhere']").val(); 670 | var key = $(".quick_add_content input[name='key']").val(); 671 | var title = $(".quick_add_content input[name='title']").val(); 672 | var url = $(".quick_add_content input[name='url']").val(); 673 | var img = $(".quick_add_content input[name='img']").val(); 674 | 675 | var num = /^\+?[1-9][0-9]*$/; 676 | if (!num.test(key)) { 677 | alert("顺序:" + key + " 不是正数数!"); 678 | return; 679 | } 680 | 681 | var quick_list = getQuickList(); 682 | 683 | // if (quick_list[key]) { 684 | // alert("顺序:" + key + " 已有数据,不可用"); 685 | // return; 686 | // } 687 | 688 | if (key_inhere && key != key_inhere) { 689 | delete quick_list[key_inhere]; 690 | } 691 | 692 | quick_list[key] = { 693 | title: title, 694 | url: url, 695 | img: img, 696 | }; 697 | setQuickList(quick_list); 698 | setQuickInit(); 699 | $(".quick_add_content").hide(); 700 | }); 701 | 702 | // 设置-快捷方式关闭添加表单 703 | $(".quick_add_cancel").click(function () { 704 | $(".quick_add_content").hide(); 705 | }); 706 | 707 | //恢复预设快捷方式 708 | $(".set_quick_list_preinstall").click(function () { 709 | var r = confirm("现有设置和数据将被清空!"); 710 | if (r) { 711 | setQuickList(quick_list_preinstall); 712 | setQuickInit(); 713 | } 714 | }); 715 | 716 | // 快捷方式修改 717 | $(".quick_list").on("click", ".edit_quick", function () { 718 | 719 | var quick_list = getQuickList(); 720 | var key = $(this).val(); 721 | $(".quick_add_content input[name='key_inhere']").val(key); 722 | $(".quick_add_content input[name='key']").val(key); 723 | $(".quick_add_content input[name='title']").val(quick_list[key]["title"]); 724 | $(".quick_add_content input[name='url']").val(quick_list[key]["url"]); 725 | $(".quick_add_content input[name='img']").val(quick_list[key]["img"]); 726 | 727 | $(".quick_add_content").show(); 728 | }); 729 | 730 | // 快捷方式删除 731 | $(".quick_list").on("click", ".delete_quick", function () { 732 | 733 | var key = $(this).val(); 734 | 735 | var r = confirm("顺序 " + key + " 是否删除!"); 736 | if (r) { 737 | var quick_list = getQuickList(); 738 | delete quick_list[key]; 739 | setQuickList(quick_list); 740 | setQuickInit(); 741 | } 742 | }); 743 | 744 | // 主题切换 745 | $("#themes").on("click", ".set-theme", function () { 746 | var key = $(this).attr("data-id"); 747 | setThemesDefault(key); 748 | setThemesInit(); 749 | }); 750 | 751 | // 壁纸设置 752 | $("#wallpaper").on("click", ".set-wallpaper", function () { 753 | var type = $(this).val(); 754 | var bg_img = getBgImg(); 755 | 756 | if (type === "3") { 757 | $("#wallpaper_url").show(); 758 | $("#wallpaper-url").val(bg_img["path"]); 759 | } else { 760 | $("#wallpaper_url").hide(); 761 | } 762 | bg_img["type"] = type; 763 | setBgImg(bg_img); 764 | }); 765 | 766 | // 壁纸自定义 767 | $(".wallpaper-submit").click(function () { 768 | var url = $("#wallpaper-url").val(); 769 | var bg_img = getBgImg(); 770 | bg_img["type"] = "3"; 771 | bg_img["path"] = url; 772 | setBgImg(bg_img); 773 | }); 774 | 775 | // 我的数据导出 776 | $("#my_data_out").click(function () { 777 | var cookies = Cookies.get(); 778 | var json = JSON.stringify(cookies); 779 | download("back-up-" + $.now() + ".json", json); 780 | }); 781 | 782 | // 我的数据导入 点击触发文件选择 783 | $("#my_data_in").click(function () { 784 | $("#my_data_file").click(); 785 | }); 786 | 787 | // 选择文件后读取文件内容 788 | $("#my_data_file").change(function () { 789 | var selectedFile = document.getElementById('my_data_file').files[0]; 790 | //var name = selectedFile.name;//读取选中文件的文件名 791 | //var size = selectedFile.size;//读取选中文件的大小 792 | //console.log("文件名:"+name+" 大小:"+size); 793 | 794 | var reader = new FileReader();//这是核心,读取操作就是由它完成. 795 | reader.readAsText(selectedFile);//读取文件的内容,也可以读取文件的URL 796 | reader.onload = function () { 797 | //当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可 798 | //console.log(this.result); 799 | 800 | // json 格式校验 801 | var mydata; 802 | try { 803 | mydata = JSON.parse(this.result); 804 | } catch (e) { 805 | alert("数据解析异常"); 806 | return; 807 | } 808 | if (typeof mydata != 'object') { 809 | alert("数据格式错误"); 810 | return; 811 | } 812 | 813 | if (confirm("当前数据将被覆盖!是否继续导入?")) { 814 | for(var key in mydata) { 815 | Cookies.set(key, mydata[key], {expires: 36500}); 816 | } 817 | alert("导入成功"); 818 | } 819 | } 820 | }); 821 | }); 822 | --------------------------------------------------------------------------------