这是一个基于HTML和CSS的弹幕播放器网站。它使用了绝对定位和透视效果来实现弹幕的居中显示。

该网站的主结构由一个dm-canvas元素组成,它占据整个视口并覆盖在其他内容上方,作为弹幕的容器。每个弹幕会以一个b-danmaku元素的形式呈现,具有以下样式:

  • position:absolute:弹幕相对于容器进行定位;
  • top:0; left:0:将弹幕放置在容器左上角;
  • line-height:1.125:设置弹幕的高度与字体大小相匹配;
  • white-space:pre:保留文本中的空格和换行符;
  • -webkit-perspective:500px; perspective:500px:设置透视效果的值为500px,使弹幕呈现出3D立体效果;
  • pointer-events:none:禁止用户直接点击弹幕元素;
  • will-change:transform opacity:浏览器将在下一次刷新前更新弹幕的位置和透明度;
  • visibility:hiddenopacity:0!important:隐藏并强制显示可见性为隐藏的弹幕元素。

当鼠标悬停在弹幕上时,通过添加.b-danmaku-hover类,可以改变弹幕的层叠顺序(z-index),使其显示在上面。

为了实现弹幕居中显示,可以使用.b-danmaku.b-danmaku-center类,该类包含以下样式属性:

  • left:(100% / 2) * var(--width):将弹幕的左侧定位在容器宽度的一半处,实现水平居中;
  • transform translateZ(var(--depth)):添加垂直偏移量,模拟深度效果。其中,var(--depth)是一个动态变量,根据弹幕的层数而变化。

以上是该网站的主要设计思路和技术特点。通过这种方式,用户可以在观看视频时实时交互并参与到弹幕讨论中,增强用户体验。