-
权限控制通过角色或权限码实现,前端根据用户权限动态控制界面显示与路由访问。1.基于角色判断用户是否有权访问特定功能;2.使用权限码实现细粒度控制,如'edit:post';3.路由守卫拦截无权访问路径;4.封装指令控制DOM元素渲染。需妥善管理权限数据并处理登录状态变化。
-
padding应设为0.75em1em等相对单位值,配合line-height1.4~1.6、box-sizing:border-box及合理fallback字体,才能兼顾呼吸感与一致性。
-
主轴空间分配由flex-grow、flex-basis和flex-shrink协同控制,结合gap与min-width可实现灵活稳定的布局。
-
按钮点击没反应的首要原因是onclick未在正确环境下执行,如浏览器禁用JS或页面以file://协议打开;其次检查DOM是否加载完成、ID拼写是否一致、按钮是否被遮挡或设置了pointer-events:none;表单内按钮需明确type属性并用preventDefault()阻止默认刷新。
-
元编程指程序能操作代码本身,JavaScript通过Proxy和Reflect实现。Proxy可拦截对象操作如get、set,用于日志、验证等;Reflect提供统一的函数式对象操作方法,常与Proxy配合使用。两者结合广泛应用于响应式系统(如Vue3)、调试监控、权限控制等场景,是现代框架核心机制之一。
-
HTML中无原生alert横幅,需用div+position:fixed实现顶部/底部通知;JS控制显隐时须防重复添加、手动关闭残留及自动关闭前校验;移动端需vw宽度、aria-label、高度限制和硬件加速。
-
最干净的响应式列数切换方案是直接在媒体查询中修改grid-template-columns,移动端用1fr、PC端用repeat(3,1fr)或1fr1fr1fr,并同步调整gap、子项尺寸及兼容性处理。
-
全屏滚动应优先使用CSSscroll-snap-type与scroll-snap-align实现,Safari13.1前需补scroll-snap-stop:always;禁用overscroll-behavior防橡皮筋,用IntersectionObserver监听页面切换,避免JS模拟滚动性能问题。
-
@import不能解耦页脚CSS,因它不提供作用域隔离,所有样式仍全局生效;真正解耦需作用域控制,如模块化引入、BEM命名、容器前缀选择器及避免通配符和!important。
-
flex:none是flex:00auto的简写,表示不放大、不缩小、初始尺寸由内容决定,并非“清空”而是显式禁用伸缩行为。
-
浮动元素间4px间隙源于HTML换行符被解析为空白字符,在font-size:16px且line-height未设0时撑出行高;根治法为父容器font-size:0、HTML去空格或vertical-align+line-height:0,而非依赖overflow:hidden。
-
实时通信技术中,WebSocket支持全双工通信,适用于高频交互;Socket.IO提供兼容性与附加功能,适合复杂场景;SSE用于服务器单向推送,轻量简单。1.WebSocket实现客户端与服务器双向通信;2.Socket.IO具备降级机制与断线重连;3.SSE基于HTTP实现服务端持续推送;4.选择依据:双向选WebSocket或Socket.IO,单向推用SSE,高并发优选原生WebSocket。
-
Symbol是JavaScript中用于创建唯一值的原始类型,常用于避免对象属性命名冲突;每次调用Symbol()都会返回唯一值,即使描述相同,因此sym1===sym2为false;用Symbol作属性名可使多个模块添加同名属性而不覆盖;Symbol属性不会被for...in、Object.keys()或JSON.stringify()遍历或包含,需通过Object.getOwnPropertySymbols()显式获取;Symbol适合添加私有或元信息属性,防止命名碰撞和意外修改。
-
rAF比定时器更适合动画,因其与屏幕刷新率同步、自动暂停、无需手动计算帧间隔;基础用法需递归调用,推荐使用时间戳控制进度;注意取消动画、避免强制重排、优先使用transform/opacity,并可添加polyfill兼容旧浏览器。
-
频繁读写DOM几何属性会触发多余回流,应批量读写分离、用transform替代高代价CSS属性、合理使用contain隔离布局影响。