-
JavaScript结合Canvas和WebGL可实现计算机图形学,从2D绘图到3D渲染。1.Canvas通过getContext('2d')支持基本图形与动画;2.WebGL调用GPU进行3D渲染,需掌握着色器、缓冲区和矩阵运算;3.可实践Bresenham画线、光栅化、分形等算法;4.Three.js封装WebGL,简化3D场景构建与交互。
-
requestAnimationFrame是浏览器原生动画API,按屏幕刷新率执行且自动暂停;与setTimeout不同,它需递归调用、基于时间戳计算位移、及时cancel以避免泄漏。
-
答案:通过原生JS可操作Cookie实现客户端存储。使用getCookie读取指定名称的Cookie值,setCookie设置带过期时间的Cookie,deleteCookie通过设置过去时间删除Cookie,需注意路径、编码及Secure、SameSite等安全属性,适用于身份认证等需与服务器共享状态的场景。
-
User-Agent判断设备需用JavaScript读取navigator.userAgent并匹配关键片段(如iPhone、iPad、Android、MicroMessenger),再通过window.location.href跳转;不能仅靠CSS媒体查询,因其无法触发跳转;服务端跳转更优但须注意大小写、正则鲁棒性及Vary响应头。
-
掌握white-space、word-wrap和word-break属性可解决文本溢出问题:white-space控制空白符和换行,常用normal、nowrap和pre-wrap;word-wrap(overflow-wrap)用于长单词断行,break-word防止溢出;word-break定义字符间断行规则,break-all适用于表格防溢出;结合使用可实现单行省略、多行安全换行及中英文混合布局,提升页面美观性与健壮性。
-
使用Flexbox布局可轻松实现美观的按钮组,通过gap控制间距、border-radius统一圆角,并利用active类突出选中状态;连体按钮通过margin-left:-1px和overflow:hidden实现无缝连接;垂直排列适用于移动端,配合响应式设计提升用户体验。
-
dragstart中必须调用dataTransfer.setData(),否则拖拽失败;drop区需在dragover中preventDefault()才能触发drop;跨iframe需序列化数据;移动端不支持原生拖放,须降级处理。
-
Fetch是XMLHttpRequest的现代化封装,本质仍属AJAX;区别在于Fetch基于Promise、默认不带cookie、HTTP错误不reject、无原生上传进度监听,而XHR支持事件回调、凭证自动携带、上传进度及同步请求(已废弃)。
-
行内样式不一定覆盖外部CSS。因优先级受同一元素、同名属性及!important影响;其specificity为1000,高于class、id等,但遇外部!important、initial/unset值、CSS变量、媒体查询或JS动态修改时可能被反超。
-
使用overflow和padding可解决浮动导致的父元素高度塌陷。首先,通过设置父容器overflow:hidden触发BFC,使其包含浮动子元素,防止布局塌陷;其次,结合padding确保内容与边框间距,提升视觉效果,同时可添加clear:both的清除元素保证布局稳定。该方法无需复杂布局技术,兼容性好,适用于旧项目维护和需广泛浏览器支持的场景。
-
FIMOHTML导出不支持旋转角度参数,所有图形已固定渲染;需手动修改生成的HTML/CSS,如添加transform:rotate()或重绘SVGlogo。
-
MaterializeCSS不适合新项目:已停止维护、依赖jQuery且加载顺序敏感、不支持ESModule、CDN不稳定、初始化需手动控制、与原生日历冲突、CSS硬编码且无TypeScript支持。
-
CSS中url()路径错误是背景图不显示的主因,需按CSS文件位置而非HTML位置写相对路径;大小写敏感、Network查状态码、background简写覆盖、容器无尺寸等亦为常见原因。
-
HTML5游戏手机掉帧主因是requestAnimationFrame误用、图片未适配DPR、touchmove监听泄漏及WebGL纹理上传阻塞;应单层RAF驱动、预切@3x图、被动事件+及时解绑、初始化上传纹理并用texSubImage2D更新。
-
答案:通过RTCPeerConnectionAPI实现浏览器点对点通信,需创建连接实例、配置STUN服务器、交换SDP和ICE候选信息。发起方创建offer,接收方回应answer,双方通过信令通道传输连接数据,建立P2P连接后可传输音视频或文本。需在HTTPS或localhost环境下运行,结合WebSocket等实现信令交互。