jQuery: অবস্থান () এবং অফসেট () এর মধ্যে পার্থক্য


178

মধ্যে পার্থক্য কি position()এবং offset()? আমি ক্লিক ইভেন্টে নিম্নলিখিতগুলি করার চেষ্টা করেছি:

console.info($(this).position(), $(this).offset());

এবং তারা ঠিক একইরকম ফিরে আসবে বলে মনে হচ্ছে ... (ক্লিক করা উপাদানটি একটি টেবিলের টেবিলের ঘরে রয়েছে)

উত্তর:


215

তারা একই কিনা প্রসঙ্গের উপর নির্ভর করে।

  • positionঅফসেট পিতামাতার সাথে সম্পর্কিত কোনও {left: x, top: y}বস্তু প্রদান করে

  • offsetনথির সাথে সম্পর্কিত কোনও {left: x, top: y}বস্তু প্রদান করে ।

স্পষ্টতই, ডকুমেন্টটি যদি অফসেট প্যারেন্ট হয়, যা প্রায়শই হয় তবে এগুলি অভিন্ন হবে। অফসেট পিতা বা মাতা "নিকটতম স্থান ধারণকারী উপাদান।" হয়

উদাহরণস্বরূপ, এই দস্তাবেজ সহ:

 <div style="position: absolute; top: 200; left: 200;">
     <div id="sub"></div>
 </div>

তারপরে $('#sub').offset() হবে {left: 200, top: 200}, তবে .position()তা হবে {left: 0, top: 0}।


2
সুতরাং অফসেট পিতামাতাই কি প্রথম পিতামাতার সাথে পরম স্থানে সেট করা আছে? না?
— Svish

1
@ সুইশ: ওহো, আমি কি কোড ইনডেন্টটি সত্যিই মিস করেছি? সম্পাদনার জন্য ধন্যবাদ। হ্যাঁ, অফসেট পিতামাতাই সবচেয়ে কাছের অবস্থানের পিতামাতা। এটি হল এমন একটি উপাদান যা স্থিতিশীল, আপেক্ষিক বা স্থির (তবে স্থিতিশীল নয়) এ সেট রয়েছে। এটি কোনও jQuery বা জাভাস্ক্রিপ্ট জিনিস নয়, CSS তে আপনার একই আচরণ রয়েছে: আপনি যদি sub0: 0 এ পরম পজিশনটি দিতে থাকেন তবে এটি অফসেট প্যারেন্টের উপরের বাম কোণে থাকবে।
— ডেভিড হেডলুন্ড

1
এফওয়াইআই, .position1.12.0 => github.com/jquery/jquery/issues/1708 এ
— retrovertigo

সহজাত দৃষ্টিভঙ্গির বিপরীত নয়? এতো নির্বিচারে! আমার জন্য একটি পরম "পয়েন্ট" একটি অবস্থান। একটি আপেক্ষিক "পয়েন্ট" একটি অফসেট।
— স্যান্ডবুর্গ

28

। অফসেট () পদ্ধতি আমাদের নথির সাথে সম্পর্কিত কোনও উপাদানটির বর্তমান অবস্থান পুনরুদ্ধার করতে দেয় । এটি পজিশনের () অবস্থানের সাথে বিপরীতে করুন , যা অফসেট পিতামাতার তুলনায় বর্তমান অবস্থানটি পুনরুদ্ধার করে । গ্লোবাল ম্যানিপুলেশন (বিশেষত, ড্রাগ-এন্ড ড্রপ বাস্তবায়নের জন্য) বিদ্যমান কোনটির শীর্ষে একটি নতুন উপাদানকে স্থাপন করার সময়, অফসেট () আরও কার্যকর।

সূত্র: http://api.jquery.com/offset/


3
উপরে জিজ্ঞাসা করা হিসাবে, অফসেট পিতা বা মাতা হিসাবে বিবেচনা করা হয়? মনে হয় যে অন্য ডিভের অভ্যন্তরে প্রথম ডিভের উপর কলিং অবস্থান () সর্বদা 0,0 ফিরে আসে না - এমনকি অন্য কোনও স্টাইলিং বা অবস্থান চলমান থাকা অবস্থায়ও।
— কোকোডোকো

2
jquery.offsetParent (): api.jquery.com/offsetparent "নিকটতম পূর্বপুরুষ উপাদানটি অবস্থিত করুন।"
— কার্টিস ইয়ালাপ

-6

উভয় ফাংশন দুটি বৈশিষ্ট্য সহ একটি সরল বস্তু ফেরত দেয়: প্রস্থ এবং উচ্চতা।

অফসেট () ডকুমেন্টের সাথে সম্পর্কিত অবস্থান বোঝায়।

অবস্থান () এর প্যারেন্ট উপাদানগুলির সাথে সম্পর্কিত অবস্থানকে বোঝায়

কিন্তু যখন অবজেক্টের সিএসএস অবস্থান "পরম" হয় তবে উভয় ফাংশন প্রস্থ = 0 এবং উচ্চতা = 0 ফিরে আসবে


6
সংশোধন: অফসেট এবং অবস্থান প্রস্থ এবং উচ্চতা নয়, বাম এবং শীর্ষস্থানীয় বৈশিষ্ট্যযুক্ত একটি বস্তু প্রদান করে।
— জর্জি অলিভারেস 12
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.