admin管理员组文章数量:1316817
Im trying to find a very very simple javascript slider. One that is the bare minimum, no fancy jquery, or other libraries involved. The simplest possible slider. With the minimum amount of code possible.
Thanks for the attention!
@ Roger Walsh:
Below the HTML code: The .js and the .css are identical to the example in the tutorial you send me. I guess I have to add some more info in the body section, but I dont understand what exactly.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".dtd">
<html xmlns="">
<html>
<head>
<title> Slider </title>
<script type="JavaScript" src="slider.js"></script>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<html>
<head>
<title> </title>
<script type="text/javascript">
</script>
</head>
<body>
<div class="carpe_slider_display_holder">
<!-- Default value: 0 -->
<input class="carpe_slider_display" id="display1" type="text" value="100" />
</div>
<div class="carpe_horizontal_slider_track">
<div class="carpe_slider_slit"> </div>
<div class="carpe_slider" id="my_id" orientation="horizontal" distance="100" display="my_id" style="left: 100px;"> </div>
</div>
<!--<div class="carpe_horizontal_slider_track">
<div class="carpe_slider_slit"> </div>
<div class="carpe_slider"
id="my_id"
orientation="horizontal"
distance="100"
display="my_id"
style="left: 100px;"> </div>
</div>
-->
</body>
</html>
Im trying to find a very very simple javascript slider. One that is the bare minimum, no fancy jquery, or other libraries involved. The simplest possible slider. With the minimum amount of code possible.
Thanks for the attention!
@ Roger Walsh:
Below the HTML code: The .js and the .css are identical to the example in the tutorial you send me. I guess I have to add some more info in the body section, but I dont understand what exactly.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3/1999/xhtml">
<html>
<head>
<title> Slider </title>
<script type="JavaScript" src="slider.js"></script>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<html>
<head>
<title> </title>
<script type="text/javascript">
</script>
</head>
<body>
<div class="carpe_slider_display_holder">
<!-- Default value: 0 -->
<input class="carpe_slider_display" id="display1" type="text" value="100" />
</div>
<div class="carpe_horizontal_slider_track">
<div class="carpe_slider_slit"> </div>
<div class="carpe_slider" id="my_id" orientation="horizontal" distance="100" display="my_id" style="left: 100px;"> </div>
</div>
<!--<div class="carpe_horizontal_slider_track">
<div class="carpe_slider_slit"> </div>
<div class="carpe_slider"
id="my_id"
orientation="horizontal"
distance="100"
display="my_id"
style="left: 100px;"> </div>
</div>
-->
</body>
</html>
Share
Improve this question
edited Sep 9, 2010 at 11:20
MacPython
asked Sep 9, 2010 at 8:55
MacPythonMacPython
18.3k12 gold badges43 silver badges48 bronze badges
2
- no very simple slider is possible without those libraries. You would have to write different code for different browsers, that handle events. Why are you so unwilling to use 3rd party libraries? – Alex Commented Sep 9, 2010 at 9:00
- I am not unwilling. I just want to understand how that works from a simple slider. – MacPython Commented Sep 9, 2010 at 10:01
6 Answers
Reset to default 2The Carpe Slider is now at version 3.0, and there is documentation here: http://carpe.ambiprospect./slider/documentation.htm and a test page: http://carpe.ambiprospect./slider/test.htm
The js code is 4 kB pressed.
If you want to code less and in quick time, I will remend you to use an existing library for this.
Look at dhtmlx Slider
Simplest Slider Example
Try this one:
http://carpe.ambiprospect./slider/
Here you go: jsfiddle
JS:
//init
slides = document.getElementsByClassName("slide");
containerWidth = 500;
Array.prototype.forEach.call(slides, function (el, i) {//set the initial position of each slide
el.style.left = (i * containerWidth) + "px";
});
window.moveSlides = function (direction) {
run = true;
tracker = containerWidth; //500 in this example. We make a separate variable so we can decrement it
if (((direction == "next" && (parseInt(slides[0].style.left) <= (0 - (containerWidth * (slides.length - 1)))))) //pare against 2nd-to-last slide's index, otherwise it'll go 1 slide too far
|| (direction == "prev" && (parseInt(slides[0].style.left) >= 0))) { run = false; }
if (run) {
var slideInterval = setInterval(function () {
moveRate = 4; //set the speed here (use numbers that the container's width can be divided by without a remainder)
Array.prototype.forEach.call(slides, function (el, i) {
if (tracker <= 0) {
clearInterval(slideInterval)
} else {
el.style.left = (direction == "next") ? (parseInt(el.style.left) - moveRate) + "px" : (parseInt(el.style.left) + moveRate) + "px";
}
});
tracker -= moveRate;
}, 1);
}
}
HTML:
<div id="slider-container">
<div id="slider-mask">
<div class="slide one">slide 1</div>
<div class="slide two">slide 2</div>
<div class="slide three">slide 3</div>
<div id="buttons">
<a href="javascript:moveSlides('prev');" id="prev"><Previous</a>
|
<a href="javascript:moveSlides('next');" id="next">Next></a>
</div>
</div>
</div>
CSS:
#slider-container {
width: 999999px;
height: 300px; //set to the height you want
position:relative;
}
#slider-mask {
width:500px; //set slide width. must be equal to slide width
height:300px;
overflow:hidden;
position:relative;
}
.slide {
width:500px;
height:100%;
top:0;
position:absolute;
}
#buttons {
position:absolute;
bottom:5px;
left:50%;
width: 150px;
height:30px;
margin-left:-75px;
}
I could create a simple slider with Javascript
and JQuery
. this slider can go to next or previous slide with fading effect and has a pair of buttons for controling it
(i used some free photo links and JQuery
cdn so maybe they change):
const box = $('.slider-box');
const children = box.children();
// a List of every slide object
var list = [];
$(document).ready(() => {
children.each(function () {
// Add the object of every slide
list.push($(this));
});
children.each(function () {
if ($(this).hasClass('active-slide') === false) {
$(this).hide();
}
})
})
// Interval work variables
let timer = '';
var index = 1;
let status = 'after';
const sliderStart = () => {
timer = setInterval(() => {
// If its the first index, hide the last index
if (index === 0) {
list[list.length - 1].hide();
} else {
list[index - 1].hide();
}
// Show element
list[index].fadeIn();
index += 1;
// If index is equal list length change to 0
if (index === list.length) {
index = 0;
}
}, 3000);
}
// To start automatically
sliderStart();
function next() {
status = 'after';
// console.log('Index is: ' + String(index));
clearInterval(timer);
// Hide the current slide
if (index === 0) {
list[list.length-1].hide();
} else {
list[index-1].hide();
}
// Show next slide
list[index].fadeIn();
// Show the next slide and index+
if (0 <= index && index < list.length-1) {
index += 1;
} else if (index === list.length-1) {
index = 0;
}
sliderStart();
}
function previous() {
status = 'previous';
// console.log('Index is: ' + String(index));
clearInterval(timer);
// Get the current slide index
if (index === 0) {
index = list.length-1;
} else {
index -= 1;
}
// Hide the current slide
list[index].hide();
// Show the last slide
if (0 < index && index <= list.length-1) {
list[index-1].fadeIn();
} else if (index === 0) {
list[list.length-1].show();
}
sliderStart();
}
div, body {
margin: 0px;
padding: 0px;
}
.slider-box {
width: 100%;
height: 150px;
}
.slide {
width: 100%;
height: 100%;
}
img {
width: 100%;
height: 100%;
}
.number {
background-color: black;
color: white;
width: 100px;
height: 100px;
position: absolute;
display: flex;
align-items: center;
justify-content: center;
font-size: 500%;
font-weight: bold;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simple-slider</title>
<script src="https://ajax.googleapis./ajax/libs/jquery/3.6.4/jquery.min.js"></script>
</head>
<body>
<div class="slider-box">
<div class="slide active-slide" id="slide1" style="background-color: blue">
<div class="number">1</div>
<img src="https://img.freepik./free-photo/painting-mountain-lake-with-mountain-background_188544-9126.jpg?w=2000">
</div>
<div class="slide" id="slide2" style="background-color: red">
<div class="number">2</div>
<img src="https://img.freepik./premium-photo/beautiful-landscape-with-high-mountains-lagoon-water-with-sunlight-golden-sunrise_143683-8450.jpg">
</div>
<div class="slide" id="slide3" style="background-color: rgb(94, 235, 89)">
<div class="number">3</div>
<img src="https://img.freepik./premium-photo/man-stands-field-with-mountains-background_808092-6114.jpg?w=360">
</div>
</div>
<button onclick="next()">next</button>
<button onclick="previous()">previous</button>
</body>
</html>
I’ve been using this ponent for my projects:
<html>
<script src="https://jsuites/v5/jsuites.js"></script>
<link rel="stylesheet" href="https://jsuites/v5/jsuites.css" type="text/css" />
<div id="slider">
<img src="https://jsuites/templates/default/img/car.jpeg"/>
<img src="https://jsuites/templates/default/img/car2.jpeg"/>
<img src="https://jsuites/templates/default/img/car3.jpeg"/>
</div>
<br>
<button id="open-slider" type="button" class="jbutton dark">Open the slider</button>
<script>
jSuites.slider(document.getElementById('slider'), {
grid: true
});
document.getElementById('open-slider').addEventListener('click', function() {
slider.open();
});
</script>
</html>
It’s helped a lot!
https://jsuites/docs/image-slider
本文标签: Simple Javascript SliderStack Overflow
版权声明:本文标题:Simple Javascript Slider - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742015832a2413749.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论