Javascript 如何构建具有滑动或不透明效果的简单jQuery图像滑块?

Javascript 如何构建具有滑动或不透明效果的简单jQuery图像滑块?,javascript,jquery,css,animation,slideshow,Javascript,Jquery,Css,Animation,Slideshow,我们中的一些人可能不想使用ready插件,因为它们的大小很大,并且可能与当前javascript产生冲突 我以前使用过光滑块插件,但当客户给出模块化修改时,它变得非常难以操作。然后,我的目标是建立我的定制它很容易。我相信滑块从一开始就不应该那么复杂 构建jQuery图像滑块的简单而干净的方法是什么?在查看示例之前,您应该了解我使用最多的两个jQuery函数 返回值是一个整数,指示jQuery对象中第一个元素相对于其同级元素的位置 根据元素的位置(索引值)选择元素的位置 基本上,我获取所选触发元素

我们中的一些人可能不想使用ready插件,因为它们的大小很大,并且可能与当前javascript产生冲突

我以前使用过光滑块插件,但当客户给出模块化修改时,它变得非常难以操作。然后,我的目标是建立我的定制它很容易。我相信滑块从一开始就不应该那么复杂


构建jQuery图像滑块的简单而干净的方法是什么?

在查看示例之前,您应该了解我使用最多的两个jQuery函数

返回值是一个整数,指示jQuery对象中第一个元素相对于其同级元素的位置

根据元素的位置(索引值)选择元素的位置

基本上,我获取所选触发元素的
索引值
,并使用
eq
方法在图像上匹配该值


html示例:

<ul class="images">
   <li>
      <img src="images/1.jpg" alt="1" />
   </li>
   <li>
      <img src="images/2.jpg" alt="2" />
   </li>
   ...
</ul>

<ul class="triggers">
   <li>1</li>
   <li>2</li>
   ...
</ul>
<span class="control prev">Prev</span>
<span class="control next">Next</span>
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;

triggers.first().addClass('active');
images.hide().first().show();

function sliderResponse(target) {
    images.fadeOut(300).eq(target).fadeIn(300);
    triggers.removeClass('active').eq(target).addClass('active');
}
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;
var mask = $('.mask ul.images');
var imgWidth = images.width();

triggers.first().addClass('active');
mask.css('width', imgWidth*(lastElem+1) +'px');

function sliderResponse(target) {
    mask.stop(true,false).animate({'left':'-'+ imgWidth*target +'px'},300);
    triggers.removeClass('active').eq(target).addClass('active');
}
jQuery:

<ul class="images">
   <li>
      <img src="images/1.jpg" alt="1" />
   </li>
   <li>
      <img src="images/2.jpg" alt="2" />
   </li>
   ...
</ul>

<ul class="triggers">
   <li>1</li>
   <li>2</li>
   ...
</ul>
<span class="control prev">Prev</span>
<span class="control next">Next</span>
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;

triggers.first().addClass('active');
images.hide().first().show();

function sliderResponse(target) {
    images.fadeOut(300).eq(target).fadeIn(300);
    triggers.removeClass('active').eq(target).addClass('active');
}
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;
var mask = $('.mask ul.images');
var imgWidth = images.width();

triggers.first().addClass('active');
mask.css('width', imgWidth*(lastElem+1) +'px');

function sliderResponse(target) {
    mask.stop(true,false).animate({'left':'-'+ imgWidth*target +'px'},300);
    triggers.removeClass('active').eq(target).addClass('active');
}

滑动效应: css技巧:使用双包装器并使用子对象作为掩码

jQuery:

<ul class="images">
   <li>
      <img src="images/1.jpg" alt="1" />
   </li>
   <li>
      <img src="images/2.jpg" alt="2" />
   </li>
   ...
</ul>

<ul class="triggers">
   <li>1</li>
   <li>2</li>
   ...
</ul>
<span class="control prev">Prev</span>
<span class="control next">Next</span>
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;

triggers.first().addClass('active');
images.hide().first().show();

