Javascript Weg, um alle Elemente mit margin: auto

9

Ich suche nach einer einfachen Möglichkeit, um Elemente auf der Seite zu finden, bei denen der linke Rand und der rechte Rand auf automatisch gesetzt sind.

Ich habe dieses Skript, das mir manchmal hilft:

%Vor%

Während diese Funktion einen Teil der Arbeit erledigt, werden die meisten Fälle von margin: auto , die ich auf Websites gesehen habe, nicht erfasst.

Können Sie mir einen besseren Weg zeigen?

    
GuruYaya 12.11.2014, 10:27
quelle

4 Antworten

2
___ qstnhdr ___ Javascript Weg, um alle Elemente mit margin: auto ___ answer26915724 ___

Ich hasse es, das zu sagen, aber dieser hat weniger Erfolg als meine eigene Version.

    
___ answer26887098 ___

benutze jQuery:
%code%

    
___ qstntxt ___

Ich suche nach einer einfachen Möglichkeit, um Elemente auf der Seite zu finden, bei denen der linke Rand und der rechte Rand auf automatisch gesetzt sind.

Ich habe dieses Skript, das mir manchmal hilft:

%Vor%

Während diese Funktion einen Teil der Arbeit erledigt, werden die meisten Fälle von %code% , die ich auf Websites gesehen habe, nicht erfasst.

Können Sie mir einen besseren Weg zeigen?

    
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123css ___ CSS (Cascading Style Sheets) ist eine Darstellungsstilsprache, die das Aussehen und die Formatierung von HTML (Hyper Text Markup Language), XML-Dokumenten (Extensible Markup Language) und SVG-Elementen einschließlich (aber nicht beschränkt auf) Farben beschreibt. Layout, Schriftarten und Animationen. ___ answer26916521 ___

Dieses Problem ist nicht trivial . Selbst in den Tagen von %code% ist es schwierig, eine Crossbrowser-zuverlässige Antwort für marginLeft / Right zu erhalten, wenn die Margen auf %code% gesetzt sind. Das ist also sicher keine vollständige Antwort, sondern wird versuchen, einen zu finden.

%code% und %code% sind auch %code% , wenn die Rand-Kurzschrift verwendet wird:

%Vor%

Sie müssen diese Notationen auch finden, wenn Sie in den Stylesheets suchen. Fügen Sie diese Funktion kurz vor %code% in Ihren Code ein:

%Vor%

Dann ändere dein inneres %code% zu:

%Vor%

Jetzt bekommst du auch die Regeln wo %code% benutzt wird. Aber einige Probleme bleiben bei deinem Code:

  • Gleiche Elemente können mehrfach aufgeführt werden, wenn sie mehr als einer Regel entsprechen
  • Es ist nicht sicher, dass alle gelisteten Elemente wirklich mit marginLeft / Right = auto gerendert werden. Vielleicht wird das CSS durch eine andere spezifischere Regel überschrieben.
  • Als dfsq in seinem Kommentar erwähnt, kann es Inline-Stile geben, die Sie nicht finden können.
___ tag123margin ___ Die CSS-Randeigenschaften definieren den Raum um Elemente herum. ___ answer26905495 ​​___

Wenn Sie in Ordnung sind, JQuery zu verwenden

Wie Martin Ernst für Yonatans Antwort gesagt hat: "Dies wird nur Elemente mit marginLeft / Right=" auto "auswählen."

Außerdem müssen, wie in den Kommentaren beschrieben, Elemente ausgeblendet werden, um mit FF und Safari zu arbeiten.

Dies sollte mit JQuery funktionieren:

%Vor%

Tipp : Wenn Sie aus irgendeinem Grund keine externen Skripts laden müssen, kopieren Sie einfach den Inhalt des minimierten jquery-Skripts am Anfang.

>     
___
Nicolas 13.11.2014, 09:34
quelle
0

benutze jQuery:
$('*').filter(function(i, d){return d.style.marginLeft == "auto" && d.style.marginRight == 'auto';});

    
yonatan 12.11.2014 12:32
quelle
0

Ich hasse es, das zu sagen, aber dieser hat weniger Erfolg als meine eigene Version.

    
GuruYaya 13.11.2014 18:17
quelle
0

Dieses Problem ist nicht trivial . Selbst in den Tagen von window.getComputedStyle() ist es schwierig, eine Crossbrowser-zuverlässige Antwort für marginLeft / Right zu erhalten, wenn die Margen auf auto gesetzt sind. Das ist also sicher keine vollständige Antwort, sondern wird versuchen, einen zu finden.

margin-left und margin-right sind auch auto , wenn die Rand-Kurzschrift verwendet wird:

%Vor%

Sie müssen diese Notationen auch finden, wenn Sie in den Stylesheets suchen. Fügen Sie diese Funktion kurz vor var elementsList=[]; in Ihren Code ein:

%Vor%

Dann ändere dein inneres if-condition zu:

%Vor%

Jetzt bekommst du auch die Regeln wo margin benutzt wird. Aber einige Probleme bleiben bei deinem Code:

  • Gleiche Elemente können mehrfach aufgeführt werden, wenn sie mehr als einer Regel entsprechen
  • Es ist nicht sicher, dass alle gelisteten Elemente wirklich mit marginLeft / Right = auto gerendert werden. Vielleicht wird das CSS durch eine andere spezifischere Regel überschrieben.
  • Als dfsq in seinem Kommentar erwähnt, kann es Inline-Stile geben, die Sie nicht finden können.
Martin Ernst 13.11.2014 19:08
quelle

Tags und Links