HTML基础知识(18)

HTML基础知识(18),第1张

1、call和apply

二者都可以改变当前的this,区别在于apply方法要将参数放入数组中再传参

2、函数的继承

function Fclass(name, age){

this.name = name

this.age = age

}

Fclass.prototype.showName = function(){

alert(this.name)

}

Fclass.prototype.showAge = function(){

alert(this.age)

}

3、子类

function Sclass(name, age, job){

// 调用父类的call方法并传入子类的this,可实现属性的继承

Fclass.call(this,name,age)

this.job = job

}

// 方法继承:将父类的一个实例赋值给子类的继承

Sclass.prototype = new Fclass()

Sclass.prototype.showJob = function(){

alert(this.job)

}

var Driver = new Sclass('tom',18,'老司机')

Driver.showName()

Driver.showAge()

Driver.showJob()

4、新增选择器

document.querySlector()    选择一个

document.querySlectorAll()   选择一类

jQuery加载:

将获取元素的语句写到页面头部,会因为元素还没有加载而出错,jquery有ready方法解决

//JS写法

window.onload = function(){

var div = document.getElementById('div')

alert(div.innerHTML)

}

//JQ写法

$(document).ready(function() {

var $div = $('#div')

alert('jquery:' + $div.html())

})

//简写

$(function(){

var $div = $('#div')

alert('jquery:' + $div.html())

})

5、jQuery选择器:

$(document) //选择整个文档对象

$('li') //选择所有的li元素

$('#myId') //选择id为myId的网页元素

$('.myClass') // 选择class为myClass的元素

$('input[name=first]') // 选择name属性等于first的input元素

$('#ul1 li span') //选择id为为ul1元素下的所有li下的span元素

对选择集进行修饰过滤(类似CSS伪类)

$('#ul1 li:first') //选择id为ul1元素下的第一个li

$('#ul1 li:odd') //选择id为ul1元素下的li的奇数行

$('#ul1 li:eq(2)') //选择id为ul1元素下的第3个li

$('#ul1 li:gt(2)') // 选择id为ul1元素下的前三个之后的li

$('#myForm :input') // 选择表单中的input元素

$('div:visible') //选择可见的div元素

对选择集进行函数过滤

$('div').has('p')// 选择包含p元素的div元素

$('div').not('.myClass')//选择class不等于myClass的div元素

$('div').filter('.myClass')//选择class等于myClass的div元素

$('div').first()//选择第1个div元素

$('div').eq(5)//选择第6个div元素

6、选择集转移

$('div').prev('p')//选择div元素前面的第一个p元素

$('div').prevAll('p')//选择div元素前面所有的p元素

$('div').next('p')//选择div元素后面的第一个p元素

$('div').nextAll('p')//选择div元素后面所有的p元素

$('div').closest('form')//选择离div最近的那个form父元素

$('div').parent()//选择div的父元素

$('div').children()//选择div的所有子元素

$('div').siblings()//选择div的同级元素

$('div').find('.myClass')//选择div内的class等于myClass的元素

jQuery样式 *** 作:

//读取样式

alert($('.div1').css('fontSize'))

//设置样式

$('.div1').css({background:'gold'})

//增加行间样式

$('.div1').addClass('big')

//减少行间样式,多个样式用空格分开

$('.div1').removeClass('div1')

7、click事件

$('#btn').click(function(){

$('.box').toggleClass('sty')  //切换样式

})

jQuery索引值:

$('.list li').click(function(){

// alert(this.innerHTML)

// alert($(this).html())

alert($(this).index())

})

jQuery属性 *** 作:

html()

// 取出html内容

var $htm = $('#div1').html()

// 设置html内容

$('#div1').html('<span>添加文字</span>')

text()

// 取出文本内容

var $htm = $('#div1').text()

// 设置文本内容

$('#div1').text('<span>添加文字</span>')

attr():

// 取出图片的地址

var $src = $('#img1').attr('src')

// 设置图片的地址和alt属性

$('#img1').attr({ src: "test.jpg", alt: "Test Image" })

jQuery特殊效果:

fadeIn() 淡入

fadeOut() 淡出

fadeToggle() 切换淡入淡出

hide() 隐藏元素

show() 显示元素

toggle() 依次展示或隐藏某个元素

slideDown() 向下展开

slideUp() 向上卷起

slideToggle() 依次展开或卷起某个元素

jQuery链式调用

$('#div1') // id为div1的元素

.children('ul') //该元素下面的ul子元素

.slideDown('fast') //高度从零变到实际高度来显示ul元素

.parent()  //跳到ul的父元素,也就是id为div1的元素

.siblings()  //跳到div1元素平级的所有兄弟元素

.children('ul') //这些兄弟元素中的ul子元素

