jQuery学习笔记03---CSS样式、jQuery事件

1、CSS样式操作

1.1、CSS类:

addClass()

为每个匹配的元素添加指定的类名,添加样式

removeClass()

从所有匹配的元素中删除全部或者指定的类,删除样式

toggleClass()  

如果存在(不存在)就删除(添加)一个类,有就删除,没有就添加样式

1.2、CSS:

css()

访问匹配元素的样式属性。

1.3、位置:

offset()

获取匹配元素在当前视口的相对偏移,返回的对象包含两个整型属性:top 和 left,此方法只对可见元素有效

position()

获取匹配元素相对父元素的偏移,返回的对象包含两个整型属性:top 和 left,为精确计算结果,请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效

scrollTop()

获取匹配元素相对滚动条顶部的偏移,此方法对可见和隐藏元素均有效

scrollLeft()

获取匹配元素相对滚动条左侧的偏移,此方法对可见和隐藏元素均有效

1.4、尺寸:

 

height()

取得匹配元素当前计算的高度值(px),在 jQuery 1.2 以后可以用来获取 window 和 document 的高

width()

取得第一个匹配元素当前计算的宽度值(px),在 jQuery 1.2 以后可以用来获取 window 和 document 的宽

innerHeight()

获取第一个匹配元素内部区域高度(包括补白、不包括边框),此方法对可见和隐藏元素均有效

innerWidth()

获取第一个匹配元素内部区域宽度(包括补白、不包括边框),此方法对可见和隐藏元素均有效

outerHeight()

获取第一个匹配元素外部高度(默认包括补白和边框),此方法对可见和隐藏元素均有效

outerWidth()

获取第一个匹配元素外部宽度(默认包括补白和边框),此方法对可见和隐藏元素均有效

2、jQuery动画效果

2.1、基本动画:

show()

显示隐藏的匹配元素

hide()

隐藏显示的元素

toggle() 

用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件,可见就隐藏,不可见就显示

以上动画方法都可以添加参数。

1、第一个参数是动画 执行的时长,以毫秒为单位

2、第二个参数是动画的回调函数 (动画完成后自动调用的函数)

2.2、滑动动画:

slideDown()

通过高度变化(向下增大)来动态地显示所有匹配的元素,在显示完成后可选地触发一个回调函数,这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式显示出来。在jQuery 1.3中,上下的padding和margin也会有动画,效果更流畅

slideUp()

通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数,这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式隐藏起来。在jQuery 1.3中,上下的padding和margin也会有动画,效果更流畅

slideToggle()

通过高度变化来切换所有匹配元素的可见性,并在切换完成后可选地触发一个回调函数,这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式隐藏或显示。在jQuery 1.3中,上下的padding和margin也会有动画,效果更流畅

 

2.3、淡入淡出动画:

fadeIn()

通过不透明度的变化来实现所有匹配元素的淡入效果,并在动画完成后可选地触发一个回调函数,淡入(慢慢可见)

fadeOut()

通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数,淡出(慢慢消失)

fadeTo() 

把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数,这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化,在指定时长内慢慢的将透明度修改到指定的值。0透明,1完成可见,0.5半透明

fadeToggle()

通过不透明度的变化来开关所有匹配元素的淡入和淡出效果,并在动画完成后可选地触发一个回调函数,这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化,淡入/淡出 切换

 

2.4、自定义动画:

animate()

用于创建自定义动画的函数

注意:所有指定的属性必须用骆驼形式,比如用marginLeft代替margin-left

stop()

停止所有在指定元素上正在运行的动画,如果队列中有等待执行的动画(并且clearQueue没有设为true),他们将被马上执行

delay()

设置一个延时来推迟执行队列中之后的项目,jQuery 1.4新增。用于将队列中的函数延时执行。他既可以推迟动画队列的执行,也可以用于自定义队列

 

2.5、动画设置:

jQuery.fx.off

关闭页面上所有的动画。

把这个属性设置为true可以立即关闭所有动画(所有效果会立即执行完毕)。有些情况下可能需要这样,比如:

* 你在配置比较低的电脑上使用jQuery。

* 你的一些用户由于动画效果而遇到了 可访问性问题

当把这个属性设成false之后,可以重新开启所有动画

 

jQuery.fx.interval

设置动画的显示帧速

 

3、练习:CSS_动画 品牌展示

需求:

1.点击按钮的时候,隐藏和显示卡西欧之后的品牌。

2.当显示全部内容的时候,按钮文本为“显示精简品牌”

然后,小三角形向上。所有品牌产品为默认颜色。

3.当只显示精简品牌的时候,要隐藏卡西欧之后的品牌,按钮文本为“显示全部品牌”

然后小三形向下。并且把佳能,尼康的品牌颜色改为红色(给li标签添加promoted样式即可)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>品牌展示练习</title>
<style type="text/css">
* {
   margin: 0;
   padding: 0;
}
body {
   font-size: 12px;
   text-align: center;
}
a {
   color: #04D;
   text-decoration: none;
}
a:hover {
   color: #F50;
   text-decoration: underline;
}
.SubCategoryBox {
   width: 600px;
   margin: 0 auto;
   text-align: center;
   margin-top: 40px;
}
.SubCategoryBox ul {
   list-style: none;
}
.SubCategoryBox ul li {
   display: block;
   float: left;
   width: 200px;
   line-height: 20px;
}
.showmore , .showless{
   clear: both;
   text-align: center;
   padding-top: 10px;
}
.showmore a , .showless a{
   display: block;
   width: 120px;
   margin: 0 auto;
   line-height: 24px;
   border: 1px solid #AAA;
}
.showmore a span {
   padding-left: 15px;
   background: url(img/down.gif) no-repeat 0 0;
}
.showless a span {
   padding-left: 15px;
   background: url(img/up.gif) no-repeat 0 0;

}
.promoted a {
   color: #F50;
}
</style>
<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
<script type="text/javascript">
   $(function() {
      // 基本初始状态
      $("li:gt(5):not(:last)").hide();
      // 给功能的按钮绑定单击事件
      $("div div a").click(function () {
         // 让某些品牌,显示,或隐藏
         $("li:gt(5):not(:last)").toggle();
         // 判断 品牌,当前是否可见
         if( $("li:gt(5):not(:last)").is(":hidden") ){
            // 品牌隐藏的状态 :1 显示全部品牌    == 角标向下 showmore
            $("div div a span").text("显示全部品牌");
            $("div div").removeClass()
            $("div div").addClass("showmore")
            // 去掉高
            $("li:contains('索尼')").removeClass("promoted");
         } else {
            // 品牌可见的状态:2 显示精简品牌     == 角标向上 showless

            $("div div a span").text("显示精简品牌");
            $("div div").removeClass();
            $("div div").addClass("showless");
            // 加高亮
            $("li:contains('索尼')").addClass("promoted");
         }
         return false;
      });
   });
</script>
</head>
<body>
   <div class="SubCategoryBox">
      <ul>
         <li><a href="#">佳能</a><i>(30440) </i></li>
         <li><a href="#">索尼</a><i>(27220) </i></li>
         <li><a href="#">三星</a><i>(20808) </i></li>
         <li><a href="#">尼康</a><i>(17821) </i></li>
         <li><a href="#">松下</a><i>(12289) </i></li>
         <li><a href="#">卡西欧</a><i>(8242) </i></li>
         <li><a href="#">富士</a><i>(14894) </i></li>
         <li><a href="#">柯达</a><i>(9520) </i></li>
         <li><a href="#">宾得</a><i>(2195) </i></li>
         <li><a href="#">理光</a><i>(4114) </i></li>
         <li><a href="#">奥林巴斯</a><i>(12205) </i></li>
         <li><a href="#">明基</a><i>(1466) </i></li>
         <li><a href="#">爱国者</a><i>(3091) </i></li>
         <li><a href="#">其它品牌相机</a><i>(7275) </i></li>
      </ul>
      <div class="showmore">
         <a href="more.html"><span>显示全部品牌</span></a>
      </div>

   </div>
