当前位置: 首页 > 知识库问答 >
问题:

SVG与HTML5视频文本填充

冯野
2023-03-14

所以我一直在尝试创建和SVG文本标志,显示一个“嵌入”mpg4的字母。起初,我使用Adobe Illustrator并创建了我的徽标和SVG,虽然这给了我一个伟大的100%宽度响应的徽标在我的页面,但我不能在SVG中以任何方式包含视频元素。

现在我得到了一个Didot web字体,并且只是使用一个文本SVG,我从这个演示中复制并粘贴了F12工具的代码:http://tympanus.net/tutorials/animatedtextfills/index22.html

我现在想要做的是如何使这个徽标更大和100%的宽度响应屏幕宽度的变化。

当我编辑CSS类.wrapfont:时,我可以得到更大的文本,但SVG本身有一个固定的宽度,会切断大屏幕设备上的文本,我无法计算出来。我不认为这与视频的自然宽度和高度有关。

我正在更改SVGviewbox属性的值,但似乎无法概念化viewboxwidth=600height=300的性质,尤其是在父SVG中有一个嵌套SVG的情况下。

即使在阅读了这篇文章:http://tutorials.jenkov.com/svg/svg-viewport-view-box.html#viewbox,我仍然难以理解viewbox值是否在我的问题中发挥了作用。

实际上我认为不需要更改两个svg元素viewbox属性中的值。可能是em计算导致了与SVGtext元素计算有关的问题:

 <text text-anchor="middle" x="50%" y="50%" dy=".35em" class="text">
                        Couture Book
                    </text>
.mask__shape
    {
        fill: white;
    }

   
    .content
    {
        padding: 0 1em;
        text-align: center;
        width: 100%;
    }

    .wrap
    {
        width: 100%;
        position: relative;
        font: 700 2.5em/1 'Dido';
        text-transform: uppercase;
        margin: 0 auto;
        text-align: left;
        overflow: hidden;
        padding: 80px 0;
        -webkit-transform: translate3d(0,0,0);
    }

    .box-with-text
    {
        position: absolute;
        top: 50%;
        width: 100%;
        padding-top: 50%;
        -webkit-transform: translateY(-50%);
        transform: translateY(-50%);
    }

    .text-fill
    {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        margin: auto;
        overflow: hidden;
    }

    svg:not(:root)
    {
        overflow: hidden;
    }

    .svg-defs
    {
        width: 0;
        height: 0;
    }

    .svg-inverted-mask
    {
        position: absolute;
        top: 0;
    }

    .shape--fill
    {
        fill: #fff;
    }

    .text--transparent
    {
        fill: transparent;
    }
<div class="content">
        <div class="wrap">
            <svg viewBox="0 0 600 300" class="svg-defs">

                <!-- Symbol with text -->
                <symbol id="s-text">
                    <text text-anchor="middle" x="50%" y="50%" dy=".35em" class="text">
                            Couture Book
                        </text>
                </symbol>

                <!-- Mask with text -->
                <mask id="m-text" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse">

                    <rect width="100%" height="100%" class="mask__shape">
                    </rect>
                    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-text" class="mask__text"></use>

                </mask>
            </svg>

            <div class="box-with-text">

                <!-- Container for video -->
                <div class="text-fill">
                    <video class="video" src="http://tympanus.net/Tutorials/AnimatedTextFills/img/bokeh2.mp4" autoplay="" loop=""></video>
                </div>

                <!-- Visible SVG -->
                <svg viewBox="0 0 600 300" class="svg-inverted-mask">
                    <rect width="100%" height="100%" mask="url(#m-text)" class="shape--fill"></rect>
                    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-text" class="text--transparent"></use>
                </svg>
            </div>
        </div>
    </div>

共有1个答案

彭正谊
2023-03-14

计算出你的文本有多大。如果是500x100,那么制作您的ViewBox:

viewBox="0 0 500 100"

我不知道为什么您将文本定位在x=“50%”y=“50%”。这似乎有点奇怪。在文本元素中,xy坐标设置基线起始的位置。同样,如果您的文本是100高,那么您可能希望将坐标设置为接近于:

x="0" y="100"
 类似资料:
  • function checkVideo() { if(!!document.createElement('video').canPlayType) { var vidTest=document.createElement("video"); oggTest=vidTest.canPlayType('video/ogg; codecs="theora, vorbis"'); if (!oggTest

  • 问题内容: 即时创建元素并能够移动元素的最佳方法是什么?例如,假设我要创建一个矩形,圆形和多边形,然后选择这些对象并四处移动。 我了解HTML5提供了三个使之成为可能的元素:svg,canvas和div。对于我想做什么,这些元素中的哪一个将提供最佳性能? 为了比较这些方法,我正在考虑创建三个视觉上相同的网页,每个网页中都有页眉,页脚,小部件和文本内容。第一页中的小部件将完全使用元素创建,第二页中的

  • 我试图在基于bootstrap 2.2.2的设计中嵌入HTML5视频,但它在Firefox上不起作用,但它在chrome上运行良好,但在Firefox上说我尝试将这些添加到.htaccess文件中,并将其上传到根目录中,但这也没有帮助。 null 注意:我看了前面关于stackoverflow的问题,但没有运气,而且我没有apache配置文件来允许视频样式,因为我是在共享主机上。

  • 问题内容: 我要实现以下目标。 目的是使用户能够从他/她的硬盘驱动器中选择文件。 不上传的原因当然是传输成本和存储配额。没有理由保存文件。 可能吗? 问题答案: 可以播放本地视频文件。 通过元素选择文件时: “更改”事件被触发 从获取第一个File对象 制作指向File对象的对象URL 将对象URL设置为属性 靠后看

  • 主要内容:什么是SVG?,SVG优势,浏览器支持,把 SVG 直接嵌入 HTML 页面,实例,实例,SVG 与 Canvas两者间的区别,Canvas 与 SVG 的比较SVG 定义为可缩放矢量图形。 HTML5 支持内联 SVG。 HTML <svg> 元素是 SVG 图形的容器。 SVG 有多种绘制路径、框、圆、文本和图形图像的方法。 SVG Sorry, your browser does not support inline SVG. 什么是SVG? SVG 指可伸缩矢量图形 (Scal

  • 问题内容: 关于YouTube API博客,他们正在试验新的 HTML5 视频播放器。 显然,要使用html5播放视频,您必须使用iframe嵌入代码: 但是,如果客户端尚未加入HTML5试用版,则即使客户端的浏览器支持HTML5视频,播放器也会自动退回到Flash播放器中。 如果用户尚未参与HTML5试用版,即使浏览器支持,如何强制HTML5视频播放? 否则,如何禁用Flash后备广告? 问题答