-
用CSSGrid+class切换实现列表/网格视图互切,核心是grid-template-columns:repeat(auto-fit,minmax(280px,1fr))配合预设.layout-grid/.layout-list类,JS仅切换class、不操作内联样式,确保响应式与可维护性。
-
通过设置flex-direction:column、flex-wrap:wrap和align-content,可实现Flexbox容器内子元素按列多行排列并控制列间对齐方式。
-
V8不做传统逃逸分析,所有JS对象默认堆分配;闭包变量进堆是因语言模型决定,而非“逃逸”,其性能代价在于内存局部性差、缓存命中率低及易晋升老生代。
-
DeclarativeShadowDOM是什么,为什么服务端渲染需要它传统attachShadow()只能在客户端JS中调用,服务端(如Node.js、SSR框架)无法执行JS,因此无法生成ShadowRoot。DeclarativeShadowDOM提供了纯HTML方式声明ShadowRoot,让服务端能直接输出带作用域样式的结构——关键在于用或元素,浏览器解析时会自动将其内容提升为ShadowRoot。服务端如何输出合法的Declarative
-
Memoization的核心是用空间换时间,通过缓存纯函数的计算结果提升性能;关键在于为数组输入生成稳定可哈希的键(如JSON.stringify),并注意适用场景与限制。
-
原生CSS+少量JS可实现可靠轻量页面滑动:overflow-x+flex适用于手动滚动场景,需设flex布局、隐藏滚动条;transform+transition适合全屏切换,需transition写在容器上并用transitionend清理;移动端手势须touchstart立即preventDefault、判断位移防误触、touchend惯性补位,并注意passive:false和事件卸载。
-
需用appearance:none及各浏览器伪元素(如::-webkit-slider-thumb)定制样式,进度填充须JS计算百分比并动态更新覆盖层宽度,移动端需加touch-action:manipulation防跳动,accent-color仅快捷设置thumb主色且有兼容限制。
-
list-style-position:inside会使序号被浮动元素遮挡或挤出可视区,因序号渲染在内容盒内而浮动元素脱离文档流;改用outside可快速解决,或通过display:flow-root创建BFC并配合padding-left保留序号空间。
-
实现响应式侧边栏菜单需通过CSS媒体查询和定位控制显示状态。1.HTML结构包含侧边栏与主内容区;2.移动端默认隐藏侧边栏(left:-250px),hover时滑出;3.屏幕≥768px时,侧边栏固定显示,position设为static;4.可选JS添加汉堡按钮控制显隐,提升交互体验。
-
rem精度问题源于基准值过小、换算引入小数及浏览器亚像素舍入三重误差叠加;推荐用20px作基准使常用尺寸转为一位小数rem,避免12px/16px等易产生循环小数的值,并确保postcss-pxtorem的rootValue与实际htmlfont-size严格一致。
-
应给input的直接父容器设position:relative作为absolute提示的定位参照,并用calc(100%+4px)替代top:100%以规避高度计算误差,同时设置width:100%、white-space:normal、z-index:10及opacity过渡隐藏,确保提示稳定显示。
-
Notepad++编辑HTML需三步避坑:①保存编码选“UTF-8无BOM”,否则DOCTYPE前隐含字符致怪异模式;②图片/CSS路径须相对于HTML文件位置,非编辑器路径;③file://协议下必须Ctrl+F5强制刷新,或起本地服务http://localhost:8080。
-
JavaScript类型转换分显式和隐式:显式由开发者调用Number()、String()、Boolean()等控制,隐式由引擎在==、+、!等操作中自动触发;应优先用===、显式转换和类型检查来规避bug。
-
display:none彻底移出渲染流,触发重排;visibility:hidden保留占位仅隐藏内容,触发重绘,且子元素设visible仍可见。
-
JavaScript单页应用路由核心是利用HistoryAPI(pushState/replaceState/popstate)或hash模式实现URL变更不刷新页面,通过监听URL变化匹配路由表并动态渲染视图,主流框架如ReactRouter、VueRouter均基于此原理封装。