如何将 HTML 内容置于 Flash 影片之上?

Posted

技术标签:

【中文标题】如何将 HTML 内容置于 Flash 影片之上?【英文标题】:How do I place HTML content above a Flash movie? 【发布时间】:2010-09-12 12:26:46 【问题描述】:

我正在处理的网站有 Flash 标头(使用 swfobject 嵌入它们)。现在我需要编写一些应该与 Flash 电影重叠的 html

我尝试在 Flash 元素的容器和(绝对定位的)div 上设置 z-index,但它一直在 Flash 电影后面“消失”。

我希望有一个 CSS 解决方案,但如果有一点 JS 魔法可以解决这个问题,我愿意。

更新:谢谢,将 wmode 设置为“透明”基本上修复了它。只有 Safari/Mac 在第一次展示时仍将 div 隐藏在 flash 后面。当我切换到另一个应用程序并返回时,它会在前面。我可以通过将 div 的初始样式设置为 display: none; 并在页面加载半秒后通过 JS 使其可见来解决此问题。

【问题讨论】:

你能不能把一个工作的例子放在一起,因为我有同样的问题,不能让它工作,很高兴看看是我还是我的浏览器.. 【参考方案1】:

确保 FlashVar“wmode”设置为“透明”或“不透明”,但不是默认设置,“窗口化”...然后您应该能够使用 CSS z-index

【讨论】:

wmode 就像埋在南美洲最深处丛林中的金色偶像。我记得我第一次听到这件事时欣喜若狂。 请记住,它不适用于 Linux 浏览器,除了 Flash 10 的测试版和最近的浏览器(Fx 3.0.0+、Opera 9.50+,不知道其他浏览器) 有多少 Linux 用户不让他们的浏览器和相关程序保持最新?这是一个精明的人口统计数据。 有相当大的一部分linux用户原则上也会运行flash/swf杀浏览器插件,所以我在开发时尽量不要太担心它们。 这些模式的区别:***.com/questions/886864/…【参考方案2】:

后续说明:正如您在更新中发现的那样,让 HTML 显示在 Flash 之上目前是一个挑剔的命题,即使使用您发现的 JS 魔法,您也应该期望 Flash 会在某些情况下屏蔽您的 HTML使用浏览器外、旧版本等的查看器。

如果覆盖任意大量的浏览受众对您很重要(例如移动设备),那么从长远来看,重新设计您的内容以避免重叠可能会让您头疼。

【讨论】:

你当然是对的。在这种情况下,客户并不关心,但总的来说这是合理的建议。 本例中的另一个问题是,有多少移动设备支持 Flash? iPhone,我敢肯定,也许是一些 Windows Mobile 智能手机,但在那之后呢? (另外,我不精通移动网络开发,所以我真的不知道......) 史蒂夫:打那个,倒过来!大多数现代智能手机都支持 Flash,但 iPhone 不支持。具体来说,大多数现代手机(即带有网络浏览器的手机)都有 Flash Lite,通常是 2.x 或 3.x 版本。 Flash Lite 2.x 与 Flash 6 大致相似,而 Lite 3.x 与 Flash 8 相似。【参考方案3】:

使用以下样式的代码,它适用于 Firefox 和 chrome

<object id='myId'  width='700' height='500'>
            <param name='movie' value='images/ann/$imagename' />
            <param name='wmode' value='transparent' />
            <!--[if !IE]>-->
            <object type='application/x-shockwave-flash' data='images/ann/$imagename' width='700' height='500' wmode='transparent'>
            <!--<![endif]-->
            <div>
                <h1>Please download flash player</h1>
                <p><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></p>
            </div>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>

【讨论】:

【参考方案4】:

我想补充一点,您必须记住在 OBJECTEMBED 标签中设置 WMODE 参数(“透明”)!

点击链接了解详情: http://kb2.adobe.com/cps/142/tn_14201.html

【讨论】:

【参考方案5】:

就像 Steve Paulo 所说的那样,当你的 flash 顶部的 HTML 调用更多 flash 时,有趣的部分就来了……

哦,我们玩那个很有趣,其中涉及将 z-index 设置为实际上更低,以说明 flash 认为它是蜜蜂的膝盖,因此必须始终在顶部。

【讨论】:

【参考方案6】:

设置 这个flash变量是这样的

s1.addParam("wmode","transparent");

那么 在 div 标签中使用这种样式

style="z-index:inherit; 

问题会解决的。

【讨论】:

以上是关于如何将 HTML 内容置于 Flash 影片之上?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 HTML 链接导航到 Flash 影片中的帧?

如何将 Flash 影片剪辑转换为 png 序列?

如何在 Flash html5 画布中更改影片剪辑的宽度?

如何使用顶部的按钮在 Flash 中缩放影片剪辑

在flash如何制作一个的鼠标跟随特效

如何从 Flash 中的 MovieClips 中获取多边形?