jQuery memiliki fungsi height () en width () yang mengembalikan tinggi atau lebar piksel sebagai bilangan bulat ...
Bagaimana saya bisa mendapatkan nilai padding atau margin elemen dalam piksel dan sebagai integer menggunakan jQuery?
Ide pertama saya adalah melakukan hal berikut:
var padding = parseInt(jQuery("myId").css("padding-top"));
Tetapi jika padding diberikan dalam ems misalnya, bagaimana saya bisa mendapatkan nilai dalam pixel?
Melihat ke plugin JSizes yang disarankan oleh Chris Pebble saya menyadari bahwa versi saya sendiri adalah yang benar :). jQuery selalu mengembalikan nilai dalam pixel, jadi hanya menguraikannya ke integer adalah solusinya.
Terima kasih kepada Chris Pebble dan Ian Robinson
javascript
jquery
css
Malik Amurlayev
sumber
sumber
parseInt
. Mengutip MDN: " radix Int antara 2 dan 36 yang mewakili radix (dasar dalam sistem angka matematika) dari string yang disebutkan di atas. Tentukan 10 untuk sistem angka desimal. Selalu tentukan parameter ini untuk menghilangkan kebingungan pembaca dan untuk menjamin perilaku yang dapat diprediksi Implementasi yang berbeda menghasilkan hasil yang berbeda ketika radix tidak ditentukan, biasanya nilai defaultnya menjadi 10. " Lihat: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Jawaban:
Anda harus dapat menggunakan CSS ( http://docs.jquery.com/CSS/css#name ). Anda mungkin harus lebih spesifik seperti "padding-left" atau "margin-top".
Contoh:
CSS
JS
Hasilnya adalah 10px.
Jika Anda ingin mendapatkan nilai integer, Anda dapat melakukan hal berikut:
sumber
JSizes
plugin dari jawaban lain (yang akhirnya saya gunakan) mengembalikan bilangan bulat ketika nilai kembali dilewatkanParseInt(...)
, hanya FYI.parseInt($('a').css('margin-top').replace('px', ''))
.css()
masih akan mengembalikan nilai dengan "px" di akhir?Bandingkan tinggi / lebar luar dan dalam untuk mendapatkan total margin dan bantalan:
sumber
that.outerHeight(true) - that.outerHeight()
akan memberikan total margin vertikal, karena outerHeight () akan mencakup paddings dan borders tetapi mengecualikan margin. Lihat api.jquery.com/outerWidth/ .Fungsi parseInt memiliki parameter "radix" yang mendefinisikan sistem angka yang digunakan pada konversi, sehingga memanggil
parseInt(jQuery('#something').css('margin-left'), 10);
mengembalikan margin kiri sebagai Integer.Inilah yang digunakan JSize.
sumber
parseInt('auto', 10);
(auto
validmargin-left
)TOLONG jangan pergi memuat perpustakaan lain hanya untuk melakukan sesuatu yang sudah tersedia secara native!
jQuery
.css()
mengonversi %'s dan em's ke piksel yang setara dengan awalnya, danparseInt()
akan menghapus'px'
dari ujung string yang dikembalikan dan mengubahnya menjadi integer:http://jsfiddle.net/BXnXJ/
sumber
Inilah cara Anda mendapatkan dimensi di sekitarnya:
Perhatikan bahwa setiap variabel,
paddingTopBottom
misalnya, berisi jumlah margin pada kedua sisi elemen; yaitupaddingTopBottom == paddingTop + paddingBottom
,. Saya bertanya-tanya apakah ada cara untuk mendapatkannya secara terpisah. Tentu saja, jika mereka sama, Anda dapat membagi dengan 2 :)sumber
IE 7
. Lihat: stackoverflow.com/questions/590602/...Fungsi sederhana ini akan melakukannya:
Pemakaian:
sumber
auto
,inherit
dan%
nilaiNaN
itu tergantung pada browser. Sejauh yang saya tahu jQuery tidak menormalkan.css()
tidak seperti.width()
&.height()
Parse int
mengembalikan 0 untuk 0px
sumber
Anda bisa mengambilnya dengan atribut CSS apa pun :
Anda dapat mengaturnya dengan atribut kedua dalam metode css:
EDIT: Jika Anda hanya perlu nilai piksel, gunakan
parseInt(val, 10)
:sumber
ok hanya untuk menjawab pertanyaan awal:
Anda bisa mendapatkan lapisan sebagai integer yang dapat digunakan seperti ini:
Jika Anda telah menetapkan pengukuran lain seperti px, ganti saja "ems" dengan "px". parseInt mengartikan stringpart sebagai nilai yang salah sehingga penting untuk menggantinya dengan ... tidak ada.
sumber
Anda juga dapat memperluas kerangka jquery sendiri dengan sesuatu seperti:
Dengan demikian menambahkan fungsi pada objek jquery Anda yang disebut margin (), yang mengembalikan koleksi seperti fungsi offset.
fx.
sumber
Jangan gunakan string.replace ("px", ""));
Gunakan parseInt atau parseFloat!
sumber
Saya mungkin menggunakan plugin jithery github.com/bramstein/jsizes untuk paddings dan margin dengan cara yang sangat nyaman, Terima kasih ...
sumber
Tanpa malu-malu diadopsi dari Quickredfox .
memperbarui
Diubah menjadi
parseInt(val, 10)
karena lebih cepat dariparseFloat
.http://jsperf.com/number-vs-plus-vs-toint-vs-tofloat/20
sumber
Bukan untuk necro tapi saya membuat ini yang dapat menentukan piksel berdasarkan berbagai nilai:
Dengan cara ini, kami memperhitungkan ukuran, dan otomatis / mewarisi.
sumber
parseInt()
itu salah, lebar atau tinggi bisa menjadi titik mengambang.