আমি কীভাবে jQuery ব্যবহার করে কোনও উপাদানের পরম অবস্থান জানতে পারি?


398

JQuery ব্যবহার করে কোনও এলিমেন্টের নিখুঁত অবস্থান, যেমন উইন্ডোটি শুরুর তুলনায় অনুসন্ধান করার কোনও উপায় আছে?

উত্তর:


650

.offset() কোনও সরল অবজেক্ট হিসাবে কোনও উপাদানের অফসেট অবস্থান প্রদান করবে, যেমন:

var position = $(element).offset(); // position = { left: 42, top: 567 }

আপনি একই স্থানে অন্যান্য উপাদানগুলি অবস্থান রাখতে এই রিটার্ন মানটি ব্যবহার করতে পারেন:

$(anotherElement).css(position)

90
আমি সর্বদা এটি ভুলে যাই, এবং আমি যখন গুগল করি তখন আপনার পোস্টটি আবার খুঁজে পাই: পি
আরেন

16
সীমানা ইত্যাদির পার্থক্যের কারণে এটি সর্বদা নিখুঁত অবস্থানে ফিরে আসে বলে মনে হয় না
টম

8
আমি ক্রোম ব্যবহার করছি এবং offset()যথাযথ শীর্ষ স্থানাঙ্ক ফেরত দেয় না। এটি পরিবর্তে ডকুমেন্টের উপাদানটির শীর্ষ স্থানাঙ্কের চেয়ে প্রায় 300 পিক্সেল বেশি দেয়। কেন ??
SoLoGHoST

1
ক্রোম, এফএফ এবং আইই বিভিন্ন ফলাফল দিচ্ছে :(
রিজওয়ান মমতাজ

3
@ আমি যখনই সর্বদা এটি ভুলে যাই এবং আপনার মন্তব্যটি প্রতিবার মজাদার বলে খুঁজে পাই :)
অ্যালেক্স

197

মনে রাখবেন যে $(element).offset() নথির সাথে সম্পর্কিত কোনও উপাদানের অবস্থান আপনাকে বলে । এটি বেশিরভাগ পরিস্থিতিতে দুর্দান্ত কাজ করে তবে আপনার ক্ষেত্রে position:fixedঅপ্রত্যাশিত ফলাফল পেতে পারে।

যদি আপনার দস্তাবেজটি ভিউপোর্টের চেয়ে দীর্ঘ হয় এবং আপনি নথির নীচের দিকে উল্লম্বভাবে স্ক্রোল করে থাকেন তবে আপনার স্ক্রলকৃত পরিমাণের দ্বারা আপনার position:fixedউপাদানটির offset()মান প্রত্যাশিত মানের চেয়ে বেশি হবে

আপনি যদি একটি মান খুঁজছেন অবস্থানের স্থির নথির চেয়ে ভিউপোর্ট (উইন্ডো) : স্থির উপাদান, আপনি স্থির উপাদানটির scrollTop()মান থেকে নথির মান বিয়োগ করতে পারেন offset().top। উদাহরণ:$("#el").offset().top - $(document).scrollTop()

যদি position:fixedউপাদানটির অফসেট পিতামাতার নথি হয় তবে আপনি তার parseInt($.css('top'))পরিবর্তে পড়তে চান ।


8
আমি ঠিক এই জন্য খুঁজছিলাম! আমার মতো $(document).scrollTop()
নুবুকের

3
অসাধারণ! এটি শীর্ষ উত্তর হতে হবে!
শিবংশু গোয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.