2010-09-24 10 views
53

bekommen Wie analysieren wir die Rahmenbreite vonWie Randbreite in jQuery/Javascript

style="border: solid 1px black;"

in jQuery/Javascript?

$elem.css('border-width')

tut es nicht.

Hinweis Ich muss die Breite von der CSS analysieren, wie das Element display:none sein kann

Dank

bearbeiten Ich bin eigentlich nicht ein Inline-Stil, Ich schrieb es, dass Weg zur Einfachheit, da ich nicht wusste, dass es irgendeinen Verhaltensunterschied gab. Es scheint zwar für Inline-Stile zu funktionieren, kann aber trotzdem keinen Wert aus einer angewendeten CSS-Klasse erhalten.

+3

In In der Vergangenheit habe ich Probleme wie diese vermieden, indem ich Sichtbarkeit verwendet habe: Versteckt oder eine absolute Position weit außerhalb des Bildschirms gesetzt (dh 'links: -10000px'). Wenn Sie das tun könnten, würde eine einfache '$ (elem) .outerWidth (false) - $ (elem) .innerWidth()' die Rahmenbreite erhalten. – MikeWyatt

Antwort

87

Sie können nur parseInt(); verwenden, um die Rahmenbreite Npx-N zu analysieren:

var width = $elem.css('borderWidth'); // 150px 
var parsed = parseInt(width);   // 150 

Ich hatte eine Google um und es scheint, um die Breite einer Grenze zu bekommen Sie muss eine explizite Seite der Grenze zur Verfügung stellen:

var borderWidth = $elem.css("border-left-width"); 

Diese i Es ist möglich, dass jeder Rahmen eine andere Größe, einen anderen Stil und eine andere Farbe hat. Leider scheint es nicht einfacher zu sein.

+23

+1! Hinweis: Schließen Sie immer die Radix: 'parseInt (width, 10)' ein. Der Standardwert ist hexadezimal. 'parseInt (" 08 ") === 0' und' parseInt ("08", 10) === 8' – jwueller

+1

Sie können diese Ableitung von ILMVs jsFiddle-Beispiel auch verwenden, um zu bestätigen, dass die durch Kurzschreibeigenschaften festgelegten Werte immer noch korrekt zurückgegeben werden: http://jsfiddle.net/s7YAN/1/ – ssokolow

+0

+1, ich war mir nicht sicher, ob seine Frage Probleme hatte, die Eigenschaft zu erhalten oder zu analysieren. –

9

jQuery lässt die Verwendung von - beim Verweisen auf eine CSS-Eigenschaft nicht zu, entfernen Sie also den Hyper und schreiben Sie den folgenden Buchstaben in Großbuchstaben.

$elem.css('borderWidth'); 

Coded in jsFiddle to demonstrate.

+0

nein, immer noch kann nicht funktionieren, wenn der Stil nicht inline ist. siehe http://jsfiddle.net/s7YAN/2/ – fearofawhackplanet

+4

@Ben Everard - jQuery erlaubt Hyphen - es ist nur kurz-Hand-CSS, das ist nicht erlaubt - so Links-Rand-Breite ist ok, aber Grenze-Breite ist nicht. – chris

+1

Ihre Aussage ist nicht wahr. Fiddle in 'border-width' geändert und funktioniert immer noch: http://jsfiddle.net/s7YAN/500/ –

6

Generic Antwort abgeschlossen, wenn er Grenze links suchen und schwer fassbar Kommentar über Radix enthalten:

<div style="border-style:solid;border-left-width:15px;"></div> 

in Skript:

var width =parseInt($('div').css('borderLeftWidth'),10); 
alert(width); 
4
var bordersOnBothSides = $("#measureMe").outerWidth() - $("#measureMe").innerWidth()); 
0

gibt es die Rahmenbreite.
Beispiel HTML-Elemente:

<div> 
    <style> .example {border: 10px solid lightblue} </style> 
    <div class="example" style="width: 10px; height: 10px;"></div> 
</div> 


Einfacher JQuery Weg, um die HTML oben mit:

