HTML
history和hash路由实现原理?区别是什么
location.hash
:实际就是URL中 # 后面的东西。不会被包含在http请求中,不会重新加载页面;
- hash监听事件:
window.addEventListener(‘hashchange’, func, false);
- 每一次hash的改变,均会新增一个浏览器的访问历史记录;
- 功能使用:更新视图但不重新请求页面;
- 特点:兼容性好,不美观;
location.history
:使用了HTML5 History Interface中新增的pushState()
和replaceState()
方法。
- 功能:
back()
、forword()
、go()
以及对历史记录进行修改; - 功能使用:单页应用前端路由,更新视图但不重新请求页面;
- 特点:美观,但是刷新页面会出现404,需要后端进行配置
CSS
css的盒子模型的计算
css的盒子模型(box-sizing
),是决定元素在页面上占据的空间计算。
content-box
:标准盒子模型(默认值):width = contentWidthborder-box
:IE盒子模型:width=contenWidth+borderWidth+paddingWidth
国际化怎么做,中文一个字,阿拉伯语很长一串,怎么实现样式的一致?
国际化一般使用【vue-i18n】插件库实现。
当处理不同语言的文本长度差异的时候,一般处理办法:
- 使用流式布局:flex/grid设计,允许根据长度自动调整容器大小;
- 文本截断+省略号;
- 最大、最小宽度自适应;
- 动态调整字体大小(比较复杂计算);
- 响应式系统设计,适应不同屏幕尺寸和设备;
- 与客户沟通各个方案的优劣,择取想法做优化啦~