在任何位置,移动、调整大小和对齐都是独立且可预测的操作。此外,用户体验可以借鉴用户熟悉的范例,例如 Google Slides。
当以不同的宽度查看时,这种方法就会失效。具体来说,如果网站访问者的浏览器窗口大小小于给定块的x + 宽度,内容要么会被截断,要么需要水平滚动,这两种情况都会给网站带来负面体验。这种方式的定位对于视力较差、依赖增加浏览器缩放功能的用户来说也不好,因为这样做会增加某些内容被截断和无法阅读的可能性。
图表展示了使用绝对定位时如何切断块
虽然我们可以通过定义最大宽度“安全区”来解决这个问题,但这个限制太窄太严格,因此是一个大问题。我们可以通过存储 x、y、宽度和高度的百分比而不是像素值来改进这种方法,从 多米尼加共和国 whatsapp 号码数据 5 而减轻在不同浏览器宽度下切断内容或水平滚动的担忧。
Gif 演示了使用基于百分比的定位时块如何进行视觉更新
此版本非常适合线性缩放的块:例如,图像、形状、视频只要其纵横比保持不变,都可以以可变的大小显示。
但是文本块之类的东西呢?文本块不会像图像那样确定自己的纵横比。由于文本换行的方式,文本块高度取决于块宽度、文本内容、字体样式选项等。
想象一下这样一个场景:在文本块下方有一个按钮。当浏览器变小后,我们预计文本会开始换行,从而将按钮向下推。除非在我们的网站上运行 JavaScript 来根据屏幕宽度重新定位文本块,否则任何绝对定位和尺寸系统都无法实现这一点。在这些系统中,当文本开始换行并使文本块变高时,我们有两个选择:隐藏溢出、截断内容或将文本覆盖在下面的内容之上。这两种体验都很糟糕。
我们的需求列表不断增加,从整体上看似乎是不可能的:
移动、调整大小和对齐块需要可预测且独立
网站内容需要响应并在不同的浏览器尺寸下自然流动
随着屏幕变窄,文本换行需要将其下方的内容向下推,随着屏幕变宽,文本换行需要将其上方的内容向上推
避免在访问者网站上运行 JavaScript,因为 JavaScript 会根据宽度变化重新定位块。这样做会降低网站加载的性能,需要在首次绘制之前加载和解析,还会降低页面加载后的性能,增加响应浏览器调整大小事件而运行的计算
我们如何才能让用户自由地定位和调整元素的大小,同时还能让这些元素的高度可变,并在其增长时将内容向下推?