You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Card内的WebM视频链接从图片改为可播放视频?

解决方案:将WebM视频链接转为可播放元素

问题说明

当前代码用img标签加载WebM格式的视频链接,仅能显示图片占位符,无法实现播放功能。需要替换为原生video元素,让用户可以直接播放视频。

修改步骤及完整代码

只需要调整Loadanswers函数中创建视频元素的逻辑,同时微调卡片样式避免布局错乱:

</head>
<body>
    <h1>Welcome</h1>
    <h4>Get A Free Video Answer For Your Question</h4>
    <input class="question_input" type="text" placeholder="write your question here" />
    <button class="button" type="submit" onclick="submit_question()">submit</button>
    <div class="container"></div>

    <script>
        function submit_question(){
            const Ans_value = document.querySelector('.question_input').value;
            //send to server
            fetch('http://localhost:3000/answers', { 
                method:'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({Ans_value})
            })
        }
        function newEl(type, attrs={}){
            const el = document.createElement(type);
            for (let attr in attrs ){
                const value = attrs[attr];

                if (attr == 'innerText') el.innerText= value;
                else el.setAttribute(attr, value);
            }
            return el;
        } 
        async function Loadanswers(){
            const res = await fetch('http://localhost:3000/answers');
            const answers = await res.json();

            const ctr = document.querySelector('.container'); 

            answers.forEach(answer => {
                const card = newEl('div', {class: 'card'});
                const searchresults_quant = newEl('h4',{innerText: answer.searchresults_quant});
                const searchresultsq_title = newEl('h4', {innerText: answer.searchresultsq_title});
                const searchresultsq1 = newEl('h4', {innerText: answer.searchresultsq1});       
                // 替换img为video元素,添加播放控制属性
                const Q_url1 = newEl('video', {
                    src: answer.Q_url1,
                    controls: true,
                    width: '100%',
                    preload: 'metadata'
                });
                
                card.appendChild(searchresults_quant);
                card.appendChild(searchresultsq_title);
                card.appendChild(searchresultsq1);
                card.appendChild(Q_url1);

                ctr.appendChild(card);
            })  
        }    
        Loadanswers();
    
    </script>
    <style>
        .button{
            float: left;
            width: 20%;
            padding: 10px;
            background: #2196F3;
            color: white;
            font-size: 17px;
            border: 1px solid grey;
            border-left: none; /* Prevent double borders */
            cursor: pointer;
        }
        .question_input{
            display: block;
            padding: 10px;
            font-size: 17px;
            border: 1px solid grey;
            float: left;
            width: 80%;
            background: #f1f1f1;
            
        }
        .container{
           display: table-caption;
        }
        .card{
            margin: 10px;
            /* 原padding过大导致内容溢出,调整为合适值 */
            padding: 20px;
            background-color: rgb(191, 191, 245);
            box-shadow: 0 4px 8px 0 rgba(231, 10, 10, 0.2);
            transition: 0.3s;
            width: 50%;
            /* 去掉固定高度,让内容自适应 */
        }
        /* 可选:给视频添加圆角,和卡片风格统一 */
        .card video {
            border-radius: 4px;
            margin-top: 10px;
        }
    </style>

</body>

关键修改点

  • 替换元素类型:将img标签改为video标签,现代浏览器原生支持WebM格式的视频播放
  • 添加播放控制:设置controls: true,让视频显示播放、暂停、音量等交互按钮
  • 优化加载与布局:设置width: '100%'让视频自适应卡片宽度,preload: 'metadata'仅加载视频元数据(封面、时长),提升页面加载效率
  • 调整卡片样式:把原卡片的padding: 300px改为20px,去掉固定高度,避免视频被挤压或内容溢出

内容的提问来源于stack exchange,提问作者AMEER SAID

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:15:42