├── 表单登录注册特效 ├── img │ ├── bg.jpg │ └── icon_light.f13cff3.png ├── 表单登录注册特效.zip ├── css │ ├── jigsaw.css │ └── styles.css ├── index.html └── js │ └── jigsaw.js ├── jQuery简易的图片无缝滚动代码 └── jQuery简易的图片无缝滚动代码.zip ├── jQuery选项卡图片滚动切换代码 └── jQuery选项卡图片滚动切换代码.zip ├── jquery课程项目TAB选项卡切换布局代码 └── jquery课程项目TAB选项卡切换布局代码.zip ├── jQuery商城系统开发网站下拉导航和图片布局代码 └── jQuery商城系统开发网站下拉导航和图片布局代码.zip ├── jQuery carousel图片叠加旋转木马轮播切换效果 └── jQuery carousel图片叠加旋转木马轮播切换效果.zip ├── 按钮悬停动画 └── 按钮悬停动画.html ├── 搜索栏特效 └── 搜索栏特效.html ├── 鼠标跟随 └── 鼠标跟随.html ├── 烟花帆布 └── 烟花帆布.html ├── 粒子文字 └── 粒子文字.html ├── 卡片翻转 └── 卡片翻转.html ├── 汉堡菜单 └── 汉堡菜单.html ├── 轮播图 └── 轮播图.html ├── 发火光文字 └── 1.html ├── 五彩纸屑射击 └── 五彩纸屑射击.html └── 图片滑动预览 └── 图片滑动预览.html /表单登录注册特效/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/表单登录注册特效/img/bg.jpg -------------------------------------------------------------------------------- /表单登录注册特效/表单登录注册特效.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/表单登录注册特效/表单登录注册特效.zip -------------------------------------------------------------------------------- /表单登录注册特效/img/icon_light.f13cff3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/表单登录注册特效/img/icon_light.f13cff3.png -------------------------------------------------------------------------------- /jQuery简易的图片无缝滚动代码/jQuery简易的图片无缝滚动代码.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/jQuery简易的图片无缝滚动代码/jQuery简易的图片无缝滚动代码.zip -------------------------------------------------------------------------------- /jQuery选项卡图片滚动切换代码/jQuery选项卡图片滚动切换代码.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/jQuery选项卡图片滚动切换代码/jQuery选项卡图片滚动切换代码.zip -------------------------------------------------------------------------------- /jquery课程项目TAB选项卡切换布局代码/jquery课程项目TAB选项卡切换布局代码.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/jquery课程项目TAB选项卡切换布局代码/jquery课程项目TAB选项卡切换布局代码.zip -------------------------------------------------------------------------------- /jQuery商城系统开发网站下拉导航和图片布局代码/jQuery商城系统开发网站下拉导航和图片布局代码.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/jQuery商城系统开发网站下拉导航和图片布局代码/jQuery商城系统开发网站下拉导航和图片布局代码.zip -------------------------------------------------------------------------------- /jQuery carousel图片叠加旋转木马轮播切换效果/jQuery carousel图片叠加旋转木马轮播切换效果.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentIT/jQuery-/HEAD/jQuery carousel图片叠加旋转木马轮播切换效果/jQuery carousel图片叠加旋转木马轮播切换效果.zip -------------------------------------------------------------------------------- /按钮悬停动画/按钮悬停动画.html: -------------------------------------------------------------------------------- 1 | 59 | 60 |
61 | 62 | 63 | 64 | 65 |
-------------------------------------------------------------------------------- /表单登录注册特效/css/jigsaw.css: -------------------------------------------------------------------------------- 1 | .block { 2 | position: absolute; 3 | left: 0; 4 | top: 0; 5 | } 6 | 7 | .sliderContainer { 8 | position: relative; 9 | text-align: center; 10 | width: 310px; 11 | height: 40px; 12 | line-height: 40px; 13 | margin-top: 15px; 14 | background: #f7f9fa; 15 | color: #45494c; 16 | border: 1px solid #e4e7eb; 17 | } 18 | 19 | .sliderContainer_active .slider { 20 | height: 38px; 21 | top: -1px; 22 | border: 1px solid #1991FA; 23 | } 24 | 25 | .sliderContainer_active .sliderMask { 26 | height: 38px; 27 | border-width: 1px; 28 | } 29 | 30 | .sliderContainer_success .slider { 31 | height: 38px; 32 | top: -1px; 33 | border: 1px solid #52CCBA; 34 | background-color: #52CCBA !important; 35 | } 36 | 37 | .sliderContainer_success .sliderMask { 38 | height: 38px; 39 | border: 1px solid #52CCBA; 40 | background-color: #D2F4EF; 41 | } 42 | 43 | .sliderContainer_success .sliderIcon { 44 | background-position: 0 0 !important; 45 | } 46 | 47 | .sliderContainer_fail .slider { 48 | height: 38px; 49 | top: -1px; 50 | border: 1px solid #f57a7a; 51 | background-color: #f57a7a !important; 52 | } 53 | 54 | .sliderContainer_fail .sliderMask { 55 | height: 38px; 56 | border: 1px solid #f57a7a; 57 | background-color: #fce1e1; 58 | } 59 | 60 | .sliderContainer_fail .sliderIcon { 61 | background-position: 0 -83px !important; 62 | } 63 | .sliderContainer_active .sliderText, .sliderContainer_success .sliderText, .sliderContainer_fail .sliderText { 64 | display: none; 65 | } 66 | 67 | .sliderMask { 68 | position: absolute; 69 | left: 0; 70 | top: 0; 71 | height: 40px; 72 | border: 0 solid #1991FA; 73 | background: #D1E9FE; 74 | } 75 | 76 | .slider { 77 | position: absolute; 78 | top: 0; 79 | left: 0; 80 | width: 40px; 81 | height: 40px; 82 | background: #fff; 83 | box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); 84 | cursor: pointer; 85 | transition: background .2s linear; 86 | } 87 | 88 | .slider:hover { 89 | background: #1991FA; 90 | } 91 | 92 | .slider:hover .sliderIcon { 93 | background-position: 0 -13px; 94 | } 95 | 96 | .sliderIcon { 97 | position: absolute; 98 | top: 15px; 99 | left: 13px; 100 | width: 14px; 101 | height: 10px; 102 | background: url(../img/icon_light.f13cff3.png) 0 -26px; 103 | background-size: 34px 471px; 104 | } 105 | 106 | .refreshIcon { 107 | position: absolute; 108 | right: 0; 109 | top: 0; 110 | width: 34px; 111 | height: 34px; 112 | cursor: pointer; 113 | background: url(../img/icon_light.f13cff3.png) 0 -437px; 114 | background-size: 34px 471px; 115 | } 116 | -------------------------------------------------------------------------------- /搜索栏特效/搜索栏特效.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | 6 | -------------------------------------------------------------------------------- /鼠标跟随/鼠标跟随.html: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /表单登录注册特效/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 用户登录注册界面 8 | 9 | 10 | 19 | 20 | 21 |
22 |
23 | 85 |
86 |
87 | 88 | 111 | 112 | -------------------------------------------------------------------------------- /表单登录注册特效/css/styles.css: -------------------------------------------------------------------------------- 1 | body{ 2 | margin:0; 3 | color:#6a6f8c; 4 | background:#c8c8c8; 5 | font:600 16px/18px 'Open Sans',sans-serif; 6 | } 7 | *,:after,:before{box-sizing:border-box} 8 | .clearfix:after,.clearfix:before{content:'';display:table} 9 | .clearfix:after{clear:both;display:block} 10 | a{color:inherit;text-decoration:none;} 11 | input, button { 12 | outline: none; 13 | border: none; 14 | } 15 | .login-wrap{ 16 | width:100%; 17 | margin:auto; 18 | max-width:525px; 19 | min-height:670px; 20 | position:relative; 21 | background:url(../img/bg.jpg) no-repeat center; 22 | box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19); 23 | } 24 | .login-html{ 25 | width:100%; 26 | height:100%; 27 | position:absolute; 28 | padding:90px 70px 50px 70px; 29 | background:rgba(40,57,101,.9); 30 | } 31 | .login-html .sign-in-htm, 32 | .login-html .sign-up-htm{ 33 | top:0; 34 | left:0; 35 | right:0; 36 | bottom:0; 37 | position:absolute; 38 | -webkit-transform:rotateY(180deg); 39 | transform:rotateY(180deg); 40 | -webkit-backface-visibility:hidden; 41 | backface-visibility:hidden; 42 | -webkit-transition:all .4s linear; 43 | transition:all .4s linear; 44 | } 45 | .login-html .sign-in, 46 | .login-html .sign-up, 47 | .login-form .group .check{ 48 | display:none; 49 | } 50 | .login-html .tab, 51 | .login-form .group .label, 52 | .login-form .group .button{ 53 | text-transform:uppercase; 54 | } 55 | .login-html .tab{ 56 | font-size:22px; 57 | margin-right:15px; 58 | padding-bottom:5px; 59 | margin:0 15px 10px 0; 60 | display:inline-block; 61 | border-bottom:2px solid transparent; 62 | } 63 | .login-html .sign-in:checked + .tab, 64 | .login-html .sign-up:checked + .tab{ 65 | color:#fff; 66 | border-color:#1161ee; 67 | } 68 | .login-form{ 69 | min-height:345px; 70 | position:relative; 71 | -webkit-perspective:1000px; 72 | perspective:1000px; 73 | -webkit-transform-style:preserve-3d; 74 | transform-style:preserve-3d; 75 | } 76 | .login-form .group{ 77 | margin-bottom:15px; 78 | } 79 | .login-form .group .label, 80 | .login-form .group .input, 81 | .login-form .group .button{ 82 | width:100%; 83 | color:#fff; 84 | display:block; 85 | } 86 | .login-form .group .input, 87 | .login-form .group .button{ 88 | border:none; 89 | padding:15px 20px; 90 | border-radius:25px; 91 | background:rgba(255,255,255,.1); 92 | } 93 | .login-form .group input[data-type="password"]{ 94 | text-security:circle; 95 | -webkit-text-security:circle; 96 | } 97 | .login-form .group .label{ 98 | color:#aaa; 99 | font-size:12px; 100 | } 101 | .login-form .group .button{ 102 | background:#1161ee; 103 | } 104 | .login-form .group label .icon{ 105 | width:15px; 106 | height:15px; 107 | border-radius:2px; 108 | position:relative; 109 | display:inline-block; 110 | background:rgba(255,255,255,.1); 111 | } 112 | .login-form .group label .icon:before, 113 | .login-form .group label .icon:after{ 114 | content:''; 115 | width:10px; 116 | height:2px; 117 | background:#fff; 118 | position:absolute; 119 | -webkit-transition:all .2s ease-in-out 0s; 120 | transition:all .2s ease-in-out 0s; 121 | } 122 | .login-form .group label .icon:before{ 123 | left:3px; 124 | width:5px; 125 | bottom:6px; 126 | -webkit-transform:scale(0) rotate(0); 127 | -ms-transform:scale(0) rotate(0); 128 | transform:scale(0) rotate(0); 129 | } 130 | .login-form .group label .icon:after{ 131 | top:6px; 132 | right:0; 133 | -webkit-transform:scale(0) rotate(0); 134 | -ms-transform:scale(0) rotate(0); 135 | transform:scale(0) rotate(0); 136 | } 137 | .login-form .group .check:checked + label{ 138 | color:#fff; 139 | } 140 | .login-form .group .check:checked + label .icon{ 141 | background:#1161ee; 142 | } 143 | .login-form .group .check:checked + label .icon:before{ 144 | -webkit-transform:scale(1) rotate(45deg); 145 | -ms-transform:scale(1) rotate(45deg); 146 | transform:scale(1) rotate(45deg); 147 | } 148 | .login-form .group .check:checked + label .icon:after{ 149 | -webkit-transform:scale(1) rotate(-45deg); 150 | -ms-transform:scale(1) rotate(-45deg); 151 | transform:scale(1) rotate(-45deg); 152 | } 153 | .login-html .sign-in:checked + .tab + .sign-up + .tab + .login-form .sign-in-htm{ 154 | -webkit-transform:rotate(0); 155 | -ms-transform:rotate(0); 156 | transform:rotate(0); 157 | } 158 | .login-html .sign-up:checked + .tab + .login-form .sign-up-htm{ 159 | -webkit-transform:rotate(0); 160 | -ms-transform:rotate(0); 161 | transform:rotate(0); 162 | } 163 | 164 | .hr{ 165 | height:2px; 166 | margin:60px 0 50px 0; 167 | background:rgba(255,255,255,.2); 168 | } 169 | .foot-lnk{ 170 | text-align:center; 171 | } -------------------------------------------------------------------------------- /烟花帆布/烟花帆布.html: -------------------------------------------------------------------------------- 1 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /粒子文字/粒子文字.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | 22 | -------------------------------------------------------------------------------- /卡片翻转/卡片翻转.html: -------------------------------------------------------------------------------- 1 |
2 |

Card Flip

3 |

Hover over a card to flip it.

4 |
5 |

Lorem ipsum dolor sit amet consectetur adipisi.

6 |
7 |
8 |
9 |

Consectetur adipisicing elit. Possimus, praesentium?

10 |

Provident consectetur natus voluptatem quis tenetur sed beatae eius sint.

11 | 12 |
13 |
14 |
15 |

Lorem ipsum dolor sit amet consectetur adipisi.

16 |
17 |
18 |
19 |

Consectetur adipisicing elit. Possimus, praesentium?

20 |

Provident consectetur natus voluptatem quis tenetur sed beatae eius sint.

21 | 22 |
23 |
24 |
25 |

Lorem ipsum dolor sit amet consectetur adipisi.

26 |
27 |
28 |
29 |

Consectetur adipisicing elit. Possimus, praesentium?

30 |

Provident consectetur natus voluptatem quis tenetur sed beatae eius sint.

31 | 32 |
33 |
34 |
35 |

Lorem ipsum dolor sit amet consectetur adipisi.

36 |
37 |
38 |
39 |

Consectetur adipisicing elit. Possimus, praesentium?

40 |

Provident consectetur natus voluptatem quis tenetur sed beatae eius sint.

41 | 42 |
43 |
44 |
45 |

Lorem ipsum dolor sit amet consectetur adipisi.

46 |
47 |
48 |
49 |

Consectetur adipisicing elit. Possimus, praesentium?

50 |

Provident consectetur natus voluptatem quis tenetur sed beatae eius sint.

51 | 52 |
53 |
54 |
55 |

Lorem ipsum dolor sit amet consectetur adipisi.

56 |
57 |
58 |
59 |

Consectetur adipisicing elit. Possimus, praesentium?

60 |

Provident consectetur natus voluptatem quis tenetur sed beatae eius sint.

61 | 62 |
63 |
64 |
65 | 66 | -------------------------------------------------------------------------------- /表单登录注册特效/js/jigsaw.js: -------------------------------------------------------------------------------- 1 | (function (window) { 2 | const l = 42, // 滑块边长 3 | r = 10, // 滑块半径 4 | w = 350, // canvas宽度 5 | h = 50, // canvas高度 6 | PI = Math.PI 7 | const L = l + r * 2 // 滑块实际边长 8 | 9 | function getRandomNumberByRange(start, end) { 10 | return Math.round(Math.random() * (end - start) + start) 11 | } 12 | 13 | function createCanvas(width, height) { 14 | const canvas = createElement('canvas') 15 | canvas.width = width 16 | canvas.height = height 17 | return canvas 18 | } 19 | 20 | function createImg(onload) { 21 | const img = createElement('img') 22 | img.crossOrigin = "Anonymous" 23 | img.onload = onload 24 | img.onerror = () => { 25 | img.src = getRandomImg() 26 | } 27 | img.src = getRandomImg() 28 | return img 29 | } 30 | 31 | function createElement(tagName) { 32 | return document.createElement(tagName) 33 | } 34 | 35 | function addClass(tag, className) { 36 | tag.classList.add(className) 37 | } 38 | 39 | function removeClass(tag, className) { 40 | tag.classList.remove(className) 41 | } 42 | 43 | function getRandomImg() { 44 | return 'https://picsum.photos/300/150/?image=' + getRandomNumberByRange(0, 100) 45 | } 46 | 47 | function draw(ctx, operation, x, y) { 48 | ctx.beginPath() 49 | ctx.moveTo(x, y) 50 | ctx.lineTo(x + l / 2, y) 51 | ctx.arc(x + l / 2, y - r + 2, r, 0, 2 * PI) 52 | ctx.lineTo(x + l / 2, y) 53 | ctx.lineTo(x + l, y) 54 | ctx.lineTo(x + l, y + l / 2) 55 | ctx.arc(x + l + r - 2, y + l / 2, r, 0, 2 * PI) 56 | ctx.lineTo(x + l, y + l / 2) 57 | ctx.lineTo(x + l, y + l) 58 | ctx.lineTo(x, y + l) 59 | ctx.lineTo(x, y) 60 | ctx.fillStyle = '#fff' 61 | ctx[operation]() 62 | ctx.beginPath() 63 | ctx.arc(x, y + l / 2, r, 1.5 * PI, 0.5 * PI) 64 | ctx.globalCompositeOperation = "xor" 65 | ctx.fill() 66 | } 67 | 68 | function sum(x, y) { 69 | return x + y 70 | } 71 | 72 | function square(x) { 73 | return x * x 74 | } 75 | 76 | class jigsaw { 77 | constructor(el, success, fail) { 78 | this.el = el 79 | this.success = success 80 | this.fail = fail 81 | } 82 | 83 | init() { 84 | this.initDOM() 85 | this.initImg() 86 | this.draw() 87 | this.bindEvents() 88 | } 89 | 90 | initDOM() { 91 | const canvas = createCanvas(w, h) // 画布 92 | const block = canvas.cloneNode(true) // 滑块 93 | const sliderContainer = createElement('div') 94 | const refreshIcon = createElement('div') 95 | const sliderMask = createElement('div') 96 | const slider = createElement('div') 97 | const sliderIcon = createElement('span') 98 | const text = createElement('span') 99 | 100 | block.className = 'block' 101 | sliderContainer.className = 'sliderContainer' 102 | refreshIcon.className = 'refreshIcon' 103 | sliderMask.className = 'sliderMask' 104 | slider.className = 'slider' 105 | sliderIcon.className = 'sliderIcon' 106 | text.innerHTML = '向右滑动滑块填充拼图' 107 | text.className = 'sliderText' 108 | 109 | const el = this.el 110 | el.appendChild(canvas) 111 | el.appendChild(refreshIcon) 112 | el.appendChild(block) 113 | slider.appendChild(sliderIcon) 114 | sliderMask.appendChild(slider) 115 | sliderContainer.appendChild(sliderMask) 116 | sliderContainer.appendChild(text) 117 | el.appendChild(sliderContainer) 118 | 119 | Object.assign(this, { 120 | canvas, 121 | block, 122 | sliderContainer, 123 | refreshIcon, 124 | slider, 125 | sliderMask, 126 | sliderIcon, 127 | text, 128 | canvasCtx: canvas.getContext('2d'), 129 | blockCtx: block.getContext('2d') 130 | }) 131 | } 132 | 133 | initImg() { 134 | const img = createImg(() => { 135 | this.canvasCtx.drawImage(img, 0, 0, w, h) 136 | this.blockCtx.drawImage(img, 0, 0, w, h) 137 | const y = this.y - r * 2 + 2 138 | const ImageData = this.blockCtx.getImageData(this.x, y, L, L) 139 | this.block.width = L 140 | this.blockCtx.putImageData(ImageData, 0, y) 141 | }) 142 | this.img = img 143 | } 144 | 145 | draw() { 146 | // 随机创建滑块的位置 147 | this.x = getRandomNumberByRange(L + 10, w - (L + 10)) 148 | this.y = getRandomNumberByRange(10 + r * 2, h - (L + 10)) 149 | draw(this.canvasCtx, 'fill', this.x, this.y) 150 | draw(this.blockCtx, 'clip', this.x, this.y) 151 | } 152 | 153 | clean() { 154 | this.canvasCtx.clearRect(0, 0, w, h) 155 | this.blockCtx.clearRect(0, 0, w, h) 156 | this.block.width = w 157 | } 158 | 159 | bindEvents() { 160 | this.el.onselectstart = () => false 161 | this.refreshIcon.onclick = () => { 162 | this.reset() 163 | } 164 | 165 | let originX, originY, trail = [], isMouseDown = false 166 | this.slider.addEventListener('mousedown', function (e) { 167 | originX = e.x, originY = e.y 168 | isMouseDown = true 169 | }) 170 | document.addEventListener('mousemove', (e) => { 171 | if (!isMouseDown) return false 172 | const moveX = e.x - originX 173 | const moveY = e.y - originY 174 | if (moveX < 0 || moveX + 38 >= w) return false 175 | this.slider.style.left = moveX + 'px' 176 | var blockLeft = (w - 40 - 20) / (w - 40) * moveX 177 | this.block.style.left = blockLeft + 'px' 178 | 179 | addClass(this.sliderContainer, 'sliderContainer_active') 180 | this.sliderMask.style.width = moveX + 'px' 181 | trail.push(moveY) 182 | }) 183 | document.addEventListener('mouseup', (e) => { 184 | if (!isMouseDown) return false 185 | isMouseDown = false 186 | if (e.x == originX) return false 187 | removeClass(this.sliderContainer, 'sliderContainer_active') 188 | this.trail = trail 189 | const {spliced, TuringTest} = this.verify() 190 | if (spliced) { 191 | if (TuringTest) { 192 | addClass(this.sliderContainer, 'sliderContainer_success') 193 | this.success && this.success() 194 | } else { 195 | addClass(this.sliderContainer, 'sliderContainer_fail') 196 | this.text.innerHTML = '再试一次' 197 | this.reset() 198 | } 199 | } else { 200 | addClass(this.sliderContainer, 'sliderContainer_fail') 201 | this.fail && this.fail() 202 | setTimeout(() => { 203 | this.reset() 204 | }, 1000) 205 | } 206 | }) 207 | } 208 | 209 | verify() { 210 | const arr = this.trail // 拖动时y轴的移动距离 211 | const average = arr.reduce(sum) / arr.length // 平均值 212 | const deviations = arr.map(x => x - average) // 偏差数组 213 | const stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length) // 标准差 214 | const left = parseInt(this.block.style.left) 215 | return { 216 | spliced: Math.abs(left - this.x) < 10, 217 | TuringTest: average !== stddev, // 只是简单的验证拖动轨迹,相等时一般为0,表示可能非人为操作 218 | } 219 | } 220 | 221 | reset() { 222 | this.sliderContainer.className = 'sliderContainer' 223 | this.slider.style.left = 0 224 | this.block.style.left = 0 225 | this.sliderMask.style.width = 0 226 | this.clean() 227 | this.img.src = getRandomImg() 228 | this.draw() 229 | } 230 | 231 | } 232 | 233 | window.jigsaw = { 234 | init: function (element, success, fail) { 235 | new jigsaw(element, success, fail).init() 236 | } 237 | } 238 | }(window)) -------------------------------------------------------------------------------- /汉堡菜单/汉堡菜单.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 11 | 12 | 13 | 16 | 19 | 22 | 23 | 24 | 27 | 30 | 33 | 34 | 35 | 38 | 41 | 44 | 45 | 46 | 49 | 52 | 55 | 56 | 57 | 60 | 63 | 66 | 67 | 68 | 71 | 74 | 77 | 78 | 79 | 82 | 85 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /轮播图/轮播图.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 16 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
MOUNTAIN
48 |
BEACH
49 |
FOREST
50 |
DESERT
51 |
52 |
53 | 54 | 295 | 296 | -------------------------------------------------------------------------------- /发火光文字/1.html: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 |
18 | 21 | 24 | 27 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /五彩纸屑射击/五彩纸屑射击.html: -------------------------------------------------------------------------------- 1 | 77 | 78 | 79 |
80 |

Click.

81 |
82 | 83 | -------------------------------------------------------------------------------- /图片滑动预览/图片滑动预览.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 14 |
15 | 16 | 17 |
18 |
19 |
01
20 |
21 |
Shibuya, Japan
22 |
Photo by Benjamin Hung
23 | 24 |
25 |
26 |
27 |
02
28 |
29 |
Mong Kok, Hong Kong
30 |
Photo by Ryan Tang
31 | 32 |
33 |
34 |
35 |
03
36 |
37 |
Incheon, South Korea
38 |
Photo by Steve Roe
39 | 40 |
41 |
42 |
43 |
04
44 |
45 |
Wan Chai, Hong Kong
46 |
Photo by Sean Foley
47 | 48 |
49 |
50 |
51 |
05
52 |
53 |
Shibuya-ku, Japan
54 |
Photo by Alex Knight
55 | 56 |
57 |
58 |
59 |
06
60 |
61 |
Tokyo, Japan
62 |
Photo by Benjamin Hung
63 | 64 |
65 |
66 |
67 |
07
68 |
69 |
Taipei City, Taiwan
70 |
Photo by Jesus In Taiwan
71 | 72 |
73 |
74 |
75 |
76 |
77 |
78 | 79 | 439 | 440 | --------------------------------------------------------------------------------