- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个小型网络项目,该项目应该包含多个幻灯片。由于我以前从未真正使用过 JavaScript,所以事实证明这比我希望的要难......
我从 w3schools 找到了这段相当简单的代码,我正在尝试实现它。可悲的是我遇到了多个问题,我不知道如何解决:
首先,我尝试了页面( https://www.w3schools.com/howto/howto_js_slideshow.asp )“幻灯片/轮播”上的第一个示例。这工作得很好,但除非您单击上一个/下一个按钮,否则它不会显示任何内容。因此,如果我重新加载页面,幻灯片容器将为空,而不是显示第一张幻灯片。
现在我想在我的网页上放置第二个 slider 。这里我将 JavaScript 代码切换到 w3schools“Multiple Slideshows”中的最后一个示例。在这里,我遇到了与以前相同的问题:刷新页面时,除非您单击上一个/下一个按钮,否则两张幻灯片都不会显示图像。我还想在每张幻灯片的底部添加点。遗憾的是我不知道如何将这些点添加到 JavaScript 代码中。
谁能帮我理解这个?非常高兴提前谢谢你!! :)
编辑1:我想澄清一下:我不想要自动幻灯片。仅当我单击上一个/下一个按钮或点时,幻灯片本身才应更改。问题是,当我第一次打开页面时,幻灯片没有显示任何内容。默认情况下,我喜欢显示第一张幻灯片。
编辑2:我刚刚将 JavaScript 代码复制到 html 的底部(而不是 extern script.js 文件),这解决了刷新页面时不显示第一张幻灯片的问题!但我仍然需要一些帮助来将这些点集成到 javascript 代码中
我的代码:
/***************************************************************** SLIDESHOW **/
var slideIndex = [1,1];
/* Class the members of each slideshow group with different CSS classes */
var slideId = ["slides1", "slides2"]
showSlides(0, 0);
showSlides(0, 1);
function plusSlides(n, no) {
showSlides(slideIndex[no] += n, no);
}
function showSlides(n, no) {
var i;
var x = document.getElementsByClassName(slideId[no]);
if (n > x.length) {slideIndex[no] = 1}
if (n < 1) {slideIndex[no] = x.length}
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
x[slideIndex[no]-1].style.display = "table";
}
* { margin:0px; padding:0px; border:0px; box-sizing: border-box;}
html { width:100%; height:100%; }
body {
position:relative;
margin: 0px auto;
padding: 0px;
height: 100%;
width: 100%;
}
/****************************************************************** BASIC CSS */
body {
font-family:'Montserrat';
font-weight: 400;
font-size: 12px;
}
/** HEADINGS **/
h1,h2,h3,h4,h5,h6 {
font-family: 'Montserrat';
font-weight: normal;
position: relative;
padding: 0 0 20px 0;
}
h1 { font-size: 33px; }
/** LAYOUT **/
.row:after {
content: "";
clear: both;
display:table;
}
[class*="col-"] {
float:left;
width:99.99999%;
height:100%;
}
@media (min-width:640px) {
.col-s-1{width:99.99999%;} .col-s-2{width:49.99999%;} .col-s-3{width:33.22222%;} .col-s-4{width:24.9999%;}
}
@media (min-width:800px) {
.col-m-1{width:99.99999%;} .col-m-2{width:49.99999%;} .col-m-3{width:33.22222%;} .col-m-4{width:24.9999%;}
}
@media (min-width:1024px) {
[class*="col-"] {height:100vh;}
.col-l-1{width:99.99999%;} .col-l-2{width:49.99999%;} .col-l-3{width:33.22222%;} .col-l-4{width:24.9999%;}
}
article {position:relative;padding:80px 70px;}
.center_wrapper {
display:table;
width:100%;
height:100%;
}
.center_box {
margin: 0px auto;
display: table-cell;
vertical-align: middle;
text-align:center;
}
/*************************************** SLIDER GENERAL **/
.slideshow-container {
width: 100%;
height: 100%;
position: relative;
}
.slides1 {
display: none;
width:100%;
height:100%;
}
/** NEXT, PREVIOUS AND DOTS **/
.prev, .next {
cursor: pointer;
position: absolute;
top: 50%;
width: auto;
margin-top: -22px;
padding: 16px;
color: white;
font-weight: bold;
font-size: 18px;
transition: 0.6s ease;
border-radius: 0 3px 3px 0;
text-decoration:none;
}
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
.prev:hover, .next:hover {
background-color: rgba(0,0,0,0.8);
}
.dot {
cursor: pointer;
height: 15px;
width: 15px;
margin: 0 2px;
background-color: #bbb;
border-radius: 50%;
display: inline-block;
transition: background-color 0.6s ease;
}
.active, .dot:hover {
background-color: #717171;
}
/** FADING ANIMATION **/
.fade {
-webkit-animation-name: fade;
-webkit-animation-duration: 1.5s;
animation-name: fade;
animation-duration: 1.5s;
}
@-webkit-keyframes fade {
from {opacity: .4}
to {opacity: 1}
}
@keyframes fade {
from {opacity: .4}
to {opacity: 1}
}
/********************************************* SLIDER 1 **/
#BigSlider {
background-image: url('images/red.jpg');
background-color:red;
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center center;
background-size: cover;
height:100vh;
width:100%;
}
/** DEPARTMENTS **/
.department {
width:300px;
margin: 0px auto;
}
.department>a {
color:#fff;
text-decoration:none;
}
.department>a>i {
font-size:60px;
margin-bottom:10px;
}
.department>a>h4 {
font-size:18px;
font-weight:bold;
}
.department>a>p {
font-size:14px;
text-align:left;
}
/********************************************* SLIDER 2 **/
/** EMPLOYEES **/
#Employees {
background-color:#222;
color:#fff;
}
#Employees>h1 {
color:#fff;
}
.employee_info {color:#fff;}
<div class="row">
<article id="BigSlider" class="col-l-1">
<div class="slideshow-container">
<div class="slides1 fade">
<div class="center_box">
<div class="department">
<a href="#">
<i class="far fa-envelope"></i>
<h4>HEADLINE1</h4>
<p>
Some Text here...
</p>
</a>
</div>
</div>
</div>
<div class="slides1 fade">
<div class="center_box">
<div class="department">
<a href="#">
<i class="fas fa-users"></i>
<h4>HEADLINE 2</h4>
<p>
Some Text here...
</p>
</a>
</div>
</div>
</div>
<div class="slides1 fade">
<div class="center_box">
<div class="department">
<a href="#">
<i class="fas fa-users"></i>
<h4>HEADLINE 3</h4>
<p>
Some Text here...
</p>
</a>
</div>
</div>
</div>
<!-- Next and previous buttons -->
<a class="prev" onclick="plusSlides(-1, 0)">❮</a>
<a class="next" onclick="plusSlides(1, 0)">❯</a>
</div>
<br>
<!-- The dots/circles -->
<div style="text-align:center">
<span class="dot" onclick="currentSlide(1)"></span>
<span class="dot" onclick="currentSlide(2)"></span>
<span class="dot" onclick="currentSlide(3)"></span>
</div>
</article>
</div>
<div class="row">
<article id="Employees" class="col-l-2">
<h1>HEADLINE HEADLINE HEADLINE</h1>
<div id="pic_box_mobile" class="slideshow-container">
<div class="slides2 fade">
<div class="center_box">
<div class="employee_info">
<h4>111NAME NAME</h4>
<h5>111POSITION</h5>
</div>
</div>
</div>
<div class="slides2 fade">
<div class="center_box">
<div class="employee_info">
<h4>222NAME NAME</h4>
<h5>222POSITION</h5>
</div>
</div>
</div>
<div class="slides2 fade">
<div class="center_box">
<div class="employee_info">
<h4>333NAME NAME</h4>
<h5>333POSITION</h5>
</div>
</div>
</div>
<div class="slides2 fade">
<div class="center_box">
<div class="employee_info">
<h4>444NAME NAME</h4>
<h5>444POSITION</h5>
</div>
</div>
</div>
<!-- Next and previous buttons -->
<a class="prev" onclick="plusSlides(-1, 1)">❮</a>
<a class="next" onclick="plusSlides(1, 1)">❯</a>
</div>
<br>
<!-- The dots/circles -->
<div style="text-align:center">
<span class="dot" onclick="currentSlide(1)"></span>
<span class="dot" onclick="currentSlide(2)"></span>
<span class="dot" onclick="currentSlide(3)"></span>
<span class="dot" onclick="currentSlide(4)"></span>
</div>
</article>
</div>
最佳答案
这是一个轮播,每页可以显示多个项目。
https://jsfiddle.net/rimika89/a9pqnv3f/1/
class Carousel {
constructor() {
this.currentPage = 1;
this.perPage = 2;
this.data = [];
this.getData();
//if (this.data) {
// this.displayData();
//}
document.querySelector(".right-arrow").addEventListener("click", (event) => {
event.preventDefault();
this.handleRightClick();
});
document.querySelector(".left-arrow").addEventListener("click", (event) => {
event.preventDefault();
this.handleLeftClick();
});
}
countTotalPages() {
let totalPages = Math.ceil(this.data.length / this.perPage);
return totalPages;
}
handleLeftClick() {
if (this.currentPage === 1) {
return;
}
this.currentPage--;
this.displayData();
}
handleRightClick() {
const totalPages = this.countTotalPages();
if (this.currentPage >= totalPages) {
return;
}
this.currentPage++;
this.displayData();
}
paginate() {
let startIndex = (this.currentPage - 1) * this.perPage;
let endIndex = (this.currentPage * this.perPage);
return this.data.slice(startIndex, endIndex);
}
displayData() {
if (this.data) {
const paginatedList = this.paginate();
document.querySelector('.carousel-wrapper').innerHTML = paginatedList !== '' ? paginatedList.map((item) => {
return `<div class="carousel-item" id=${item.id}>${item.data}</div>`;
}).join('') : '<div>No Data To show</div>';
document.querySelector(".current-page").innerHTML = this.currentPage;
document.querySelector(".total-pages").innerHTML = this.countTotalPages();
}
}
fetch() {
const data = [{
'id': '1',
'data': 'Data 1'
},
{
'id': '2',
'data': 'Data 2'
},
{
'id': '3',
'data': 'Data 3'
},
{
'id': '4',
'data': 'Data 4'
},
{
'id': '5',
'data': 'Data 5'
}
];
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(data);
}, 2000);
});
}
async getData() {
try {
const response = await this.fetch();
this.data = response;`enter code here`
this.displayData();
} catch (error) {
console.log('fetch failed', error);
}
}
}
let carousel = new Carousel();
关于javascript - 使用 JavaScript 创建幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51420256/
我制作了一个 jquery 幻灯片,代码如下: HTML previous Next CSS #slideshow { width: 700px; h
我正在用 Javascript 制作幻灯片,带有播放/暂停和下一个/上一个按钮。我已经设法使用播放/暂停按钮进行幻灯片放映,但现在我想向其中添加“下一个”和“上一个”按钮。有人可以帮我吗?我该怎么做?
我是 Java 脚本新手,我正在尝试为我的页面构建幻灯片。这是我的 html 代码: 和我的 Js 脚本: var numar_ima
我可以修改此现有代码以自动滚动列表项以显示内容吗? 抱歉,:ul li a {} 链接。 也许使用“间隔”方法? $(document).ready(function(){ $('ul.tab
我正在尝试熟悉 jQuery 工具 - Flowplayer 中的幻灯片 ( http://flowplayer.org/tools/tabs/slideshow.html )。有没有人提示我如何选择
这个问题在这里已经有了答案: Return to 1st image on slideshow (2 个答案) 关闭 3 年前。 有谁知道如何在此幻灯片中添加另一个按钮,使用户在幻灯片放映期间的任何
我知道这听起来很傻,我可以使用一些现成的解决方案,但我真的很想构建自己的简单图像幻灯片。我在 Silverlight/WPF 中进行应用程序开发已经有一段时间了,但无论出于何种原因,我都无法解决这个问
我正在尝试设置此幻灯片脚本,以便显示的第一张图片是随机的(每次我们访问该网站时,我都需要第一张图片是不同/随机的幻灯片),其余图片可以显示在正确的顺序,没关系。 我正在使用 Jon Raasch 的简
我们的 flexslider 上最后一张图片的一小部分在幻灯片加载后立即闪烁整个页面。第一个图像设置为可见,所有其他图像设置为隐藏。插件设置为在页面加载后运行。我认为可能是页面上的其他原因导致了此问题
我有一个自动幻灯片放映效果很好。但是,我希望能够改变某些幻灯片的速度这是代码: var slideIndex = 0; showSlides(); function showSlides() {
如有任何帮助,我们将不胜感激! 我正在尝试从以下位置实现脚本: www.switchonthecode.com/tutorials/jquery-creating-a-slideshow 但我希望它连
我用 javascript 创建了以下幻灯片。但是由于某种原因,在第一张图片滑过时,第一张图片刚好移开,而第二张图片进行了“滑动”。任何帮助,将不胜感激。我添加了注释以帮助提高代码的可读性。
我正在使用在以下网站在线找到的带缩略图的图像幻灯片。有谁知道我将如何更改此幻灯片,以便将缩略图列在幻灯片的右侧,而不是列在其下方。如果您转到下面的链接,然后单击查看演示,您可以看到我的幻灯片目前是如何
我希望在悬停链接时有过渡效果。我希望在链接后顺利显示文本。 这就是我目前所拥有的: p { border-radius: 1em; padding: 0.5em; backgr
我喜欢jQuery的幻灯片效果,当你move a cursor on some of products 我正在尝试使用类似的功能实现相同的效果,但有一个区别 - 当我在框上移动光标时,我想显示带有信息
我正在尝试创建自己的幻灯片。以下代码从一张图像淡入另一张图像。我想从 img1.jpg 循环到 img4.jpg,但我不确定如何在每次更改后暂停。 i++;
jquery 中的代码是什么,可以让幻灯片放映在最后一张照片上单击“下一步”后显示第一张照片。我知道我只需要写一次文档准备好,但我还没有这样做,但我会的。这是我的代码
如何添加指向这些图像的链接。我尝试过多种幻灯片放映方式,但发现当我添加链接时,它开始不显示所有其他图像。在我下面的代码中,我将链接注释掉了。如果我删除链接,图像显示正常。 我已经重复了两次图像只是为了
我似乎无法制作完全可用的 CSS 幻灯片,其中幻灯片的显示时间各不相同。我需要使用多个关键帧还是有其他方法可以做到这一点?如果是,将不胜感激 :^) 最佳答案 您可以使用单个关键帧设置和 CSS3 的
我用 HTML/CSS/JS 制作了这个小幻灯片。 大部分都在工作,但有一件事我想不通。 当自动滑动打开时,如何使每个图像上方的文本适合 img 本身? 现在它只在我手动点击时显示每个 img 的正确
我是一名优秀的程序员,十分优秀!