function sliderResponse(target) {
    images.fadeOut(300).eq(target).fadeIn(300);
    triggers.removeClass('active').eq(target).addClass('active');
}
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;
var mask = $('.mask ul.images');
var imgWidth = images.width();

triggers.first().addClass('active');
mask.css('width', imgWidth*(lastElem+1) +'px');

function sliderResponse(target) {
    mask.stop(true,false).animate({'left':'-'+ imgWidth*target +'px'},300);
    triggers.removeClass('active').eq(target).addClass('active');
}

两个滑块的通用jQuery响应: (触发器+下一个/上一个单击和计时



下面是一段简单易懂的代码,用于在不使用Jquery的情况下使用JavaScript创建图像幻灯片

<script language="JavaScript"> 
var i = 0; var path = new Array(); 

// LIST OF IMAGES 
path[0] = "image_1.gif"; 
path[1] = "image_2.gif"; 
path[2] = "image_3.gif"; 

function swapImage() { document.slide.src = path[i]; 
if(i < path.length - 1) i++; 
else i = 0; setTimeout("swapImage()",3000); 
} window.onload=swapImage;

</script> 

<img height="200" name="slide" src="image_1.gif" width="400" />

var i=0;var path=新数组();
//图像列表
路径[0]=“image_1.gif”;
路径[1]=“image_2.gif”;
路径[2]=“image_3.gif”;
函数swapImage(){document.slide.src=path[i];
if(i
我写了一篇关于创建幻灯片的教程, 如果链接无效,我将在下面的回答中包含代码

html:

<div id="slideShow">
 <div id="slideShowWindow">
 <div class="slide">
 <img src="”img1.png”/">
 <div class="slideText">
 <h2>The Slide Title</h2> 
 <p>This is the slide text</p>
 </div> <!-- </slideText> -->
 </div> <!-- </slide> repeat as many times as needed --> 
 </div> <!-- </slideShowWindow> -->
 </div> <!-- </slideshow> -->
jQuery:

$(document).ready(function () {

 var currentPosition = 0;
 var slideWidth = 650;
 var slides = $('.slide');
 var numberOfSlides = slides.length;
 var slideShowInterval;
 var speed = 3000;

 //Assign a timer, so it will run periodically
 slideShowInterval = setInterval(changePosition, speed);

 slides.wrapAll('<div id="slidesHolder"></div>');

 slides.css({ 'float': 'left' });

 //set #slidesHolder width equal to the total width of all the slides
 $('#slidesHolder').css('width', slideWidth * numberOfSlides);

 $('#slideShowWindow')
 .prepend('<span class="slideNav" id="leftNav">Move Left</span>')
 .append('<span class="slideNav" id="rightNav">Move Right</span>');

 manageNav(currentPosition);

 //tell the buttons what to do when clicked
 $('.slideNav').bind('click', function () {

 //determine new position
 currentPosition = ($(this).attr('id') === 'rightNav')
 ? currentPosition + 1 : currentPosition - 1;

 //hide/show controls
 manageNav(currentPosition);
 clearInterval(slideShowInterval);
 slideShowInterval = setInterval(changePosition, speed);
 moveSlide();
 });

 function manageNav(position) {
 //hide left arrow if position is first slide
 if (position === 0) {
 $('#leftNav').hide();
 }
 else {
 $('#leftNav').show();
 }
 //hide right arrow is slide position is last slide
 if (position === numberOfSlides - 1) {
 $('#rightNav').hide();
 }
 else {
 $('#rightNav').show();
 }
 }


 //changePosition: this is called when the slide is moved by the timer and NOT when the next or previous buttons are clicked
 function changePosition() {
 if (currentPosition === numberOfSlides - 1) {
 currentPosition = 0;
 manageNav(currentPosition);
 } else {
 currentPosition++;
 manageNav(currentPosition);
 }
 moveSlide();
 }


 //moveSlide: this function moves the slide 
 function moveSlide() {
 $('#slidesHolder').animate({ 'marginLeft': slideWidth * (-currentPosition) });
 }

});
$(文档).ready(函数(){
var currentPosition=0;
var slideWidth=650;
变量幻灯片=$('.slide');
var numberOfSlides=slides.length;
var幻灯片放映间隔;
var速度=3000;
//分配一个计时器,使其定期运行
slideShowInterval=设置间隔(改变位置、速度);
幻灯片。wrapAll(“”);
css({'float':'left'});
//将#幻灯片文件夹宽度设置为所有幻灯片的总宽度
$(“#幻灯片文件夹”).css('width',slideWidth*numberOfSlides);
$(“#幻灯片窗口”)
.prepend('向左移动')
.append('Move Right');
管理导航(当前位置);
//告诉按钮单击时要执行的操作
$('.slideNav').bind('click',函数(){
//确定新位置
currentPosition=($(this.attr('id')=='rightNav')
?当前位置+1:当前位置-1;
//隐藏/显示控件
管理导航(当前位置);
clearInterval(幻灯片放映间隔);
slideShowInterval=设置间隔(改变位置、速度);
moveSlide();
});
职能经理导航(职位){
//如果位置是第一张幻灯片,则隐藏左箭头
如果(位置===0){
$('#leftNav').hide();
}
否则{
$('#leftNav').show();
}
//隐藏右箭头是幻灯片位置是最后一张幻灯片
如果(位置===幻灯片数量-1){
$('#rightNav').hide();
}
否则{
$('#rightNav').show();
}
}
//changePosition:当计时器移动幻灯片时调用,而不是单击下一个或上一个按钮时调用
函数changePosition(){
如果(currentPosition==numberOfSlides-1){
currentPosition=0;
管理导航(当前位置);
}否则{
currentPosition++;
管理导航(当前位置);
}
moveSlide();
}
//moveSlide:此功能用于移动幻灯片
函数moveSlide(){
$(“#SlideShalder”)。动画({'marginLeft':slideWidth*(-currentPosition)});
}
});

我最近创建了一个解决方案,其中包含一个图像库和一个在单击图像时自动弹出的滑块

请看下面的代码:

这里有一个活生生的例子:

var CreateGallery=函数(参数){
var self=这个;
this.gallerymages=[];
this.gallerymagesrcs=[];
此.galleryImagesNum=0;
这个柜台;
this.galleryTitle=parameters.galleryTitle!=未定义?parameters.galleryTitle:“画廊图像”;
this.maxMobileWidth=parameters.maxMobileWidth!=未定义?parameters.maxMobileWidth:768;
this.numobileimg=parameters.numobileimg!=未定义?parameters.numobileimg:2;
this.maxTabletWidth=parameters.maxTabletWidth!=未定义?parameters.maxTabletWidth:1024;
this.numTabletImg=parameters.numTabletImg!=未定义?parameters.numTabletImg:3;
this.addModalGallery=函数(gallerySelf=self){
var$div=$(document.createElement('div')).attr({
“id”:“模态库”
}).append($(document.createElement('div')).attr({
'class':'header'
}).append($(document.createElement('button')).attr({
“类”:“关闭按钮”,
“类型”:“按钮”
}).html(“×;”)
).append($(document.createElement('h2')).text(gallerySelf.galleryTitle))
).append($(document.createElement('div')).attr({
“类”:“文本中心”
}).append($(document.createElement('img')).attr({
'id':'gallery img'
})
).append($(document.createElement('button')).attr({
“类”:“上一个按钮”,
“类型”:“按钮”
}).html(“◄;”)
).append($(document.createElement('button')).attr({
“类”:“下一步按钮”,
“类型”:“按钮”
}).html(“►;”)
)
);
参数.element.after($div);
};
$(document).on('click','button.prev button',{self:self},function()){
var$currImg=self.counter>=1?self.gallerymages[--self.counter]:self.gallerymages[self.counter];
var$currHash=self.gallerymagesrcs[self.counter];
var$src=$currImg.src;
window.location.hash=$currHash;
$('img#gallery img').attr('src',$src);
$('div#modal gallery h2')。文本(self.galleryTitle+“”+(self.counter+1));
});
$(document).on('click','button.next button',{self:self},function(){
var$currImg=self.counter<(self.gallerymagesum-1)?self.gallerymages[++self.counter]:se