【问题标题】:Canvas added to YouTube is not visible添加到 YouTube 的画布不可见
【发布时间】:2022-01-04 01:58:54
【问题描述】:

我正在关注the WebGL tutorial from MDN(code、demo (black rectangle))来创建一个 WebGL 画布。

目标是 YouTube 的用户脚本(带有 WebGL 着色器,即视频效果)。所以我打开了一个 YouTube 视频页面并将下面的代码(来自上面的链接)放入 JavaScript 控制台。画布已创建,但它是不可见的。

默认情况下,画布继承了 YouTube 的大量 CSS。我是否忽略了一些使其不可见的 CSS 属性?在这种情况下要注意什么?它应该是黑色的。

let container = document.getElementsByClassName( 'video-stream html5-main-video' )[0].parentElement;
let canvas = document.createElement('canvas')
canvas.setAttribute('id', 'glcanvas')
canvas.setAttribute('width', '1000')
canvas.setAttribute('height', '1000')
container.appendChild(canvas)

// Initialize the GL context
const gl = canvas.getContext("webgl");

// Set clear color to black, fully opaque
gl.clearColor(0.0, 0.0, 0.0, 1.0);
// Clear the color buffer with specified clear color
gl.clear(gl.COLOR_BUFFER_BIT);

【问题讨论】:

    标签: javascript css canvas youtube webgl


    【解决方案1】:

    您的画布在那里,但不在顶部。设置一些额外的 CSS 用于定位。例如:

    position: fixed;
    z-index: 1000;
    

    【讨论】:

    • 谢谢!通过控制台:canvas.setAttribute('style', 'position: fixed; z-index: 1000;')
    • 为什么除了fixed 之外的所有position 选项都使它不可见,即使z-index 很高?
    • @root z-index 没有定位没有效果。另见:developer.mozilla.org/en-US/docs/Web/CSS/z-index
    • 您的链接显示z-index 适用于“除static 之外的任何position”。但在我的例子中,除了fixed 之外,没有一个使元素可见,即使z-index 始终是1000。我不明白为什么。
    猜你喜欢
    • 2016-07-08
    • 2016-02-23
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    相关资源
    最近更新 更多