javascript - 当设备大小发生变化时,如何使用 javascript 更改 img src?
问题描述
我正在尝试使用 javascript 更改图像源。当窗口大小为max-width: 576px; 它应该更改为适合移动设备比例的另一种图像来源。该元素是一个图像滑块。
我想知道的是如何在javascript中做到这一点。我已经在下面的代码中尝试过,但它没有改变。如果您能帮助我找出我的错误,我将不胜感激。非常感谢你。
<DOCTYPE html>
<html lang="de">
<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>Document</title>
<link rel="stylesheet" type="text/css" href="beispiel.css">
</head>
<body>
<!-- Pictures in slideshow -->
<div id="Slider" class="Slide col-1">
<div class="Slide-ontop">
<!--<div class="img1 slider-img mySlides"></div>-->
<image class="changeimg slider-img mySlides" src="start-img-1.png" alt="Lets grow together" />
<image class="slider-img mySlides" src="start-img-1.png" alt="Lets grow together" />
<div class="teaser-box">
<h1 class="serif-heading-1">Let us grow together</h1>
<p class="sans-serif-text2">Wie die xx Ihnen helfen kann.</p>
</div>
</div>
</div>
<div class=" button2">
<button class="w3-button demo sans-serif-caption space-button-left" onclick="currentDiv(1)">01</button>
<button class="w3-button demo sans-serif-caption" onclick="currentDiv(2)">02</button>
</div>
<script type="text/javascript">
var slideIndex = 1;
showDivs(slideIndex);
function showDivs(n) {
var i;
var x = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("demo");
if (n > x.length) {slideIndex = 1}
if (n < 1) {slideIndex = x.length}
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" w3-red", "");
}
x[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " w3-red";
}
let sliderimg = document.getElementsByClassName("changeimg");
function changeImage(y) {
if (y.matches) { // If media query matches
sliderimg.src="slider1-mobile.png";
} else {
sliderimg.src="start-img-1.png";
}
}
var y = window.matchMedia("(max-width: 576px)")
changeImage(y);
y.addEventListener(changeImage) ;
</script>
</body>
</html>
解决方案
我建议使用srcset
属性,为什么要使用 JS,当我们已经准备好所有东西时。
这是您可以使用的示例。
在 HTML 中
<img srcset=" examples/images/image-384.jpg 1x, examples/images/image-768.jpg 2x" alt="…">
在 CSS 中
.img {
background-image: url(examples/images/image-384.jpg);
}
@media
(-webkit-min-device-pixel-ratio: 2),
(min-resolution: 192dpi) {
.img {
background-image: url(examples/images/image-768.jpg);
}
}
推荐阅读
- javascript - 移动设备上的 div offsetHeight 行为不同
- google-apps-script - 如何使用电子表格中的 Google App 脚本生成 Gmail 草稿包含正文中的表格
- octobercms - 使用动态文件名的 Octobercms 导出
- react-native - 如何使用 VPN 与预共享共享密钥反应本机?(IPsec)
- flutter - 有没有办法在 Flutter 中使用没有构造函数的赋值变量?
- powerbi - 计算 Power BI 中的唯一列值并将其替换为它们的名称和总数
- c - 在 switch 语句中,如果没有给出 break,为什么所有语句都在 true 语句之后执行?
- javascript - 键入两个具有相同类型的对象
- oop - 使用“覆盖”关键字
- javascript - 如何在Vuejs中选中所有复选框?