> $(".example").css("border-width"); 
< "10px" 


Auch wenn die Suche im Internet, fand ich eine Lösung
, die ohne Verwendung des JQuery funktioniert Javascript-Bibliothek
(Ich denke, Jquery verwendet wahrscheinlich eine Lösung wie folgt):
http://javascript.info/tutorial/styles-and-classes-getcomputedstyle
(Die JavaScript-Tutorial, © Ilya Kantor)

Etwas länger nicht Jquery Weise mit dem HTML-oben:

> var element = document.getElementById("test"); 
< undefined 
> var computed_style = getComputedStyle(element); 
< CSSStyleDeclaration {0: "animation-delay", 1: "animation-direction", 2: "animation-duration", 3: "animation-fill-mode", 4: "animation-iteration-count", 5: "animation-name", 6: "animation-play-state", 7: "animation-timing-function", 8: "background-attachment", 9: "background-blend-mode", 10: "background-clip", 11: "background-color", 12: "background-image", 13: "background-origin", 14: "background-position", 15: "background-repeat", 16: "background-size", 17: "border-bottom-color", 18: "border-bottom-left-radius", 19: "border-bottom-right-radius", 20: "border-bottom-style", 21: "border-bottom-width", 22: "border-collapse", 23: "border-image-outset", 24: "border-image-repeat", 25: "border-image-slice", 26: "border-image-source", 27: "border-image-width", 28: "border-left-color", 29: "border-left-style", 30: "border-left-width", 31: "border-right-color", 32: "border-right-style", 33: "border-right-width", 34: "border-top-color", 35: "border-top-left-radius", 36: "border-top-right-radius", 37: "border-top-style", 38: "border-top-width", 39: "bottom", 40: "box-shadow", 41: "box-sizing", 42: "caption-side", 43: "clear", 44: "clip", 45: "color", 46: "cursor", 47: "direction", 48: "display", 49: "empty-cells", 50: "float", 51: "font-family", 52: "font-kerning", 53: "font-size", 54: "font-stretch", 55: "font-style", 56: "font-variant", 57: "font-variant-ligatures", 58: "font-weight", 59: "height", 60: "image-rendering", 61: "isolation", 62: "left", 63: "letter-spacing", 64: "line-height", 65: "list-style-image", 66: "list-style-position", 67: "list-style-type", 68: "margin-bottom", 69: "margin-left", 70: "margin-right", 71: "margin-top", 72: "max-height", 73: "max-width", 74: "min-height", 75: "min-width", 76: "mix-blend-mode", 77: "object-fit", 78: "object-position", 79: "opacity", 80: "orphans", 81: "outline-color", 82: "outline-offset", 83: "outline-style", 84: "outline-width", 85: "overflow-wrap", 86: "overflow-x", 87: "overflow-y", 88: "padding-bottom", 89: "padding-left", 90: "padding-right", 91: "padding-top", 92: "page-break-after", 93: "page-break-before", 94: "page-break-inside", 95: "pointer-events", 96: "position", 97: "resize", 98: "right", 99: "speak"…} 
> computed_style.borderWidth; 
< "10px" 

Fertig! Ich hoffe, dass jeder, der dies liest, dies versteht und vielleicht nützlich findet.
Siehe auch this jsFiddle (https://jsfiddle.net/user_e/2L8yLc7a/), die meine Antwort zeigt.

+0

Ich könnte ein jsFiddle machen, um meine Antwort besser und visueller zu demonstrieren. – Edward

+0

jsFiddle demonstriert meine Antwort: https://jsfiddle.net/user_e/2L8yLc7a/ – Edward

1

Wenn u für Element gleich Grenze widh haben oder links u müssen, oberen Rand Breite, plain js:

elem.clientLeft; //get left border of element 
elem.clientTop; //get top border of element 

An der rechten, unteren Rand Verwendung jquery + CSS zu erhalten:

parseInt($(elem).css('borderLeftWidth'),10); // 10 use to get result in dec, not hex number system 
Verwandte Themen