gpt4 book ai didi

jquery - 使用 SVG 图像蒙版重新创建视差缩放效果

转载 作者:行者123 更新时间:2023-12-04 13:16:16 24 4
gpt4 key购买 nike

我正在尝试重新创建找到的效果 at the bottom of this page “REFORM CO”字样放大显示带标题的背景图片。

我试图自己使用 skrollr 重现这种效果,但我碰壁了。理想情况下,我希望 SVG 更小并位于 mask 的中心,并且视频保持固定,直到 mask 消失,就像 REFORM CO 示例一样。

这是我的 HTML 和我尝试的链接:https://jsfiddle.net/uex526qs/1/

<body>

<div class="knockout">

<svg x="50%" y="100%" class="knockout-text-container" height="100%" data-0="opacity:1;transform: scale(1);" data-50p="opacity:0;font-size: 10em;transform: scale(10);">

<rect class="knockout-text-bg" width="100%" height="100%" fill="#fff" x="0" y="0" fill-opacity="1" mask="url(#knockout-text)"/>

<mask id="knockout-text">
<rect width="100%" height="100%" fill="#fff" x="0" y="0" />

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 97.73 97.73"><defs><style>.cls-1{fill:#000;}</style></defs><title>shape2</title><g id="Layer_2" data-name="Layer 2"><g id="Content"><path class="cls-1" d="M48.86,97.73A7.72,7.72,0,0,1,41.15,90V7.72a7.72,7.72,0,1,1,15.43,0V90A7.72,7.72,0,0,1,48.86,97.73Z"/><path class="cls-1" d="M90,56.58H7.72a7.72,7.72,0,1,1,0-15.43H90a7.72,7.72,0,1,1,0,15.43Z"/></g></g></svg>


</mask>

</svg>

</div>


<video autoplay muted loop id="myVideo">
<source src="http://thenewcode.com/assets/videos/ocean-small.mp4" type="video/mp4">
</video>


</body>

感谢任何帮助

最佳答案

  1. 您可以使用 position: fixed 使元素相对于浏览器窗口保持固定。

  2. 要使蒙版相对于它所适用的元素缩放,请使用:

    <mask maskContentUnits="objectBoundingBox">

    然后使用 0..1 范围内的坐标。这就是我的 scale() 值如此之小的原因。您的形状大约为 100x100,因此我需要额外缩放 0.01 以使其缩小到 0..1 范围内。

您示例的其余部分或多或少是正确的。

$(document).ready(function() {
var s = skrollr.init();
constants: {
//fill the box for a "duration" of 150% of the viewport (pause for 150%)
//adjust for shorter/longer pause
knockout: '150p'
}
})
html, body {
position: relative;
margin: 0;
height: 1500px;
}

.container {
position: fixed;
}

video {
width: 100%;
}

.overlay {
display: block;
position: absolute;
width: 100%;
height: 100%;
top: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/skrollr/0.6.30/skrollr.min.js"></script>

<div class="container">

<video autoplay muted loop id="myVideo">
<source src="http://thenewcode.com/assets/videos/ocean-small.mp4" type="video/mp4">
</video>

<svg class="overlay" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid slice">
<defs>
<mask id="knockout" maskContentUnits="objectBoundingBox">
<rect x="0" y="0" width="1" height="1" fill="white"/>
<g fill="black"
data-0="transform: translate(0.5px,0.5px) scale(0.0015) translate(-49px,-49px);"
data-50p="transform: translate(0.5px,0.5px) scale(0.04) translate(-49px,-49px);">
<path d="M48.86,97.73A7.72,7.72,0,0,1,41.15,90V7.72a7.72,7.72,0,1,1,15.43,0V90A7.72,7.72,0,0,1,48.86,97.73Z"/>
<path class="cls-1" d="M90,56.58H7.72a7.72,7.72,0,1,1,0-15.43H90a7.72,7.72,0,1,1,0,15.43Z"/>
</g>
</mask>
</defs>
<rect x="0" y="0" width="100" height="100" fill="white" mask="url(#knockout)"/>
</svg>

</div>

关于jquery - 使用 SVG 图像蒙版重新创建视差缩放效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60215483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com