.slideUp('fast')  //高度实际高度变换到零来隐藏ul元素

可以通过输入代码来 *** 作。

这里的图片轮播方法是我从网上参考的方法,只是自己做了一些改进,先来贴一发代码:

<!DOCTYPE HTML>

<html>

<head>

<link rel="stylesheet" type="text/css" href="./css/init2.css">

<script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>

<script type="text/javascript" src="./js/test2.js"></script>

</head>

<body>

<div id="layout">

<header  class="clearfix">

<div id="banner">

<ul id="banner_img">

<li><img src="./img/s1.jpg"></li>

<li><img src="./img/s2.jpg"></li>

<li><img src="./img/s3.jpg"></li>

</ul>

</div>

</header>

</div>

</body>

</html>

在这个html的目录下有三个同级的文件夹,img中放图片,css和js分别存放这个网页的css文件和js文件,这里用到了jquery,记得引入顺序,jquery一定要放在其他js前面。

html代码很简单,不做过多解释。

看一下引入的css,init2.css

*{

margin: 0px

padding: 0px

}

#layout{

width: 960px

margin: 0 auto

}

#banner{

position: relative

overflow: hidden

width: 600px

height: 200px

border-radius: 10px

border: 2px solid black

}

#banner_img li{

float: left

list-style-type: none

}

#index{

position: absolute

right: 8px

bottom: 8px

}

#index li{

float: left

width: 16px

height: 16px

text-align: center

line-height: 16px

border-radius: 5px

border:1px solid #FF7300

background: white

list-style: none

margin-left: 8px

cursor: pointer

}

.clearfix:after{

content: ""

height: 0px

display: block

clear:both

}

.on

{

background:#FF7300

}

css基本上和前面的html中的类对应,claerfix来清除浮动,on是代表轮播图片的索引中当前的正播放的图片的索引,其实就改个背景,这里的索引是后面动态加上去的,索引在html中看不到。主要思路就是把装图片的容器设置成overflhidden

下面是一种比较简单的实现,利用jquery的fadeIn和fadeOut效果来实现。

//fadeIn and fadeOut

var time

var index = 1

var tolnum = 3

$(function(){

<span style="white-space:pre"> </span>setInterval("showBanner("+tolnum+")",3000)

})

function showBanner(n)

{

<span style="white-space:pre"> </span>var ul = $("#banner_img")

<span style="white-space:pre"> </span>ul.children().fadeOut("slow")

<span style="white-space:pre"> </span>ul.children().eq(index).fadeIn("slow")

<span style="white-space:pre"> </span>index = index+1>n-1 ? 0 : index+1

}

恩,不知道为什么到最后一张图片的时候会产生没有淡出的bug,不太懂,请大家指教。

第二种方法是利用jquery的animation来实现margin属性的过渡。

init()

function init()

{

$(function(){

var index = 0

var adTime

var len = $("#banner_img li").length

addIndex(len)

var bannerLi = $("#index li")

//handle index

$("#index li").mouseover(function() {

index = $("#index li").index(this)

showImgs(index)

})

//toggleInterval

$("#banner").hover(function(){

clearInterval(adTimer)

},function(){

adTimer=setInterval(function(){

//alert(index)

showImgs(index)

index++

if(index==len){

index=0

}

},2000)

}).trigger('mouseleave')

})

}

//auto add index

function addIndex(n)

{

var ul = $("<ul id=\"index\"></ul>")

for(var i=1i<=ni++)

{

var li = $("<li></li>")

li.append(function(num){

return num

}(i))

ul.append(li)

}

ul.children().first().addClass('on')

$("#banner_img").append(ul)

}

function showImgs(index)

{

var adwidth=$("#banner_img>li:first").width()

$("#banner_img").stop(true, false)

//$("#banner_img").css('margin-left', -index*adwidth+"px")

$("#banner_img").animate({

"marginLeft":-adwidth*index+"px"

},1000)

$("#index li").removeClass('on').eq(index).addClass('on')

}

hover()是一种代替mouseenter和mouseleave的方法,听说比较好用。trigger()来触发当前对象的一个状态,这里要先触发一次mouseleave的状态来初始化计时器,因为这里的设定是当鼠标移到$("#banner")上就销毁定时器,锁定当前图片,移开鼠标就重新添加定时器。<pre name="code" class="javascript"> $("#banner_img").animate({

"marginLeft":-adwidth*index+"px"

},1000)

这了就是对jquery中animation方法的使用,通过传进来的index来改变banner_img的margin,这里是margin-left,所以图片就会从右往左刷(需要设置浮动),如果需要从下往上刷就设置margin-top就好了,还有我发现js中动态添加margin是不能触发css的transition的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7486094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存