</body>
</html>

 

 

4、jQuery事件操作

4.1、$( function(){} );和window.onload = function(){}的区别?

分别是在什么时候触发?

1、jQuery的页面加载完成之后是浏览器的内核解析完页面的标签创建好DOM对象之后就会马上执行

2、原生js的页面加载完成之后,除了要等浏览器内核解析完标签创建好DOM对象,还要等标签显示时需要的内容加载完成

 

 

触发的顺序?

1、jQuery页面加载完成之后先执行

2、原生js的页面加载完成之后

执行的次数?

1、原生js的页面加载完成之后,只会执行最后一次的赋值函数

2、jQuery的页面加载完成之后是全部把注册的function函数,依次顺序全部执行

4.2、jQuery中其他的事件处理方法:

click()

它可以绑定单击事件,以及触发单击事件,触发每一个匹配元素的click事件,这个函数会调用执行绑定到click事件的所有函数

mouseover() 

鼠标移入事件,在每一个匹配元素的mouseover事件中绑定一个处理函数,mouseover事件会在鼠标移入对象时触发

mouseout()  

鼠标移出事件,在每一个匹配元素的mouseout事件中绑定一个处理函数,mouseout事件在鼠标从元素上离开后会触发

bind()

可以给元素一次性绑定一个或多个事件,为每个匹配元素的特定事件绑定事件处理函数

one()

为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数,在每个对象上,这个事件处理函数只会被执行一次。其他规则与bind()函数相同。

unbind()

bind()的反向操作,从每一个匹配的元素中删除绑定的事件。

live()

jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效,这个方法是基本是的 .bind() 方法的一个变体。使用 .bind() 时,选择器匹配的元素会附加一个事件处理函数,而以后再添加的元素则不会有。为此需要再使用一次 .bind() 才行

4.3、事件的冒泡

事件的冒泡是指,父子元素同时监听同一个事件。当触发子元素的事件的时候,同一个事件也被传递到了父元素的事件里去响应。

如何阻止事件冒泡:在子元素事件函数体内,return false; 可以阻止事件的冒泡传递。

 

4.4、javaScript事件对象 

事件对象,是封装有触发的事件信息的一个javascript对象。

如何获取javascript事件对象?

在给元素绑定事件的时候,在事件的function( event ) 参数列表中添加一个参数,这个参数名,我们习惯取名为event

这个event就是javascript传递参事件处理函数的事件对象。

比如:

4.4.1、原生javascript获取 事件对象

window.onload = function () {
   document.getElementById("areaDiv").onclick = function (event) {
      console.log(event);
   }
}

4.4.2、jQuery代码获取 事件对象

$(function () {
   $("#areaDiv").click(function (event) {
      console.log(event);
   });
});

4.4.3、使用bind同时对多个事件绑定同一个函数。怎么获取当前操作是什么事件。

$("#areaDiv").bind("mouseover mouseout",function (event) {
   if (event.type == "mouseover") {
      console.log("鼠标移入");
   } else if (event.type == "mouseout") {
      console.log("鼠标移出");
   }
});

5、练习:事件

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
   body {
      text-align: center;
   }
   #small {
      margin-top: 150px;
   }
   #showBig {
      position: absolute;
      display: none;
   }
</style>
<script type="text/javascript" src="script/jquery-1.7.2.js"></script>
<script type="text/javascript">
   $(function(){
      $("#small").bind("mouseover mouseout mousemove",function (event) {
         if (event.type == "mouseover") {
            $("#showBig").show();
         } else if (event.type == "mousemove") {
            console.log(event);
            $("#showBig").offset({
          //坐标加10,使原图与放大的图片出现重叠发生无法识别原图坐标现象
               left: event.pageX + 10,
               top: event.pageY + 10
            });
         } else if (event.type == "mouseout") {
            $("#showBig").hide();
         }
      });
   });
</script>
</head>
<body>
   <img id="small" src="img/small.jpg" />
   <div id="showBig">
      <img src="img/big.jpg">
   </div>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/lvwuwa/p/12714495.html