如何在JavaScript应用程序中调整图像大小?

8aqjt8rx  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(109)

我给自己设置了一个音乐节奏练习的任务,在一个网站上显示4张卡片,每4秒改变一次。这一切都在工作,但我就是不能把它们变小。我试着上传更小的卡片,并尝试了各种JavaScript片段,但没有任何效果。
我只需要连续4张小牌,而不是4张大牌一张在另一张的上面。
我试着上传小卡片,尝试使用JavaScript更改大小,但不能得到任何工作。这是我到目前为止。(我还没有包括任何改变大小的脚本,不工作)。

var card1Image;
var card2Image;
var card3Image;
var card4Image;

function start() {
  var button = document.getElementById("startButton");
  button.addEventListener("click", pickCards, false);
  card1Image = document.getElementById("card1");
  card2Image = document.getElementById("card2");
  card3Image = document.getElementById("card3");
  card4Image = document.getElementById("card4");
}

function pickCards() {
  setImage(card1Image);
  setImage(card2Image);
  setImage(card3Image);
  setImage(card4Image);
}

function setImage(cardImg) {
  var cardValue = Math.floor(1 + Math.random() * 25);
  cardImg.setAttribute("src", "https://timpratt.uk/wp-content/uploads/2023/04/card" + cardValue + ".png");
}
window.addEventListener("load", start, false);

setInterval(pickCards, 4000);
.table {
  position: relative;
  top: 50px;
  left: 50px;
  width: 1700px;
  height: 800px;
  background-color: white;
}

.key {
  position: absolute;
  top: 15px;
  left: 50px;
}

.startButton {
  width: 80px;
  height: 50px;
  background-color: black;
  color: white;
}

.card {
  position: absolute;
  top: 150px;
  left: 150px;
  max-width: 8px!important;
  max-height: 8px!important;
}
<meta charset="utf-8">
<title>Rhythm Practice</title>

<div class="table">
  <div class="key">
    <form action="#">
      <p><input id="startButton" type="button" value="start"></p>
    </form>
  </div>
  <div class="card">
    <p><img id="card1" src="https://timpratt.uk/wp-content/uploads/2023/04/intro1.png">
      <img id="card2" src="https://timpratt.uk/wp-content/uploads/2023/04/intro2.png">
      <img id="card3" src="https://timpratt.uk/wp-content/uploads/2023/04/intro3.png">
      <img id="card4" src="https://timpratt.uk/wp-content/uploads/2023/04/intro4.png">
    </p>
  </div>

</div>
idfiyjo8

idfiyjo81#

要使卡片变小,您可以在CSS中调整“.card”类的宽度和高度。目前,max-width和max-height属性设置为88 px,这会使卡片看起来很大。您可以减小这些值以使卡片变小。例如,尝试将CSS中的“.card”类更改为以下内容:

.card {
  position: absolute;
  top: 150px;
  left: 150px;
  max-width: 50px;
  max-height: 50px;
}

这会使卡片看起来更小。您可以根据需要调整最大宽度和最大高度值。
另外,值得注意的是,卡片的位置是绝对的,这意味着它们将始终相对于最近定位的祖先元素的左上角定位。在您的示例中,它是“.table”类。因此,您可能需要调整“.card”类的左值和顶值,以根据您的要求对齐卡片。

wwtsj6pe

wwtsj6pe2#

.card中设置的widthheight属性仅适用于class属性等于.card的div(div.card)。由于图像具有它们自己的自然尺寸,因此它们通常将尝试呈现它们自己的大小,即使它们重叠或超出它们的父元素的边界,除非我们明确地告诉他们使用CSS应该是什么尺寸。
我建议你在定义他们的风格时必须更加具体:

.card img {
     max-width: 50px; 
     max-height: 50px; 
}

如果我们想改进样式的specificity!important实际上并不是必需的。
关于为什么它们堆叠在彼此的顶部,图像的父容器(div.card)要小得多,所以每个图像将尝试“挤出”容器并将其自身定位在其前一个兄弟的下面。我实际上会将div.card的样式更改为:

.card {
  position: absolute;
  top: 150px;
  left: 150px;
}

下面是对您的代码和我提到的建议的一个小改动:https://jsfiddle.net/ku0sqc6d/
顺便说一句,在真实的世界中,我们总是希望调整我们使用的图像的大小,使其接近我们显示它们的最大尺寸,以保存网络资源并通常改善加载时间。想象一下,为每个图像使用1 MB文件,但我们只会将它们用作32 px正方形中的图标!

相关问题