⏰ 更新时间: 2025-01-13 00:09:24。文章来源、文章分类
- 2025-01-12-Broadcast-Channel-API简介,可实现Web页面广播通信
- 2025-01-02-一个新的CSS媒体查询prefers-reduced-transparency
- 2024-12-29-HTML-select下拉框支持hr元素啦
- 2024-12-23-如何使用JS获取系统内存、CPU/GPU、电量等信息
- 2024-12-11-全新的CSS相对颜色语法-使用from和calc
- 2024-12-06-英文单词朗读基于音素预估时长的JS算法
- 2024-12-04-哇哦,font-palette支持动画和palette-mix混合函数了
- 2024-11-29-CSS好用的color-mix颜色函数也可以使用啦
- 2024-11-25-CSS-Grid布局中的subgrid的适用场景
- 2024-11-17-JS文本选区变化selectionchange事件实践小记
- 2024-11-14-这啥?CSS-calc-size和interpolate-size,真学不动了
- 2024-11-11-趁热打铁,SVG-feColorMatrix滤镜gogogo!
- 2024-10-31-Pixi.js中ColorMatrixFilter自带滤镜效果一览
- 2024-10-24-Object.is/===、数组at/直接索引、substring/slice的区别
- 2024-10-10-Nice!-Safari也支持CSS-@perporty规则了
- 2024-09-26-时隔两年,Chrome也支持round等CSS数学函数了
- 2024-09-19-实用的JS对象分组静态方法Object.groupBy
- 2024-09-13-好消息,align-content垂直居中也适用普通元素啦
- 2024-09-11-来了来了,scrollend滚动停止事件也支持了
- 2024-09-09-搞懂SVG中各种Light相关的光源滤镜
- 2024-08-23-不能落后,好好缕缕CSS滚动动画
- 2024-08-10-页面级可视动画View-Transitions-API初体验
- 2024-07-29-独家,MP3音频淡入淡出播放和转换的JS实现
- 2024-07-23-关于《HTML并不简单》这本书
- 2024-07-18-今日学习CSS文本自定义高亮API
- 2024-07-15-了解infinity、pi等CSS-calc计算关键字
- 2024-07-04-如何使用纯CSS鉴别是不是Safari浏览器
- 2024-06-30-CSS-transition-behavior让display-none也有动画效果
- 2024-06-27-告别JS浮层,全新的CSS-Anchor-Positioning锚点定位API
- 2024-06-11-聊聊Top-Layer顶层特性的隐患与实践
- 2024-05-30-记一次技术交流,-feMerge滤镜复制任意HTML投影
- 2024-05-20-如何用简单的Web方法实现图片的马赛克效果
- 2024-05-12-不使用font-weight等CSS实现文字变瘦或变胖效果
- 2024-04-22-node环境中使用fluent-ffmpeg每隔一秒视频截图
- 2024-04-14-今天学习SVG滤镜feGaussianBlur和feDropShadow
- 2024-04-11-SVG滤镜系列之搞懂<feBlend>元素
- 2024-03-31-CSS-Nesting嵌套与@scope规则也太雷同了吧?
- 2024-03-21-CSS-initial-letter属性,嗯……也就这样吧
- 2024-03-17-今天才知道,Web网页也能阻止息屏了
- 2024-02-29-不改变音调情况下Audio音频的倍速合成JS实现
- 2024-01-31-HTML-MicroData微数据结构简介
- 2024-01-21-CSS-@scope他来了
- 2024-01-15-使用JS快速获取video视频任意位置的缩略图
- 2024-01-11-时代变了,该使用原生popover属性模拟下拉了
- 2023-12-28-纯JS实现图像的人脸识别功能
- 2023-12-26-JS实现图片相似度的判断
- 2023-12-24-使用JS提取视频中的音频资源
- 2023-11-29-本地MP3封面图、时长等信息的JS读取
- 2023-11-22-cube格式的LUT滤镜也叫ColorMapFilter在pixi中应用
- 2023-11-19-剪映APP的视频特效如何在Web中JS实现
- 2023-11-15-mp4box.js加WebCodecs-解码MP4视频帧并渲染
- 2023-10-29-聊聊Web网页中资源加载的优先级
- 2023-10-10-纯JS实现多个音频的拼接或者合并
- 2023-10-09-JS改变AudioBuffer音量并下载为新audio音频
- 2023-09-17-又get到了,JS复制图片到剪切板
- 2023-09-15-HTML-elementtiming属性初体验记录
- 2023-09-12-Tips:form元素reset后input不触发change事件处理
- 2023-09-05-做了个纯前端JPG/PNG尺寸缩放+压缩的在线工具
- 2023-08-30-一言难尽的registerProtocolHandler方法
- 2023-08-29-Web-referrer策略详解与防盗链图片的显示
- 2023-08-27-狠狠地研究了下-PerformanceObserver-API
- 2023-08-10-查漏补缺,我仍未知道的HTML-nonce和popover属性
- 2023-07-31-HTML-kbd、var、samp元素你使用过没?
- 2023-07-25-5分钟快速了解text-wrap:balance的作用
- 2023-07-20-CSS高宽不等图片固定比例布局的三重进化
- 2023-06-30-CSS-sin/cos等数学三角函数简介与应用
- 2023-06-18-我使用CSS模拟个假的数字loading效果
- 2023-06-05-使用纯CSS实现噪点效果
- 2023-06-04-使用jsPDF导出PDF文件实践分享
- 2023-05-31-CSS-margin-trim属性是做什么用的?
- 2023-05-21-JS-audio加图片序列或canvas转webM/MP4的实现
- 2023-05-07-使用ImageDecoder-API让GIF图片暂停播放
- 2023-04-23-AI代码辅助工具codeium和copilot在前端表现对比
- 2023-03-24-CSS又出了个revert-layer全局关键字😂
- 2023-03-17-好奇心驱使下试验了chatGPT写CSS代码的能力
- 2023-03-17-瞎折腾,使用JS让中文内容莫名其妙、狗屁不通
- 2023-03-15-又发现一种无需绝对定位就可以元素重叠的CSS技巧
- 2023-03-12-一万年了,CSS-text-align-last终于可以用了
- 2023-02-27-任意两个点的曲线连接JS算法
- 2023-02-19-是时候介绍这几个全新的CSS颜色函数了
- 2023-02-08-奇了怪了,输入法和JS-Enter回车提交冲突
- 2023-02-06-CSS-fixed固定定位transofrm失效及居中小技巧
- 2023-01-30-Chrome浏览器原生支持的7种后台服务简介
- 2023-01-17-使用AbortController-abort中断原生fetch或axios请求
- 2023-01-07-前端原生API实现条形码二维码的JS解析识别
- 2022-12-28-JS数组的copyWithin语法我看了好几遍才懂
- 2022-12-18-Tips:-使用CSS逻辑属性简化我们的书写
- 2022-11-30-从今天开始,请叫我Node文本节点处理大师
- 2022-11-20-JS之我用单img元素实现了图像resize拉伸效果
- 2022-11-06-Web前端开发中的反向与倒序
- 2022-11-05-关于list-style-type项目符号你应该知道的事情
- 2022-10-20-告别pointer-events:none使用HTML-inert属性真正禁用
- 2022-10-16-2022年新出了哪些form表单新特性?
- 2022-10-12-CSS-::file-selector-button伪元素简介
- 2022-10-12-更符合书写习惯的CSS媒体查询Range语法
- 2022-09-27-介绍2022最期待且已正式支持的CSS-container容器查询
- 2022-09-21-划词评论与Range开发若干经验分享
- 2022-09-20-巧用:is或:where伪类让scoped的style依然全局匹配
- 2022-09-19-聊聊:autofill和autocomplete自动填充
- 2022-08-31-gitee上撸了个类似飞书OKR输入框的@提及项目
- 2022-08-24-来了,来了,CSS-:has伪类她来了
- 2022-08-21-JS-replaceAll-和-matchAll-使用指南不指北
- 2022-07-27-万物皆可clip-path,纯CSS绘制0-9数字
- 2022-07-21-超酷!CSS-font-palette与彩色字体显示
- 2022-06-30-CSS排版为何强?瞧瞧多牛这换行
- 2022-06-19-如何继承自定义元素及其他JS中扩展新方法
- 2022-06-12-基于文字的URL锚点定位与::target-text样式设置
- 2022-06-12-介绍一种CSS变量未定义语法也OK的小妙招
- 2022-05-30-如何实现页面刷新后不定位到之前的滚动位置?
- 2022-05-28-详解日后定会大规模使用的CSS-@layer-规则
- 2022-05-22-CSS必学基础:理解CSS中的级联规则
- 2022-05-12-JS与条形码的生成
- 2022-04-30-深入-JS-new-Function-语法
- 2022-04-27-小tips:-JS字体加载失败或完毕的检测
- 2022-04-22-CSS实现滚动高度自动变小的粘滞效果
- 2022-03-27-使用CSS-size-adjust和unicode-range改变任意文字尺寸
- 2022-03-21-ascent-override-descent-override-line-gap-override一锅端
- 2022-03-15-基于howler.js写了个音频播放器组件
- 2022-03-07-介绍8个和滚动相关的CSS属性
- 2022-03-06-CSS-accent-color属性简介
- 2022-02-25-被低估的border-image属性
- 2022-02-21-CSS-overflow-clip-margin属性简介
- 2022-02-12-CSS-:not伪类选择器已支持复杂参数
- 2022-02-04-HTML-inputmode与iOS-Android软键盘类型测试
- 2022-01-31-CSS-background背景图标的变色技巧
- 2022-01-14-纯CSS实现未读消息超过100自动显示为99+
- 2022-01-12-还有完没完,怎么又来了个-scrollbar-gutter?
- 2021-12-29-JS-标签模板(Tagged-templates)什么时候使用?
- 2021-12-20-深入JS-getRandomValue和Math.random方法
- 2021-12-13-你不知道的CSS-media查询与用户体验
- 2021-12-08-flex-end为什么overflow无法滚动及解决方法
- 2021-11-24-从js-visibilitychange-Safari下无效说开去
- 2021-11-14-密码强度效果最佳实现一定是HTML-meter元素
- 2021-11-02-见多识广,介绍Web开发中current开头的一些API属性
- 2021-10-28-JS复制文字到剪切板的极简实现及扩展
- 2021-10-25-CSS-@counter-style规则详细介绍
- 2021-10-08-CSS-content新的替换元素规范行为解读
- 2021-09-30-兼容IE浏览器的图片局部高斯模糊实现
- 2021-09-24-HTML-slot-插槽元素深入
- 2021-09-14-借助HTML-ping属性实现数据上报
- 2021-09-12-APNG在线制作、兼容、播放和暂停
- 2021-08-22-不使用file类型input也能触发文件上传
- 2021-08-17-关于《CSS新世界》这本书
- 2021-08-15-JS-WeakMap应该什么时候使用
- 2021-08-08-polyfill、ponyfill、prollyfill傻傻分不清楚
- 2021-08-07-SVG任意基本图形转path路径
- 2021-07-26-为什么white-space:nowrap可以让文字一行显示?
- 2021-07-26-为什么HTML-<picture>元素很少见人使用?
- 2021-07-24-使用ogv.js在Android浏览器解析webM视频
- 2021-07-22-利用废弃的html-rel-import实现页面include功能
- 2021-07-11-借助SVG滤镜实现CSS无法实现的阴影和模糊效果
- 2021-07-01-Proxy是代理,Reflect是干嘛用的?
- 2021-06-27-JS判断图像背景颜色单一还是丰富
- 2021-06-14-纯CSS实现标题栏、表格头水平滚动垂直不滚动
- 2021-05-30-666,看hr标签实现分隔线如何玩出花
- 2021-05-30-如何使用CSS禁止元素拖拽?
- 2021-05-16-使用CSS-revert全局关键字还原display显示元素
- 2021-05-13-输入框value属性赋值触发js-change事件的实现
- 2021-05-09-Promise.all、race和any方法都是什么意思?
- 2021-04-26-Safari不支持build-in自定义元素的兼容处理
- 2021-04-25-JS视频解码JSMpeg和Broadway开箱测评
- 2021-04-18-腾讯开源的酷炫动画播放解决方案Vap初体验
- 2021-04-10-使用navigator.connection.downlink前端测网速
- 2021-03-31-分享下input-time输入框的细节知识
- 2021-03-20-借助ffmpeg.wasm纯前端实现多音频和视频的合成
- 2021-03-14-CSS-line-height-step属性简介
- 2021-02-18-CSS-line-break属性与中文标点换行
- 2021-02-18-使用CSS-text-combine-upright实现字符的横向合并
- 2021-02-17-Chrome-88已经支持aspect-ratio属性了,学起来
- 2021-02-17-好消息,CSS-text-underline-offset可以用起来了
- 2021-02-16-CSS-::marker伪元素简介
- 2021-02-16-盘点HTML字符串转DOM的各种方法及细节
- 2021-02-15-如何使用JS检测用户是否缩放了页面?
- 2021-02-14-直线等图形从中间穿过元素或文字的CSS实现
- 2021-02-14-了解CSS-revert全局关键字
- 2021-02-13-water.css项目简介
- 2021-02-13-Web-Components中引入外部CSS的3种方法
- 2021-02-12-使用grid-area等Grid布局属性轻松实现元素层叠效果
- 2021-02-11-巧用两个type=range-input实现区域范围选择
- 2021-02-06-使用::part伪元素改变Shadow-DOM的CSS样式
- 2021-01-27-一行CSS实现全站中文简繁转换
- 2021-01-21-巧用DOM-API实现HTML字符的转义和反转义
- 2021-01-04-告别JS-keyCode
- 2020-12-25-几个常见功能重合DOM-API的细节差异
- 2020-12-13-纯CSS实现微信列表左滑显示按钮的交互效果
- 2020-12-06-原来DOM还有toggleAttribute这样的JS-API
- 2020-12-01-尝试使用JS-IntersectionObserver让标题和导航联动
- 2020-11-28-低成本深色模式CSS实现技术探索与拓展
- 2020-11-26-突发奇想,同步单复选框checked态岂不点击通杀?
- 2020-11-15-HTML中无标签文本的CSS变色技巧
- 2020-10-30-介绍一种全新的clipPath-Sprites小图标技术
- 2020-10-26-细说iOS-Safari下focus的行为
- 2020-10-24-图片加载失败后CSS样式处理最佳实践
- 2020-10-22-ES6模板字符串在HTML模板渲染中的应用
- 2020-10-20-如何让文字作为CSS背景图片显示?
- 2020-10-17-SVG-feTurbulence滤镜深入介绍
- 2020-10-11-巧借CSS-var变量实现任意的CSS自定义语法
- 2020-10-11-快速学习CSS-Color-Level-4的色值新语法
- 2020-10-11-HTML-enterkeyhint设置iOS/Android键盘enter键
- 2020-10-10-Polyfill吊炸天的CSS-attr新语法
- 2020-10-06-flex:0-flex:1-flex:none-flex:auto应该在什么场景下使用?
- 2020-09-13-研究了下Houdini中的CSS-Layout-API
- 2020-09-06-文字沿着不规则路径排版布局的实现
- 2020-08-20-JS-CustomEvent自定义事件传参小技巧
- 2020-08-12-CSS-overflow-anchor属性与滚动锚定
- 2020-08-06-颠覆,原来background-image也是支持CSS动画的
- 2020-07-27-JS纯前端实现audio音频剪裁剪切复制播放与上传
- 2020-07-22-深入理解CSS-background-blend-mode的作用机制
- 2020-07-06-巧用CSS-cross-fade实现背景图像半透明效果
- 2020-07-01-CSS变量对JS交互组件开发带来的提升与变革
- 2020-06-16-使用CSS-text-emphasis对文字进行强调装饰
- 2020-06-12-移动端双指缩放图片JS事件的实践心得
- 2020-06-07-CSS-gap属性进化史
- 2020-06-03-SVG任意图形和path路径的面积计算
- 2020-05-27-CSS-columns轻松实现两端对齐布局效果
- 2020-05-12-快速了解CSS-display:flow-root声明
- 2020-05-08-借助CSS-mask遮罩显著优化PNG图片的尺寸
- 2020-04-20-CSS-conic-gradient锥形渐变简介
- 2020-04-16-ES6-Math方法和Number新特性简介
- 2020-04-12-了解CSS-min/max/clamp数学函数
- 2020-04-09-CSS技术分享:-文字在圆形内沿着弧线边界排版
- 2020-04-08-AVIF图片格式简介
- 2020-03-21-CSS-text-decoration实现宽度100%波浪线效果
- 2020-03-18-CSS-overflow-wrap新属性值anywhere是干嘛用的?
- 2020-03-12-关于CSS-emoji字体和OpenType-SVG我所知道的一些事
- 2020-03-08-检测DOM尺寸变化JS-API-ResizeObserver简介
- 2020-03-07-深入理解position-sticky粘性定位的计算规则
- 2020-02-27-3D-LUT-滤镜颜色映射原理剖析与JS实现
- 2020-02-13-我是如何通过CSS向JS传参的
- 2020-02-12-CSS-@supports开始支持selector选择器检测了
- 2020-01-31-HTML全局属性列表大全
- 2020-01-17-CSS-any-hover-any-pointer-media查询与交互体验提升
- 2020-01-17-如何使用JS把相对地址变成绝对地址?
- 2020-01-15-CSS-grid-auto-flow深入理解
- 2020-01-05-CSS-overscroll-behavior让滚动嵌套时父滚动不触发
- 2020-01-02-CSS-inherit是继承,那initial和unset呢?
- 2020-01-01-CSS-paint-order祝大家元旦快乐
- 2019-12-31-Oh-My-God,CSS-flex-basis原来有这么多细节
- 2019-12-22-CSS-flex属性深入理解
- 2019-12-07-CSS-repeat函数详细介绍
- 2019-11-30-CSS-minmax函数简介
- 2019-11-17-我们一起学习CSS-image-set
- 2019-11-15-CSS-backdrop-filter简介与苹果iOS毛玻璃效果
- 2019-11-10-CSS值类型文档大全
- 2019-11-08-JS检测CSS属性浏览器是否支持的多种方法
- 2019-10-27-幸好document.readyState还是有点锤子用的
- 2019-10-16-关于《CSS选择器世界》这本书
- 2019-10-13-实现a元素href-URL链接自动刷新或新窗口打开
- 2019-09-30-浏览器IMG图片原生懒加载loading=”lazy”实践指南
- 2019-09-19-小tips:-元素focus页面不滚动不定位的JS处理
- 2019-09-13-JS-Intl对象完整简介及在中文中的应用
- 2019-09-10-快速了解window.name特性与作用
- 2019-09-07-小tips:-JS-DOM-innerText和textContent的区别
- 2019-08-30-聊聊JS-DOM变化的监听检测与应用
- 2019-08-26-JS-URL和URLSearchParams-API接口详细介绍
- 2019-08-18-checkValidity等form原生JS验证方法和属性详细介绍
- 2019-08-17-纯前端JS-zip打包文件并下载
- 2019-08-17-是时候了,无外链的CSS开发策略
- 2019-08-15-让CSS-flex布局最后一行列表左对齐的N种方法
- 2019-08-13-常见纯CSS图标的代码分离与整理(持续更新)
- 2019-08-07-给IE/Edge写了个textarea-resize拉伸的polyfill
- 2019-08-06-本地开发设置个区分明显的favicon吧~
- 2019-07-28-CSS-:not伪类可能错误的认识
- 2019-07-27-还算有点用的scrollTo和scrollBy两个JS-API
- 2019-07-19-HTML静态页面原型交付工具“魔卡”简介
- 2019-07-07-HTML-audio基础API完全使用指南
- 2019-06-23-DOMParser和XMLSerializer两个API简介
- 2019-06-15-详细介绍HTML-favicon尺寸-格式-制作等相关知识
- 2019-06-10-FDCon2019大会分享之滤镜与混合模式实录
- 2019-06-09-第五届CSS大会主题分享之CSS创意与视觉表现
- 2019-06-08-更好的纯CSS滚动指示器技术实现
- 2019-06-07-纯CSS图片滤镜项目CSSgram简介
- 2019-06-03-HTML-rel属性值释义大全
- 2019-05-28-深入理解CSS-mix-blend-mode滤色screen混合模式
- 2019-05-28-小tips:-如何借助content属性显示CSS-var变量值
- 2019-05-27-你用的那些CSS转场动画可以换一换了
- 2019-05-17-使用“变量种子计数器”扩展CSS动画更多可能性
- 2019-05-16-如何让MP4-video视频背景色变成透明?
- 2019-04-21-CSS实现文字下面波浪线动画效果
- 2019-04-20-CSS-scroll-snap滚动事件停止及元素位置检测
- 2019-04-20-CSS实现平行四边形布局效果
- 2019-04-20-CSS滤镜和混合模式处理的图片如何上传下载?
- 2019-04-05-如何disabled禁用所有表单input输入框元素
- 2019-03-24-CSS-:focus-visible伪类让我感动哭了
- 2019-03-11-伪类匹配列表数目实现微信群头像CSS布局的技巧
- 2019-03-02-DOM小测28期-–-DOM节点文档前后位置判断
- 2019-03-02-深入Node.compareDocumentPosition-API
- 2019-02-25-link-rel=alternate网站换肤功能最佳实现
- 2019-02-22-使用document.scrollingElement控制窗体滚动高度
- 2019-02-11-快速了解CSS新出的列选择符双管道(||)
- 2019-02-02-写给自己看的CSS-shapes布局教程
- 2019-01-31-写给自己看的CSS-columns分栏布局教程
- 2019-01-26-CSS-var变量的局部作用域特性
- 2019-01-26-DOM基础小测27期答疑文字版-窗体滚动二三事
- 2019-01-20-粉丝群第27期JS基础小测答疑文字版
- 2019-01-14-常见的CSS图形绘制合集
- 2019-01-12-粉丝群第1期CSS小测点评与答疑
- 2019-01-11-分享三个纯CSS实现26个英文字母的案例
- 2019-01-10-小tips:-纯CSS实现打字动画效果
- 2019-01-05-CSS/CSS3-box-decoration-break属性图文简介
- 2018-12-25-CSS-:placeholder-shown伪类实现Material-Design占位符交互效果
- 2018-12-24-从天猫某活动视频不必要的3次请求说起
- 2018-12-24-CSS-vector-effect与SVG-stroke描边缩放
- 2018-12-22-CSS-::backdrop伪元素是干嘛用的?
- 2018-12-17-周知:CSS--webkit-伪元素选择器不再导致整行无效
- 2018-12-09-CSS-font-feature-settings-50+关键字属性值完整介绍
- 2018-12-09-使用wavesurfer.js显示mp3-audio音频的波形图
- 2018-12-06-CSS蛋疼应用之:数据上报和HTML验证
- 2018-12-03-HandBrake乃Web-MP4视频免费压缩工具不二之选
- 2018-12-02-杀了个回马枪,还是说说position:sticky吧
- 2018-12-02-HTML5-video视频播放Picture-in-Picture画中画技术
- 2018-11-28-大侠,请留步,要不过来了解下CSS-Scroll-Snap?
- 2018-11-27-5分钟快速了解下CSS4-color-adjust属性
- 2018-11-26-CSS届的绘图板CSS-Paint-API简介
- 2018-11-24-纯CSS实现小图标变色的一些研究
- 2018-11-18-CSS前景背景自动配色技术简介
- 2018-11-18-CSS-filter:hue-rotate色调旋转滤镜实现按钮批量生产
- 2018-11-16-小tips:-如何HTML标签和JS中设置CSS3-var变量
- 2018-11-06-写给自己看的display:-grid布局教程
- 2018-10-28-写给自己看的display:-flex布局教程
- 2018-10-26-CSS-margin-inline和margin-block区别是什么?
- 2018-10-24-数学标记语言MathML简介、工具及兼容
- 2018-10-21-CSS-scroll-behavior和JS-scrollIntoView让页面滚动平滑
- 2018-10-21-有人考了我一道CSS题目
- 2018-10-12-CSS-:visited伪类选择器隐秘往事回忆录
- 2018-10-03-搞懂SVG/Canvas中nonzero和evenodd填充规则
- 2018-09-30-拖拽献祭中的黑山羊-DataTransfer对象
- 2018-09-21-直接剪切板粘贴上传图片的前端JS实现
- 2018-09-09-利用剪切板JS-API优化输入框的粘贴体验
- 2018-09-01-借助wbr标签实现连续英文字符的精准换行
- 2018-08-30-妙法攻略:渐变虚框及边框滚动动画的纯CSS实现
- 2018-08-19-学习了,CSS中内联SVG图片有比Base64更好的形式
- 2018-08-11-这回试试使用CSS实现抛物线运动效果
- 2018-08-06-看,for..in和for..of在那里吵架!
- 2018-08-04-原来浏览器原生支持JS-Base64编码解码
- 2018-08-02-万岁,浏览器原生支持ES6-export和import模块啦!
- 2018-07-26-隐私相关-了解HTML5-Do-Not-Track-API