• 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>
  • 相关阅读:
    MVP on dot NET Episode 1
    以服务器端为中心的 ASP.NET AJAX 模式 (Part 2 Control)
    以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 Behavior)
    编写 iPhone Friendly 的 Web 应用程序 (Part 6 iUI)
    Vista 为什么要引入 UAC
    Windows 就是一个带 UI 的命令行
    ASP.NET AJAX 4.0 Preview 3 (Part 2 ASP.NET AJAX Template)
    如何订阅MVP on dot NET(或其它播客) iTunes版
    深入理解 ASP.NET 动态控件 (Part 5 编译实验)
    使用 .NET 实现 Ajax 长连接 (Part 2 Mutex Wait & Signal)
  • 原文地址:https://www.cnblogs.com/lvwuwa/p/12714495.html
Copyright © 2020-2023  润新知