如何使用浏览器大小缩放 Javascript 幻灯片
How to scale Javascript slideshow with browser size
所以我在 Javascript/jQuery 中完成了这个小小的自动幻灯片放映。它工作得很好但是我不知道如何用屏幕尺寸缩放它,让它变成液体。目前针对 1920x1080 进行了优化。
我尝试过将此值 (document.body.style.width) 分配给宽度变量,但没有成功,尝试使用图像的百分比而不是像素,还尝试使用非常 hackish 的媒体查询修复,但没有成功有用。
如果有人知道我如何完成此操作,请告诉我(同样,我需要它与浏览器一起扩展 window),无论如何,这是代码:
<div class="slider">
<ul class="slides">
<li class="slide"><img src="index/showcase.png" alt="#"/></li>
<li class="slide"><img src="index/pic4.png" alt="#"/></li>
<li class="slide"><img src="index/pic3.png" alt="#"/></li>
<li class="slide"><img src="index/pic5.png" alt="#"/></li>
<li class="slide"><img src="index/pic6.png" alt="#"/></li>
</ul>
</div>
.slider {
width: 1920px;
height: 780px;
overflow: hidden;
}
.slider .slides {
display: block;
width: 9600px;
height: 780px;
margin: 0;
padding: 0;
}
.slider .slide {
float: left;
list-style-type: none;
width: 1920px;
height: 780px;
}
<script type="text/javascript">
var myInterval = setInterval(function() {
console.log(new Date());
}, 1000);
</script>
<script type="text/javascript">
$(function() {
//configuration
var width = 1920;
var animationSpeed = 1000;
var pause = 4000;
var currentSlide = 1;
//cache DOM
var $slider = $('.slider');
var $slideContainer = $slider.find('.slides');
var $slides = $slideContainer.find('.slide');
var interval;
function startSlider() {
interval = setInterval(function() {
$slideContainer.animate({'margin-left': '-='+width}, animationSpeed,
function(){
currentSlide++;
if (currentSlide === $slides.length) {
currentSlide = 1;
$slideContainer.css('margin-left', 0);
}
});
}, pause);
}
// function stopSlider() {
// clearInterval(interval);
//}
//$slider.on('mouseenter', startSlider).on('mouseleave', startSlider);
startSlider();
});
</script>
vw 和 vh 可能就是你想要的。而不是 width: 20% 或 width: 550px,你做 width: 100vw 是视口宽度的 100%(vh 是视口高度)。然后它应该随着视口调整大小而调整。
所以我在 Javascript/jQuery 中完成了这个小小的自动幻灯片放映。它工作得很好但是我不知道如何用屏幕尺寸缩放它,让它变成液体。目前针对 1920x1080 进行了优化。
我尝试过将此值 (document.body.style.width) 分配给宽度变量,但没有成功,尝试使用图像的百分比而不是像素,还尝试使用非常 hackish 的媒体查询修复,但没有成功有用。
如果有人知道我如何完成此操作,请告诉我(同样,我需要它与浏览器一起扩展 window),无论如何,这是代码:
<div class="slider">
<ul class="slides">
<li class="slide"><img src="index/showcase.png" alt="#"/></li>
<li class="slide"><img src="index/pic4.png" alt="#"/></li>
<li class="slide"><img src="index/pic3.png" alt="#"/></li>
<li class="slide"><img src="index/pic5.png" alt="#"/></li>
<li class="slide"><img src="index/pic6.png" alt="#"/></li>
</ul>
</div>
.slider {
width: 1920px;
height: 780px;
overflow: hidden;
}
.slider .slides {
display: block;
width: 9600px;
height: 780px;
margin: 0;
padding: 0;
}
.slider .slide {
float: left;
list-style-type: none;
width: 1920px;
height: 780px;
}
<script type="text/javascript">
var myInterval = setInterval(function() {
console.log(new Date());
}, 1000);
</script>
<script type="text/javascript">
$(function() {
//configuration
var width = 1920;
var animationSpeed = 1000;
var pause = 4000;
var currentSlide = 1;
//cache DOM
var $slider = $('.slider');
var $slideContainer = $slider.find('.slides');
var $slides = $slideContainer.find('.slide');
var interval;
function startSlider() {
interval = setInterval(function() {
$slideContainer.animate({'margin-left': '-='+width}, animationSpeed,
function(){
currentSlide++;
if (currentSlide === $slides.length) {
currentSlide = 1;
$slideContainer.css('margin-left', 0);
}
});
}, pause);
}
// function stopSlider() {
// clearInterval(interval);
//}
//$slider.on('mouseenter', startSlider).on('mouseleave', startSlider);
startSlider();
});
</script>
vw 和 vh 可能就是你想要的。而不是 width: 20% 或 width: 550px,你做 width: 100vw 是视口宽度的 100%(vh 是视口高度)。然后它应该随着视口调整大小而调整。