百科问答小站 logo
百科问答小站 font logo



用 Canvas 实现虚拟列表的难点在哪里? 第1页

  

user avatar   catchen 网友的相关建议: 
      

排版,尤其是文字排版。现在每一个浏览器的文字排版都是自己实现的,没有统一的算法。一些很基本的排版,例如说在显示不超过两行文字的空间里面显示任意长度的文字,这就是个大问题:

  1. 如何知道文字是否超过一行?不同字体不同语言的字符宽度各不相同,中文字符大多数情况下是等宽的,英文和数字就不是了,标点符号宽度要看上下文。
  2. 超过一行的话具体在哪里换行?英文换行只能发生在单词之间,否则要加连字符;中文换行时,一部分标点符号不能出现在下一行行首,另外一部分标点符号不能出现在上一行行尾。其它语言还有别的要求。
  3. 超过两行的话在哪里加省略号?不同语言的省略号占用不同的宽度,省略号前应该是一个完整的英文单词或中文字符,理想情况下中文最好按词截取而不是按字截取。

当你明白到文字渲染当中一个看似简单的 CSS overflow 属性有多复杂时,你就会想把这些工作扔回给浏览器的布局引擎处理,而不是自己从零写一套。




  

相关话题

  慕课网收费的视频质量怎么样? 
  怎么评价淘宝 Web 前端工程师对微软 WP 系统 Web 不兼容的回应? 
  怎么看待一个阿里工作四年出来的,但却连children()这样的方法都不知道是什么意思的前端? 
  为什么都说富文本编辑器是天坑? 
  美国国会举行听证会讨论 「Web3.0」,目前技术发展状况如何?未来可能在哪些领域带来新发展? 
  应对流量劫持,前端能做哪些工作? 
  关于下面这段代码的报错是怎么个过程? 
  如何看待 TS 团队发起的 「JS 类型标注」提案 Types as Comments? 
  张鑫旭称前端工程师应该为用户体验负责,对此你怎么看? 
  为什么知乎前端圈普遍认为H5游戏和H5展示的JSer(负责前端界面工作的程序员)不属于前端工程师呢? 

前一个讨论
代码全是调包的,怎么申请专利?
下一个讨论
鱼缸可以做到完全永久不换水吗?





© 2025-05-16 - tinynew.org. All Rights Reserved.
© 2025-05-16 - tinynew.org. 保留所有权利