jquery 特效,js常用网页特效
JQuery UI如何制作颜色动画
工具/材料
Sublime Text
01
先打开Sublime Text,然后在编辑器中添加HTML5页面,如下图所示,由于页面中中文,所以编码需要设置成utf-8的格式
02
接下来需要下载Jquery UI的库文件,并且在HTML中导入Jquery UI的样式库文件,如下图所示
03
由于颜色动画特效需要JS脚本控制,所以需要导入Jquery的脚本和Jquery ui的脚本,如下图所示。因为Jquery ui是用jquery编写的,所以先导入Jquery文件
04
然后在body标签中添加一个div和一个按钮。Div标签是我们要*作的颜色块,按钮用来触发动画*作,如下图所示
05
接下来在页面中添加style标签,并为上面设置的div颜色块来添加样式,如下图所示
06
然后在script标签中添加我们脚本代码,如下图所示,通过调用animate方法进行动画调用,它可以直接指定颜色块的背景颜色
07
最后,我们运行页面程序,你会在页面中看到一个颜色块和一个按钮,点击按钮以后,颜色块发生变化了,如下图所示
jquery 页面跳转动画效果
HTML结构
该页面切换特效的HTML结构使用一个<main>元素来作为页面的包裹元素,div.cd-cover-layer用于制作页面切换时的遮罩层,div.cd-loading-bar是进行ajax加载时的loading进度条。
<main>
<div class=”cd-index cd-main-content”>
<div>
<h1>Page Transition</h1>
<!– your content here–>
</div>
</div>
</main>
<div class=”cd-cover-layer”></div><!– this is the cover layer–>
<div class=”cd-loading-bar”></div><!– this is the loading bar–>
CSS样式
该页面切换特效中使用body::before和body::after伪元素在页面切换过程中创建两个遮罩层来遮住页面内容。它们的定位是固定定位,高度等于50vh,宽度为100%。默认情况下,使用CSS transform属性将它们隐藏起来(translateY(-100%)/translateY(100%))。当用户切换页面的时候,这些元素被移动回视口当中(通过在<body>元素上添加.page-is-changing class)。
下面的图片演示了这个过程:
页面切换特效
body::after, body::before{
/* these are the 2 half blocks which cover the content once the animation is triggered*/
height: 50vh;
width: 100%;
position: fixed;
left: 0;
}
body::before{
top: 0;
transform: translateY(-100%);
}
body::after{
bottom: 0;
transform: translateY(100%);
}
body.page-is-changing::after, body.page-is-changing::before{
transform: translateY(0);
}
页面切换时,页面内容的淡入淡出效果是通过改变div.cd-cover-layer的透明度实现的。它覆盖了.cd-main-content元素,并具有相同的背景色,然后在<body>被添加.page-is-changing class的时候,将透明度从0修改为1。
Loading进度条使用.cd-loading-bar::before伪元素来制作。默认它被缩小(scaleX(0))和transform-origin: left center。当页面切换开始时它被使用scaleX(1)放大会原来的尺寸。
.cd-loading-bar{
/* this is the loading bar- visible while switching from one page to the following one*/
position: fixed;
height: 2px;
width: 90%;
}
.cd-loading-bar::before{
/* this is the progress bar inside the loading bar*/
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
transform: scaleX(0);
transform-origin: left center;
}
.page-is-changing.cd-loading-bar::before{
transform: scaleX(1);
}
特效中平滑的过渡效果使用CSS Transitions来实现。每一个动画元素都被添加了不同的transition-delay,以实现不同的元素动画顺序。
JAVASCRIPT
该页面切换特效中在链接上使用data-type=”page-transition”属性,用于触发页面切换*。当插件检测到用户点击*,changePage()方法将被执行。
$('main').on('click','[data-type=”page-transition”]', function(event){
event.preventDefault();
//detect which page has been selected
var newPage=$(this).attr('href');
//if the page is not animating- trigger animation
if(!isAnimating) changePage(newPage, true);
});
这个方法会触发页面切换动画,并通过loadNewContent()方法加载新内容。
function changePage(url, bool){
isAnimating= true;
// trigger page animation
$('body').addClass('page-is-changing');
//…
loadNewContent(url, bool);
//…
}
当新的内容被加载后,会替代原来<main>元素中的内容。.page-is-changing class被从body中移除,新加载的内容会被添加到window.history中(使用pushState()方法)。
function loadNewContent(url, bool){
var newSectionName='cd-'+url.replace('.html',''),
section=$('<div class=”cd-main-content'+newSectionName+'”></div>');
section.load(url+'.cd-main-content>*', function(event){
// load new content and replace<main> content with the new one
$('main').html(section);
//…
$('body').removeClass('page-is-changing');
//…
if(url!= window.location){
//add the new page to the window.history
window.history.pushState({path: url},'',url);
}
});
}
为了在用户点击浏览器的回退按钮时触发相同的页面切换动画效果,插件中监听popstate*,并在它触发时执行changePage()函数。
$(window).on('popstate', function(){
var newPageArray= location.pathname.split('/'),
//this is the url of the page to be loaded
newPage= newPageArray[newPageArray.length- 1];
if(!isAnimating) changePage(newPage);
});
用jQuery动画来做特效,怎么防止多次点击动画重复的问题
1、在你的点击*中加上一个判断,假设产生动画效果目标的是#aa这个节点,那么你要加上这个判断
if(!$(“#aa”).is(“:animated”)){
//执行你的*作
}
他会确保你的动画只会在上一个动画结束后才能产生,可以保持动画的完整性,但是连续点击时会有反映迟钝的感觉
2、$(“#aa”).stop(true,false).animate({…},1000);
这个则是会强制你的上一动画立即结束并到达动画执行结束时状态同时来运行下一次动画,会造成动画脱节不太美观,但是反应迅速
说到这里我们解释下stop()这个函数的用法。
stop是jQuery中用于控制页面动画效果的方法。运行之后立刻结束当前页面上的动画效果。
stop在新版jQuery中添加了2个参数:
第一个参数的意思是是否清空动画序列,也就是stop的是当前元素的动画效果还是停止后面附带的所有动画效果,一般为false,跳过当前动画效果,执行下一个动画效果;
第二个参数是是否将当前动画效果执行到最后,意思就是停止当前动画的时候动画效果刚刚执行了一般,这个时候想要的是动画执行之后的效果,那么这个参数就为true。否则动画效果就会停在stop执行的时候
3、第三种方法应用就需要设置一个判断是否处于动画的标志,一般是一个点击*执行N多个步骤的动画之后然后跳到下一个动画。
var flag= false;
function aa(){
if(flag) return;//这里指当这个标志flag为真的时候,直接返回,不执行当前的这个动画。
flag=true;//这里是在执行这个动画的最开始的时候把标志flag设置为真,在这个动画没执行完之前这个值一直为真,当下次运行这个函数的时候,由于flag值为真,也不会执行。必须等到这个函数执行完之后才会再次执行这个动画。
……………….
………………..
………………..
$(“#aa”).animated({“left”:”100″},1000,function(){
………………….
flag=false;//回到最初始状态,也是也表示这一轮动画执行完毕。
});
}
本文链接:http://www.cyqvip.com/html/87966191.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。