bas icon indicating copy to clipboard operation
bas copied to clipboard

两个属性问题

Open hozuki opened this issue 7 years ago • 5 comments

  1. 建议统一 contenttext。也许是 text 支持自定义格式文本而 button 只支持普通文本?
  2. 百分比数值是怎么计算的?x = 50% 默认基于可视区域宽度,那么 fontSize = 10% 呢?宽度?高度?(绝对值)pt?em?

hozuki avatar Nov 16 '17 05:11 hozuki

我的理解是百分比在大部分地方就是浮点小数的简写?

文档里面似乎有说百分比fontSize对应 屏幕宽度*字体百分比px(不过这个其实有点堪忧,尤其是宽度很受portrait vs landscape影响(手机竖1080p等))感觉比较科学的应该是用父对象的高度吧?(没有父对象的话荧幕就算是父对象?)这样字号就不会因为观看设备不一样而变化了。。。

jabbany avatar Nov 17 '17 12:11 jabbany

我认为用屏幕宽度作为单位是可以的,但是要基于这样的假设:

  1. 视频大多是landscape的,无论是16:9还是4:3;
  2. 压制成的视频统一被缩放到16:9;
  3. 播放器设置为4:3时,弹幕仍然按照16:9的比例绘制(忽略播放器宽高比设置)。

用父对象的高度作为单位仍然没有解决portrait和landscape的问题。而且在portrait时还会造成视频很小而弹幕很大的问题。自然,一般用户不会将视频锁定为landscape的情况下,看着portrait的弹幕(示意图如下)。

image

hozuki avatar Nov 23 '17 11:11 hozuki

屏幕宽度是设备的屏幕宽度吧。。。我有一个比较奇葩的设备屏幕是1080*1920的(竖着1080p)但是这个设备所有软件在软件上都是横过来的,只是报告屏幕宽度是报告的竖着的。这种就会跪。。。感觉用设备屏幕宽度(硬件)判断一个抽象的大小不是很好。。。

第二点是,假如视频并没有占用100%宽度(参考现在很多带刘海的手机),使用屏幕宽度的话弹幕还是一样大,这明显不对(因为比如模拟弹幕的话,不知道设备宽度,那弹幕大小就不能确定/可能是任意大小)。使用父对象宽度虽然不是完美的,但是至少可以解决这个问题。使用视频/或父对象宽度的好处是不依赖设备的属性,可以唯一的确定渲染时的大小。使用设备屏幕宽度无法做到。

jabbany avatar Nov 24 '17 15:11 jabbany

我查了一下(以前还真没注意相关的概念),如果是网页,实际获取的只能是viewport的宽度而不是屏幕物理宽度。你说的“带刘海”这样的特征,是针对物理宽度的。

一定要大小相近,那就只好都用物理长度了。

我想的是根据像素宽度等比缩放。这么做,如果viewport的尺寸映射是正确的话,手机上应该正常(比如小屏幕的iPhone),但在PC端大屏上可能会出问题。后一种情况我还没想好对策。

hozuki avatar Dec 01 '17 09:12 hozuki

我觉得解决scaling问题比较好的方法不应该通过定义百分比字号(因为这个百分比跟别的元素的scaling未必能正确对应)。其实最好的办法应该是参考SVG,定义“默认viewport空间”,然后通过拉伸整个空间来实现。这样可以保证设计的样子和最终显示的样子总是一样的,而且还能自动使用浏览器自带scaling功能。

比较简单的方法比如定义默认viewport为:

  • 一个常量(旧版flash 572x384,新版672x438
  • 视频大小
  • 固定格式(1080p等)

(另外之前推荐百分比参数用高度是因为字体字号是基于高度定义的,所以用高度可以和普通弹幕轨道数量同步。使用宽度设置一个高度值非常诡异,而且在任何非等宽字体下都需要很多脑力。)

jabbany avatar Dec 01 '17 10:12 jabbany