更新缩略图

This commit is contained in:
caojiezi2003 2024-06-10 13:05:32 +08:00
parent 55c7d293fd
commit 1a58531607
68 changed files with 53 additions and 53 deletions

View File

@ -41,57 +41,57 @@
<!-- 第一行 --> <!-- 第一行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./expanding-cards/','_self')"> <div class="second" onclick="window.open('./expanding-cards/','_self')">
<img src="./index/images/1.png"> <img src="./index/images/01.jpg">
<span>01 扩展卡片</span> <span>01 扩展卡片</span>
</div> </div>
<div class="second" onclick="window.open('./progress-steps/','_self')"> <div class="second" onclick="window.open('./progress-steps/','_self')">
<img src="./index/images/2.png"> <img src="./index/images/02.jpg">
<span>02 进度条</span> <span>02 进度条</span>
</div> </div>
<div class="second" onclick="window.open('./rotating-nav-animation/','_self')"> <div class="second" onclick="window.open('./rotating-nav-animation/','_self')">
<img src="./index/images/3.png"> <img src="./index/images/03.jpg ">
<span>03 旋转导航动画</span> <span>03 旋转导航动画</span>
</div> </div>
<div class="second" onclick="window.open('./hidden-search/','_self')"> <div class="second" onclick="window.open('./hidden-search/','_self')">
<img src="./index/images/4.png"> <img src="./index/images/04.jpg">
<span>04 隐藏搜索框</span> <span>04 隐藏搜索框</span>
</div> </div>
</div> </div>
<!-- 第二行 --> <!-- 第二行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./blurry-loading/','_self')"> <div class="second" onclick="window.open('./blurry-loading/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/05.jpg">
<span>05 模糊加载</span> <span>05 模糊加载</span>
</div> </div>
<div class="second" onclick="window.open('./scroll-animation/','_self')"> <div class="second" onclick="window.open('./scroll-animation/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/06.jpg">
<span>06 滚动动画</span> <span>06 滚动动画</span>
</div> </div>
<div class="second" onclick="window.open('./split-landing-page/','_self')"> <div class="second" onclick="window.open('./split-landing-page/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/07.jpg">
<span>07 拆分登陆页面</span> <span>07 拆分登陆页面</span>
</div> </div>
<div class="second" onclick="window.open('./form-input-wave/','_self')"> <div class="second" onclick="window.open('./form-input-wave/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/08.jpg">
<span>08 表单输入波浪</span> <span>08 表单输入波浪</span>
</div> </div>
</div> </div>
<!-- 第三行 --> <!-- 第三行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./sound-board/','_self')"> <div class="second" onclick="window.open('./sound-board/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/09.jpg">
<span>09 声音卡</span> <span>09 声音卡</span>
</div> </div>
<div class="second" onclick="window.open('./dad-jokes/','_self')"> <div class="second" onclick="window.open('./dad-jokes/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/10.jpg">
<span>10 爸爸的笑话</span> <span>10 爸爸的笑话</span>
</div> </div>
<div class="second" onclick="window.open('./event-keycodes/','_self')"> <div class="second" onclick="window.open('./event-keycodes/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/11.jpg">
<span>11 事件键码</span> <span>11 事件键码</span>
</div> </div>
<div class="second" onclick="window.open('./faq-collapse/','_self')"> <div class="second" onclick="window.open('./faq-collapse/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/12.jpg">
<span>12 常见问题折叠</span> <span>12 常见问题折叠</span>
</div> </div>
</div> </div>
@ -101,57 +101,57 @@
<!-- 第四行 --> <!-- 第四行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./random-choice-picker/','_self')"> <div class="second" onclick="window.open('./random-choice-picker/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/13.jpg">
<span>13 随机选择器</span> <span>13 随机选择器</span>
</div> </div>
<div class="second" onclick="window.open('./animated-navigation/','_self')"> <div class="second" onclick="window.open('./animated-navigation/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/14.jpg">
<span>14 导航动画</span> <span>14 导航动画</span>
</div> </div>
<div class="second" onclick="window.open('./incrementing-counter/','_self')"> <div class="second" onclick="window.open('./incrementing-counter/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/15.jpg">
<span>15 递增计数器</span> <span>15 递增计数器</span>
</div> </div>
<div class="second" onclick="window.open('./drink-water/','_self')"> <div class="second" onclick="window.open('./drink-water/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/16.jpg">
<span>16 喝水</span> <span>16 喝水</span>
</div> </div>
</div> </div>
<!-- 第五行 --> <!-- 第五行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./movie-app/','_self')"> <div class="second" onclick="window.open('./movie-app/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/17.jpg">
<span>17 movie-app</span> <span>17 影视app</span>
</div> </div>
<div class="second" onclick="window.open('./background-slider/','_self')"> <div class="second" onclick="window.open('./background-slider/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/18.jpg">
<span>18 背景滑块</span> <span>18 背景滑块</span>
</div> </div>
<div class="second" onclick="window.open('./theme-clock/','_self')"> <div class="second" onclick="window.open('./theme-clock/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/19.jpg">
<span>19 主题时钟</span> <span>19 主题时钟</span>
</div> </div>
<div class="second" onclick="window.open('./button-ripple-effect/','_self')"> <div class="second" onclick="window.open('./button-ripple-effect/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/20.jpg">
<span>20 按钮涟漪效果</span> <span>20 按钮涟漪效果</span>
</div> </div>
</div> </div>
<!-- 第六行 --> <!-- 第六行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./drag-n-drop/','_self')"> <div class="second" onclick="window.open('./drag-n-drop/','_self')">
<img src="./index/images/1.png"> <img src="./index/images/21.jpg">
<span>21 拖放</span> <span>21 拖放</span>
</div> </div>
<div class="second" onclick="window.open('./drawing-app/','_self')"> <div class="second" onclick="window.open('./drawing-app/','_self')">
<img src="./index/images/2.png"> <img src="./index/images/22.jpg">
<span>22 画图APP</span> <span>22 画图APP</span>
</div> </div>
<div class="second" onclick="window.open('./kinetic-loader/','_self')"> <div class="second" onclick="window.open('./kinetic-loader/','_self')">
<img src="./index/images/3.png"> <img src="./index/images/23.jpg">
<span>23 加载动画</span> <span>23 加载动画</span>
</div> </div>
<div class="second" onclick="window.open('./content-placeholder/','_self')"> <div class="second" onclick="window.open('./content-placeholder/','_self')">
<img src="./index/images/4.png"> <img src="./index/images/24.jpg">
<span>24 内容占位符</span> <span>24 内容占位符</span>
</div> </div>
</div> </div>
@ -161,57 +161,57 @@
<!-- 第七行 --> <!-- 第七行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./sticky-navigation/','_self')"> <div class="second" onclick="window.open('./sticky-navigation/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/25.jpg">
<span>25 粘性导航栏</span> <span>25 粘性导航栏</span>
</div> </div>
<div class="second" onclick="window.open('./double-vertical-slider/','_self')"> <div class="second" onclick="window.open('./double-vertical-slider/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/26.jpg">
<span>26 双垂直滑块</span> <span>26 双垂直滑块</span>
</div> </div>
<div class="second" onclick="window.open('./toast-notification/','_self')"> <div class="second" onclick="window.open('./toast-notification/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/27.jpg">
<span>27 Toast通知</span> <span>27 Toast通知</span>
</div> </div>
<div class="second" onclick="window.open('./github-profiles/','_self')"> <div class="second" onclick="window.open('./github-profiles/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/28.jpg">
<span>28 Github 配置文件</span> <span>28 Github 配置文件</span>
</div> </div>
</div> </div>
<!-- 第八行 --> <!-- 第八行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./double-click-heart/','_self')"> <div class="second" onclick="window.open('./double-click-heart/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/29.jpg">
<span>29 双击加心点赞</span> <span>29 双击加心点赞</span>
</div> </div>
<div class="second" onclick="window.open('./auto-text-effect/','_self')"> <div class="second" onclick="window.open('./auto-text-effect/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/30.jpg">
<span>30 自动文本效果</span> <span>30 自动文本效果</span>
</div> </div>
<div class="second" onclick="window.open('./password-generator/','_self')"> <div class="second" onclick="window.open('./password-generator/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/31.jpg">
<span>31 密码生成器</span> <span>31 密码生成器</span>
</div> </div>
<div class="second" onclick="window.open('./good-cheap-fast/','_self')"> <div class="second" onclick="window.open('./good-cheap-fast/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/32.jpg">
<span>32 多快好省</span> <span>32 多快好省</span>
</div> </div>
</div> </div>
<!-- 第九行 --> <!-- 第九行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./notes-app/','_self')"> <div class="second" onclick="window.open('./notes-app/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/33.jpg">
<span>33 便签</span> <span>33 便签</span>
</div> </div>
<div class="second" onclick="window.open('./animated-countdown/','_self')"> <div class="second" onclick="window.open('./animated-countdown/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/34.jpg">
<span>34 动画倒计时</span> <span>34 动画倒计时</span>
</div> </div>
<div class="second" onclick="window.open('./image-carousel/','_self')"> <div class="second" onclick="window.open('./image-carousel/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/35.jpg">
<span>35 图片轮播</span> <span>35 图片轮播</span>
</div> </div>
<div class="second" onclick="window.open('./hoverboard/','_self')"> <div class="second" onclick="window.open('./hoverboard/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/36.jpg">
<span>36 彩色悬停效果</span> <span>36 彩色悬停效果</span>
</div> </div>
</div> </div>
@ -221,57 +221,57 @@
<!-- 第十行 --> <!-- 第十行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./pokedex/','_self')"> <div class="second" onclick="window.open('./pokedex/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/37.jpg">
<span>37 口袋妖怪</span> <span>37 口袋妖怪</span>
</div> </div>
<div class="second" onclick="window.open('./mobile-tab-navigation/','_self')"> <div class="second" onclick="window.open('./mobile-tab-navigation/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/38.jpg">
<span>38 移动选项卡导航</span> <span>38 移动选项卡导航</span>
</div> </div>
<div class="second" onclick="window.open('./password-strength-background/','_self')"> <div class="second" onclick="window.open('./password-strength-background/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/39.jpg">
<span>39 密码强度背景</span> <span>39 密码强度背景</span>
</div> </div>
<div class="second" onclick="window.open('./3d-boxes-background/','_self')"> <div class="second" onclick="window.open('./3d-boxes-background/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/40.jpg">
<span>40 3D盒子背景</span> <span>40 3D盒子背景</span>
</div> </div>
</div> </div>
<!-- 第十一行 --> <!-- 第十一行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./verify-account-ui/','_self')"> <div class="second" onclick="window.open('./verify-account-ui/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/41.jpg">
<span>41 验证账户UI</span> <span>41 验证账户UI</span>
</div> </div>
<div class="second" onclick="window.open('./live-user-filter/','_self')"> <div class="second" onclick="window.open('./live-user-filter/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/42.jpg">
<span>42 实时用户筛选器</span> <span>42 实时用户筛选器</span>
</div> </div>
<div class="second" onclick="window.open('./feedback-ui-design/','_self')"> <div class="second" onclick="window.open('./feedback-ui-design/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/43.jpg">
<span>43 反馈UI设计</span> <span>43 反馈UI设计</span>
</div> </div>
<div class="second" onclick="window.open('./custom-range-slider/','_self')"> <div class="second" onclick="window.open('./custom-range-slider/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/44.jpg">
<span>44 自定义范围滑块</span> <span>44 自定义范围滑块</span>
</div> </div>
</div> </div>
<!-- 第十二行 --> <!-- 第十二行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./netflix-mobile-navigation/','_self')"> <div class="second" onclick="window.open('./netflix-mobile-navigation/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/45.jpg">
<span>45 Netflix移动导航</span> <span>45 Netflix移动导航</span>
</div> </div>
<div class="second" onclick="window.open('./quiz-app/','_self')"> <div class="second" onclick="window.open('./quiz-app/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/46.jpg">
<span>46 测验APP</span> <span>46 测验APP</span>
</div> </div>
<div class="second" onclick="window.open('./testimonial-box-switcher/','_self')"> <div class="second" onclick="window.open('./testimonial-box-switcher/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/47.jpg">
<span>47 推荐式换盒器</span> <span>47 推荐式换盒器</span>
</div> </div>
<div class="second" onclick="window.open('./random-image-generator/','_self')"> <div class="second" onclick="window.open('./random-image-generator/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/48.jpg">
<span>48 随机图像生成器</span> <span>48 随机图像生成器</span>
</div> </div>
</div> </div>
@ -281,19 +281,19 @@
<!-- 第十三行 --> <!-- 第十三行 -->
<div class="son"> <div class="son">
<div class="second" onclick="window.open('./todo-list/','_self')"> <div class="second" onclick="window.open('./todo-list/','_self')">
<img src="./index/images/6.png"> <img src="./index/images/49.jpg">
<span>49 todo列表</span> <span>49 todo列表</span>
</div> </div>
<div class="second" onclick="window.open('./insect-catch-game/','_self')"> <div class="second" onclick="window.open('./insect-catch-game/','_self')">
<img src="./index/images/7.png"> <img src="./index/images/50.jpg">
<span>50 捉虫游戏</span> <span>50 捉虫游戏</span>
</div> </div>
<div class="second" onclick="window.open('./simple-timer/','_self')"> <div class="second" onclick="window.open('./simple-timer/','_self')">
<img src="./index/images/8.png"> <img src="./index/images/51.jpg">
<span>51 简单计时器</span> <span>51 简单计时器</span>
</div> </div>
<div class="second" onclick="window.open('./3d-boxes-background/','_self')"> <div class="second" onclick="window.open('./3d-boxes-background/','_self')">
<img src="./index/images/9.png"> <img src="./index/images/add.png">
<span>52 待添加</span> <span>52 待添加</span>
</div> </div>
</div> </div>

BIN
index/images/01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
index/images/02.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
index/images/03.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
index/images/04.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
index/images/05.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
index/images/06.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
index/images/07.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
index/images/08.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
index/images/09.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

BIN
index/images/10.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

BIN
index/images/11.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

BIN
index/images/12.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

BIN
index/images/13.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

BIN
index/images/14.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

BIN
index/images/15.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
index/images/16.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
index/images/17.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
index/images/18.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
index/images/19.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

BIN
index/images/20.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
index/images/21.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
index/images/22.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
index/images/23.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
index/images/24.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
index/images/25.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
index/images/26.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
index/images/27.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
index/images/28.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
index/images/29.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

BIN
index/images/30.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
index/images/31.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
index/images/32.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
index/images/33.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
index/images/34.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
index/images/35.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
index/images/36.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
index/images/37.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
index/images/38.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
index/images/39.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

BIN
index/images/40.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
index/images/41.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
index/images/42.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
index/images/43.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
index/images/44.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
index/images/45.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
index/images/46.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
index/images/47.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
index/images/48.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
index/images/49.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

BIN
index/images/50.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
index/images/51.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

BIN
index/images/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB