So erhalten Sie die Bildgröße (Höhe und Breite) mit JavaScript

Lesezeit: 4 Minuten

Benutzeravatar von Saneef
Sanef

Gibt es eine JavaScript- oder jQuery-API oder -Methode, um die Abmessungen eines Bilds auf der Seite abzurufen?

  • Mit modernen Browsern geht das ganz einfach: davidwalsh.name/get-image-dimensions

    – Jarin

    9. Januar 2015 um 5:08 Uhr


  • Die meisten der folgenden Antworten erhalten nur die Stilbreite und -höhe, nicht die tatsächliche Breite und Höhe des Bildes. Verwenden imgElement.naturalWidth Und imgElement.naturalHeight um Breite und Höhe zu bekommen.

    – Bamdad

    29. Dezember 2020 um 8:09 Uhr

  • Unabhängig davon, ob Sie Javascript oder jQuery verwenden möchten Es ist wichtig, dass das Bild im Browser sichtbar ist. In der Praxis müssen weder das Bild noch die Elternelemente die Regel haben display:none;.

    – Vincenzo di Gaetano

    4. September 2022 um 9:31 Uhr

Benutzeravatar von Rex M
Rex M

clientBreite Und clientHöhe sind DOM-Eigenschaften, die die aktuelle In-Browser-Größe der Innenabmessungen eines DOM-Elements (ohne Rand und Rahmen) anzeigen. Im Fall eines IMG-Elements erhält dieses also die tatsächlichen Abmessungen des sichtbaren Bilds.

var img = document.getElementById('imageid'); 
//or however you get a handle to the IMG
var width = img.clientWidth;
var height = img.clientHeight;

  • @ Nicky genau richtig. Es gibt die Abmessungen des Bildes an wie es in diesem Fall wiedergegeben wird.

    – Rex M

    1. September 2011 um 9:33 Uhr

  • @Mat-visuell $.fn.width Und $.fn.height.

    – yckart

    2. April 2013 um 6:05 Uhr

  • Die richtige Antwort ist die Verwendung von img.naturalWidth und img.naturalHeight

    – Krake

    12. Oktober 2013 um 4:33 Uhr

  • document.getElementById ist länger zu tippen, aber 10 mal schneller als $('#...')[0].

    – bfontaine

    12. August 2014 um 9:57 Uhr


  • @RexM Auf Chrome 35 ist es 16-mal schneller: jsperf.com/document-getelementbyid-vs-jquery/5

    – bfontaine

    12. August 2014 um 13:52 Uhr

Wenn Sie jQuery verwenden und Bildgrößen anfordern, müssen Sie warten, bis sie geladen werden, oder Sie erhalten nur Nullen.

$(document).ready(function() {
    $("img").load(function() {
        alert($(this).height());
        alert($(this).width());
    });
});

  • Ist Breite und Höhe immer im Lastaufnahmemittel vorhanden?

    – Anders Lindén

    12. September 2014 um 12:35 Uhr

  • @AndersLindén – siehe die Link-Tinte, die Akseli für das Ladeereignis hinzugefügt hat. Den Bildern ist ein eigener Abschnitt gewidmet. Die technische Antwort lautet „nein“, aber in der Praxis hatte ich noch nie ein Problem mit unseren Websites, die diese Methode verwenden.

    – mrtsherman

    15. September 2014 um 19:36 Uhr


  • Aber wenn die technische Antwort nein ist, ist es unbrauchbar? Ist es nicht?

    – Anders Lindén

    16. September 2014 um 6:14 Uhr

  • Ist es möglich, die Bildattribute vor dem Laden abzurufen?

    – nein nein

    17. März 2019 um 16:57 Uhr

Benutzeravatar von Peter Mortensen
Peter Mortensen

Verwenden clientWidth und clientHeight ist, denke ich, jetzt veraltet.

Ich habe einige Experimente mit HTML5 durchgeführt, um zu sehen, welche Werte tatsächlich zurückgegeben werden.

Zunächst habe ich ein Programm namens Dash verwendet, um mir einen Überblick über die Bild-API zu verschaffen.

Es sagt, dass height Und width sind die gerenderte Höhe/Breite des Bildes und das naturalHeight Und naturalWidth sind die eigentliche Höhe/Breite des Bildes (und sind nur HTML5).

Ich habe ein Bild eines wunderschönen Schmetterlings aus einer Datei mit einer Höhe von 300 und einer Breite von 400 verwendet. Und dieser JavaScript-Code:

var img = document.getElementById("img1");

console.log(img.height,           img.width);
console.log(img.naturalHeight,    img.naturalWidth);
console.log($("#img1").height(),  $("#img1").width());

Dann habe ich dieses HTML verwendet, mit Inline-CSS für die Höhe und Breite.

<img style="height:120px;width:150px;" id="img1" src="img/Butterfly.jpg" />

Ergebnisse:

/* Image element */ height == 300         width == 400
             naturalHeight == 300  naturalWidth == 400
/* jQuery */      height() == 120       width() == 150

/* Actual rendered size */    120                  150

Dann habe ich den HTML-Code wie folgt geändert:

<img height="90" width="115" id="img1" src="img/Butterfly.jpg" />

Das heißt, die Verwendung von Höhen- und Breitenattributen anstelle von Inline-Stilen.

Ergebnisse:

/* Image element */ height ==  90         width == 115
             naturalHeight == 300  naturalWidth == 400
/* jQuery */      height() ==  90       width() == 115

/* Actual rendered size */     90                  115

Dann habe ich den HTML-Code wie folgt geändert:

<img height="90" width="115" style="height:120px;width:150px;" id="img1" src="img/Butterfly.jpg" />

Das heißt, sowohl Attribute als auch CSS verwenden, um zu sehen, was Vorrang hat.

Ergebnisse:

/* Image element */ height ==  90         width == 115
             naturalHeight == 300  naturalWidth == 400
/* jQuery */      height() == 120       width() == 150

/* Actual rendered size */    120                  150

  • Ist Breite und Höhe immer im Lastaufnahmemittel vorhanden?

    – Anders Lindén

    12. September 2014 um 12:35 Uhr

  • @AndersLindén – siehe die Link-Tinte, die Akseli für das Ladeereignis hinzugefügt hat. Den Bildern ist ein eigener Abschnitt gewidmet. Die technische Antwort lautet „nein“, aber in der Praxis hatte ich noch nie ein Problem mit unseren Websites, die diese Methode verwenden.

    – mrtsherman

    15. September 2014 um 19:36 Uhr


  • Aber wenn die technische Antwort nein ist, ist es unbrauchbar? Ist es nicht?

    – Anders Lindén

    16. September 2014 um 6:14 Uhr

  • Ist es möglich, die Bildattribute vor dem Laden abzurufen?

    – nein nein

    17. März 2019 um 16:57 Uhr

Benutzeravatar von Peter Mortensen
Peter Mortensen

Verwenden jQueryDu machst das:

var imgWidth = $("#imgIDWhatever").width();

  • Und wenn das Bild noch nicht geladen wurde?

    – James Westgate

    2. Juni 2011 um 9:30 Uhr

1442440cookie-checkSo erhalten Sie die Bildgröße (Höhe und Breite) mit JavaScript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy