前端技术文章
-
用rem+viewport缩放控制最稳妥,但必须禁用text-size-adjust,否则iOSSafari会强行放大小字号文本;根本原因是系统「可读性缩放」和浏览器对viewport解析差异,导致手机和平板文字表现不一致。327 收藏 -
页面标题和metadescription必须服务端渲染进HTMLhead,客户端JS更新无效;字符数需严格控制(title50–60,description120–160),且每页唯一、动态生成、语义准确。327 收藏 -
原生popover是布尔属性,仅通过是否存在生效,不可赋值;必须静态存在于DOM中且ID匹配popovertarget;需显式设置z-index避免被原生控件遮挡;JS调用前须确保属性已存在并检测浏览器支持。326 收藏 -
canvas.width/height设绘图缓冲区分辨率,style.width/height仅控制CSS显示尺寸;二者不一致会导致缩放失真;正确做法是按devicePixelRatio动态设置缓冲区并用CSS匹配显示尺寸。326 收藏 -
trigger是Vue3响应式系统中负责派发更新的核心机制,由Proxy的set拦截器隐式调用,根据操作类型(SET/ADD/DELETE)触发对应依赖;它与triggerRef的区别在于:前者是内部函数作用于reactive/ref,后者是供开发者手动唤醒shallowRef响应的API。326 收藏 -
crossorigin="anonymous"是<script>标签中实现跨域模块安全加载的关键属性,它强制请求不携带凭据(如Cookie、Authorization),要求服务端响应Access-Control-Allow-Origin且不可设Access-Control-Allow-Credentials:true,同时屏蔽脚本错误详情、保护模块内部状态,并影响integrity校验行为;CDN加载、动态import()或需调试sourcemap时必须显式声明。326 收藏 -
展开运算符(...)实现浅拷贝并覆盖属性,即先展开原对象再以后面同名属性为准;仅复制顶层属性,嵌套引用类型仍共享内存;支持解构排除、动态键及条件更新,比Object.assign更声明式。326 收藏 -
HTML5的<mark>标签在转PDF时默认不保留高亮,需显式定义CSS样式并选用支持该标签的工具;wkhtmltopdf和WeasyPrint支持但表现不同,pdfmake/jsPDF则完全忽略,推荐用class替代并配合打印预览验证。326 收藏 -
对象解构中别名(用冒号)解决命名冲突,默认值(用等号)仅对undefined生效;二者可共存,如{username:loginName='访客'},先重命名再判断是否undefined。326 收藏 -
pattern属性是:valid生效的前提,仅对文本类输入有效且需注意全匹配机制、移动端兼容性及JS补位校验。326 收藏 -
事件冒泡与捕获是 JavaScript 中处理事件的两种机制,理解它们有助于更好地控制事件行为。以下是详细解释:一、事件冒泡(Event Bubbling)定义: 当一个元素上的事件被触发时,该事件会从该元素开始,向上传播到其父元素,直到传播到 document 或 window。示例: 假设有一个嵌套结构:
事件冒泡和捕获的本质区别是传播方向不同:捕获阶段从document向下传递至目标元素,冒泡阶段从目标元素向上传递回document;两者是浏览器固定执行的两个连续阶段,非互斥模式。325 收藏
银行卡号掩码处理保留前4位和后4位,中间用星号替代;正则模式为^(\d{4})\d{7,15}(\d{4})$,配合代码动态计算星号数量,兼顾15–19位卡号兼容性。325 收藏
纯CSS无法直接美化原生单选框,需隐藏input并用label+伪元素模拟;批量“选中所有”单选框在逻辑上不可行,因同name单选框组天然互斥。325 收藏
Less的data-uri()函数需静态路径、不支持变量或构建别名,SVG易因BOM/XML声明静默降级,Safari不支持content:url(data:),CSP须配置img-src'self'data:。325 收藏
KeepAlive最大缓存实例数必须通过max属性显式设置正整数,否则内存持续累积;超出时按LRU自动淘汰最久未用实例,并需配合include/exclude精准控制缓存范围及组件内手动清理副作用。325 收藏