- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使搜索栏具有动画效果。我能够在您单击时使其绘制,当您再次单击时它会返回到原始位置(使用 greensock - drawSVG)。
我希望能够在不刷新页面的情况下再次点击,并且一切正常。到目前为止,只有 drawSVG 是唯一没有恢复动画的东西。
我也不确定为什么 drawSVG 属性在这里不起作用,它在我自己的计算机上起作用。 ( I am attaching a gif of the animation from my computer )
var $SearchBar = $('#SearchBar');
var $searchIcon = $('#searchIcon');
var $drawSearch = $ ('#drawSearch');
var $leftX = $('#leftX');
var $rightX = $('#rightX');
var $changeColor = $('#changeColor');
//this is my variable for when to draw the search bar
var searchVisible = false;
var $black = ('#000');
TweenMax.set($SearchBar, {stroke:'#000'});
TweenMax.set([$searchIcon, $leftX, $rightX, $changeColor],{transformOrigin: '50% 50%'});
TweenMax.set([$drawSearch, $leftX, $rightX, $changeColor], {alpha:0});
TweenMax.set([$leftX], {rotation:-45, scale:0.75});
TweenMax.set([$rightX], {rotation:45, scale:0.75});
searchVisible = false;
//funciton to click the searchIcon
function clickSearch(){
console.log("click");
if (searchVisible === true) {
searchVisible = false;
console.log("Yes i see the search draw");
TweenMax.to($changeColor, 2, {alpha:0,scale:0});
TweenMax.to([$leftX],0.25, {rotation:-45});
TweenMax.to([$rightX],0.25, {rotation:45});
TweenMax.to([$rightX,$leftX],0.25, {alpha:0,delay:0.25});
TweenMax.to($drawSearch,1,{drawSVG: 0, delay:0.5});
TweenMax.to($searchIcon, 0.5, {rotation: 0, delay:1.5});
}
else {
console.log("No i dont see the searchdraw");
searchVisible = true;
TweenMax.to($changeColor, 2, {alpha:1,scale:100});
TweenMax.to($searchIcon, 0.25, {rotation: -20});
TweenMax.to($searchIcon, 0.25, {rotation: 88, delay:0.25});
TweenMax.set([$drawSearch],{alpha:1});
TweenMax.from($drawSearch,0.75,{drawSVG:0, delay:0.50});
TweenMax.to([$leftX, $rightX], 0.25,{alpha:1,delay:1});
TweenMax.to([$leftX],0.25, {rotation:0, delay:1});
TweenMax.to([$rightX],0.25, {rotation:0,delay:1});
}
}
//listener for clickSearch function
$SearchBar.on("click", clickSearch);
section {
background-color: #900C3F;
display: flex;
align-content: center;
justify-content: center;
cursor: pointer; }
section svg {
height: 100vh;
width: 100vw; }
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
<link rel="stylesheet" href="css/styles.css">
<title>SCSS template</title>
</head>
<body>
<section>
<svg id="SearchBar" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500">
<style>
.st0 {
fill: #41718e;
stroke: #900C3F;
}
.st1 {
stroke-linecap: round
}
.st1,
.st2 {
fill: none;
stroke: #fff;
stroke-width: 8;
stroke-miterlimit: 10
}
</style>
<circle id="changeColor" class="st0" cx="390.24" cy="178.54" r="24.04" />
<g id="searchIcon">
<path class="st1" d="M409.27 199.36l21.05 21.21" />
<circle class="st2" cx="390.38" cy="178.62" r="24.72" />
</g>
<path class="st1" d="M365.47 220.65l-325.13 1.56.32-66.54 289.96-1.16" id="drawSearch" />
<path id="leftX" class="st1" d="M58.31 175.9l24.62 24.61" />
<path id="rightX" class="st1" d="M82.49 175.77l-24.61 24.62" />
</svg>
</section>
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Greensock -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.0.2/TweenMax.min.js"></script>
<!-- Greensock Draw SVG -->
<script src="http://dugraphicdesign.com/winterWeb3/DrawSVGPlugin.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.0.2/plugins/ScrollToPlugin.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.0.2/plugins/TextPlugin.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
最佳答案
DrawSVGPlugin.js 插件未加载。没有这个插件,DrawSVG 功能将无法工作。
使用 https 加载的页面不会使用 http 加载 javascript。这被称为 "mixed content"并且出于安全原因被浏览器阻止。
至于动画,我认为这是因为您试图在未正确初始化元素状态的情况下使用 .from()
。
不要为 drawSVG
属性使用整数,而是使用百分比,如 “100%”
。当您使用整数时,这些被解释为原始长度,可能需要一些努力才能弄清楚。当使用百分比时,DrawSVG 会为您计算出来。
与其搞乱先前的状态,不如根据需要将动画设置为 “0%”
或 “100%”
。
所以用
初始化TweenMax.set([$drawSearch], {drawSVG:"0%"});
然后在状态之间切换
TweenMax.to($drawSearch, 1, {drawSVG:"0%", delay:0.5});
和
TweenMax.to($drawSearch, 0.75, {drawSVG:"100%", delay:0.50});
关于javascript - Greensock-DrawSVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507509/
我想知道如何在 GreenSock JavaScript 库中制作无限动画。我知道JavaScript当时只能进行1次操作,但我希望一些SVG图像能够不停地移动。对我来说,它看起来像无限循环,但我知道
我正在尝试对齐所有子补间的开始,希望它们立即开始,没有任何延迟,但似乎是按顺序完成的,一个 child 完成,然后第二个开始,第三个在第二个之后开始等等...不知道我在这里做错了什么? var tim
我正在尝试按以下顺序使用介绍文本和箭头制作介绍页面的动画: 背景图像来回移动两次。之后,箭头应从 1 缩放到 1.5,并再次重新缩放到原始大小 介绍文本也应缩放至 1.5 并重新缩放至其原始大小 由于
有一个 speed test在 greensock 网站上与其他动画库、JQuery 甚至 CSS Transitions 比较速度。它通过为数百/数千个分体设置动画来对 FPS 进行基准测试。 gr
我有以下代码: var mainTimeLine = new TimelineLite({paused:true}); var whiteGlow = "0px 0px 30px rgba(255,2
我想在 HTML 元素上一一添加类。 TweenMax.staggerTo(".some-class-name", 0.5, { className: "+=animation-class" }, 0
我以前从未使用过GreenSock。背景图像变化很好,它会切换和缩放,但是我面临的问题如下: Sprite 上显示的第一个背景图像不会缩放,但其他所有图像都会缩放,我该如何解决此问题? 它似乎会改变背
我正在尝试使用 Greensock 文本插件。我可以更改文本的颜色,但无法更改文本。我正在使用 jQuery 3.2.1 和 Greensock TweenMax 1.20.3 我的代码会将文本颜色更
我正在尝试使搜索栏具有动画效果。我能够在您单击时使其绘制,当您再次单击时它会返回到原始位置(使用 greensock - drawSVG)。 我希望能够在不刷新页面的情况下再次点击,并且一切正常。到目
我在鼠标事件上调用了两个函数: function menuBtnOver(e){ var b = e.data; b.setPosition(b.x, b.y+5); } functi
我正在尝试使用 JavaScript 和 Greensock 创建一个单击时滑入和滑出的导航栏。由于某种原因,当以不同尺寸单击时,单击操作随机不起作用,但有时它工作得很好。 我的代码如下,您可以在以下
我有一个正在使用 Greensock 的动画。当该动画完成并且用户单击按钮时,动画将反向播放。我遇到的问题是我希望动画反向播放的速度比最初播放时快 3 倍。我对如何做到这一点感到困惑。 我当前的代码工
我一直在使用javascript制作动画,但出现了我似乎无法解决的错误。 Link to Codepen Uncaught SyntaxError: Unexpected token '.' at
所以我正在尝试使用 Greensock 库为雪佛龙制作动画。我的目标是让 进入: 我在 Codepen https://www.codepen.io/Brushel/pen/boryZP 上有一个工作
我正在使用 GreenSock( https://greensock.com/get-started-js ) 进行动画。 问题是,当我向下滚动鼠标滚轮时,动画将从右向左工作。这不是一种权利。我需要当
我想将先前定义的 x/y 坐标数组传递给 greensock 贝塞尔曲线插件,如下所示: var ball = document.querySelector('#ball') var startCir
我正在尝试按照scrollmagic示例实现视差滚动。 greensock 文档说,像 TimelineMax.to 这样的东西定义了该场景中元素的最终位置(而不是定义初始位置的 .from)。 但是
我一直在尝试让动画在点击时触发,我已经通过 TimelineMax 创建了动画。我不明白为什么,但它一直触发这个动画的第一个实例,有 5 个 .blackout-panel 并且它为第一个 .blac
我正在尝试找到一种方法,将任意数量的元素添加到时间轴,然后在添加它们之后,同时开始运行它们。我尝试在添加到时间线之前调用 .pause() 并在之后播放,但它总是在我调用播放之前开始。 我目前正在运行
我正在嵌套时间线。 代码如下: timeLine.to(obj1,1.2,{css:{display:"block"}}) nestedTimeline1 = new TimelineMax({re
我是一名优秀的程序员,十分优秀!