javascript - Padding- eller margverdi i piksler som heltall ved bruk av jQuery
jQuery har height() og width() funksjoner som returnerer høyden eller bredden i piksler som heltall...
Hvordan kan jeg få en padding- eller marginverdi for et element i piksler og som heltall ved å bruke jQuery?
Min første idé var å gjøre følgende:
var padding = parseInt(jQuery("myId").css("padding-top"));
Men hvis polstring er gitt i em for eksempel, hvordan kan jeg få verdien i piksler?
Når jeg kikket på JSizes-pluginen foreslått av Chris Pebble, innså jeg at min egen versjon var den riktige :). jQuery returnerer alltid verdien i piksler, så det å bare parse den til et heltall var løsningen.
Takk til Chris Pebble og Ian Robinson
Svar #1
Du bør kunne bruke CSS (http://docs.jquery.com/CSS/css#name). Du må kanskje være mer spesifikk, for eksempel «padding-left» eller «margin-top».
Eksempel :
CSS
a, a:link, a:hover, a:visited, a:active {color:black;margin-top:10px;text-decoration: none;}
JS
$("a").css("margin-top");
Resultatet er 10px.
Hvis du vil få heltallsverdien, kan du gjøre følgende:
parseInt($("a").css("margin-top"))
Svar #2
Sammenlign ytre og indre høyder/bredder for å få total margen og polstring:
var that = $("#myId");
alert(that.outerHeight(true) - that.innerHeight());
Svar #3
Funksjonen parseInt har en "radix"-parameter som definerer tallsystemet som brukes ved konverteringen, så å kalle parseInt(jQuery('#something').css('margin-left'), 10); returnerer venstremarginen som et heltall.
Dette er det JSizes bruker.
Svar #4
VÆR SÅ SNILL ikke gå og last inn et annet bibliotek bare for å gjøre noe som allerede finnes nativt!
jQuerys .css() konverterer % og em til deres piksel-ekvivalent fra starten av, og parseInt() vil fjerne 'px' fra slutten av den returnerte strengen og konvertere den til et heltall:
http://jsfiddle.net/BXnXJ/
$(document).ready(function () {
var $h1 = $('h1');
console.log($h1);
$h1.after($('<div>Padding-top: ' + parseInt($h1.css('padding-top')) + '</div>'));
$h1.after($('<div>Margin-top: ' + parseInt($h1.css('margin-top')) + '</div>'));
});
Svar #5
Her er hvordan du kan få de omkringliggende dimensjonene:
var elem = $('#myId');
var marginTopBottom = elem.outerHeight(true) - elem.outerHeight();
var marginLeftRight = elem.outerWidth(true) - elem.outerWidth();
var borderTopBottom = elem.outerHeight() - elem.innerHeight();
var borderLeftRight = elem.outerWidth() - elem.innerWidth();
var paddingTopBottom = elem.innerHeight() - elem.height();
var paddingLeftRight = elem.innerWidth() - elem.width();
Vær oppmerksom på at hver variabel, paddingTopBottom for eksempel, inneholder summen av marginene på begge sider av elementet; det vil si, paddingTopBottom == paddingTop + paddingBottom. Jeg lurer på om det finnes en måte å få dem hver for seg. Selvfølgelig, hvis de er like, kan du dele på 2 :)
Svar #6
Du kan bare hente dem på samme måte som med hvilken som helst CSS-egenskap:
alert($("#mybox").css("padding-right"));
alert($("#mybox").css("margin-bottom"));
Du kan sette dem med et annet attributt i css-metoden:
$("#mybox").css("padding-right", "20px");
REDIGER: Hvis du bare trenger pixelverdien, bruk parseInt(val, 10):
parseInt($("#mybox").css("padding-right", "20px"), 10);