前端技术文章
-
用一个带校验状态、禁用状态和兄弟提示的表单例子,拆清 CSS :has() 的相对选择器边界、特异性影响与可维护写法。485 收藏 -
ul嵌套必须将内层ul作为父级li的直接子元素,否则结构断裂、编号重置、键盘导航失效;ul本身无序号,层级编号需CSScounter实现;嵌套超三层应优先用details/summary。485 收藏 -
WebWorkers是HTML5提供的后台线程API,用于在独立于主线程的环境中执行JavaScript脚本,避免阻塞UI。通过newWorker('worker.js')创建实例,利用postMessage传递数据,onmessage接收结果,实现主线程与Worker线程间的消息通信。Worker分为DedicatedWorker、SharedWorker和ServiceWorker,其中DedicatedWorker适用于单一脚本的高负载计算任务。由于线程间数据通过结构化克隆算法序列化传输,大对象传递485 收藏 -
100dvh是当前最简有效的解法,它表示当前可见视口高度,实时响应地址栏收放、软键盘开关和横竖屏切换;iOS16.4+、AndroidChrome109+已支持,需用@supports安全降级。485 收藏 -
arc()是圆弧路径构造函数而非绘图命令,需配合beginPath()、stroke()/fill()及样式设置才能显示;参数中角度单位为弧度,x/y为圆心坐标,radius≥0,anticlockwise控制绘制方向。485 收藏 -
sticky失效的根本原因是父容器未形成可滚动上下文:高度不足、overflow:hidden/auto/scroll截断、未设top等偏移值,或父容器高度≤sticky元素自身高度。485 收藏 -
tfoot必须写在tbody前面,因为HTML规范强制要求该顺序;浏览器解析时若发现tfoot在tbody后会自动重排DOM,导致CSS定位失效、JS节点顺序异常、打印错乱及首屏优化失败。485 收藏 -
linkrel="preload"as="image"失效主因是路径无效、类型不匹配、时机过晚或MIME不符;应置于head顶部、验证Content-Type、配合fetchpriority="high"精准预加载首屏关键图。485 收藏 -
formnovalidate属性必须加在<buttontype="submit">或<inputtype="submit">上且位于<form>内;它仅对提交按钮生效,用于单按钮跳过校验,与表单级novalidate互斥但优先级更高。485 收藏 -
navigator.deviceMemory返回近似分级值(如0.5、1、2、4、8GB),非精确内存容量,仅Chrome63+和Edge79+支持,Firefox/Safari不支持,HTTP下返回undefined,需结合hardwareConcurrency等信号综合判断并降级。485 收藏 -
构建评论区的表单时,通常使用 HTML 的答案:使用form标签构建评论区,通过textarea实现多行文本输入,设置name、rows、cols、placeholder、maxlength等属性优化交互,并结合CSS提升用户体验。485 收藏
纯CSS无法实现数字动态滚动,必须用JavaScript配合requestAnimationFrame控制数值演进,结合IntersectionObserver触发及正则提取纯数字,确保平滑、精准、低开销。485 收藏
Grid子项默认不继承父容器高度,需通过grid-template-rows(如1fr)定义行轨道高度,align-self:stretch仅在子项无显式高度且轨道尺寸确定时生效。485 收藏
BFC是解决浮动侧边栏高度不一致导致底色断层的标准解法,推荐overflow:hidden触发;底色伪装和边框拉伸属临时补救,本质未解决问题;现代布局应优先选用Flex或Grid。485 收藏
最简实现左右分栏拖拽需用resize:horizontal+overflow:hidden+display:flex,左栏设min-width、flex-shrink:0,右栏flex:1;需ResizeObserver监听左栏尺寸变化,用contentRect.width获取准确宽度。485 收藏