前端技术文章
-
要让border-radius和box-shadow同时平滑过渡,需在transition中显式声明二者并保持结构一致:border-radius支持数值过渡,box-shadow要求offset-x、offset-y、blur-radius、spread-radius、color的项数和单位统一,且不可混用inset与非inset;推荐使用相同duration和timing-function,并可叠加transform实现更流畅动画。194 收藏 -
Vue模板中只支持JavaScript表达式,不支持语句和流控制;正确示例为{{count+1}}、{{isActive?'active':'inactive'}},错误示例为{{if(count>0){return'yes'}}}、{{letx=1}}。298 收藏 -
rate属性的合法取值范围是0.1到10.0,但实际可用区间更窄:低于0.5易卡顿断句,高于2.0常见丢词失真,iOSSafari超过1.8可能忽略设置。462 收藏 -
Less中when必须嵌套在选择器内使用,如.button{&when(@size=small){...}},不支持直接.clswhen(@cond){};条件判断仅在编译期生效,依赖预定义变量,无运行时能力。233 收藏 -
使用style.cssText一次性写入多条CSS声明可减少重排次数、提升性能,但会清空原有内联样式;安全叠加需用+=并前置分号兼容旧IE;推荐优先使用classList或封装工具函数。414 收藏 -
内联缓存(IC)通过缓存属性查找结果并比对隐藏类实现提速,而非多存数据;其性能取决于对象结构是否统一,单态时最快,多态次之,超态则退化为慢路径。286 收藏 -
正确做法是用position:absolute;left:-9999px视觉隐藏文件输入框以保留可交互性,再通过按钮点击事件同步调用其click()方法触发选择对话框,并监听change事件获取FileList。430 收藏 -
移动端进度条应使用transform:scaleX()替代width+transition,因其不触发重排、GPU加速更稳;需配合requestAnimationFrame、分段更新、防抖及老安卓兜底方案。167 收藏 -
合并表格单元格本质是定义矩形区域起点,后续行td数量须动态减去被colspan/rowspan占用的列数,否则引发结构错误而非渲染异常。491 收藏 -
:focus-within生效需父元素可聚焦(如form或tabindex="-1"),否则不触发;高亮错位需统一box-sizing:border-box;鼠标点击不触发需检查focus事件冒泡;Safari旧版需JSfallback监听focusin。249 收藏 -
快速排序的核心逻辑是分治+原地分区:每次选pivot将数组划分为小于、等于、大于三部分,用双指针原地交换实现O(logn)空间复杂度。434 收藏 -
根本原因是未处理初始渲染时机、变量作用域和样式优先级三处硬伤:媒体查询异步导致闪屏;:root变量无法被媒体查询动态回写需重置并加fallback;第三方组件需用[data-theme="dark"]强制接管并提升选择器优先级。432 收藏 -
JavaScript代码分割是借助Webpack、Vite等工具和import()动态导入,将大文件按需拆分为小chunk以优化加载。常见方式包括路由级分割、公共依赖提取(如splitChunks)、条件性功能加载,核心好处是提升首屏速度、缓存效率、内存占用及团队协作。218 收藏 -
★和☆是最简星评方案,需UTF-8声明、CSS控色与大小,仅支持整数分,IE8/XP可能失效,JS动态生成宜用数字实体防编码问题。358 收藏 -
<wbr>需在容器宽度不足且存在语义分隔点时才生效,必须配合max-width、white-space:normal和overflow-wrap:break-word等CSS,避免word-break:break-all;应插在URL、驼峰命名、邮箱等天然断点处,禁插单词或数字中间。140 收藏