অফসেটহাইট, ক্লায়েন্টহাইট, স্ক্রোলহাইট কী?


235

ব্যাখ্যা মধ্যে পার্থক্য কি চিন্তা offsetHeight, clientHeightএবং scrollHeightঅথবা offsetWidth, clientWidthএবং scrollWidth?

ক্লায়েন্ট পক্ষের কাজ করার আগে একজনকে অবশ্যই এই পার্থক্যটি জানতে হবে। অন্যথায় তাদের জীবনের অর্ধেকটি ইউআই স্থির করতে ব্যয় করবে।

ভাঁজ বা নীচের ইনলাইন:

function whatis(propType) {
  var mainDiv = document.getElementById("MainDIV");
  if (window.sampleDiv == null) {
    var div = document.createElement("div");
    window.sampleDiv = div;
  }
  div = window.sampleDiv;
  var propTypeWidth = propType.toLowerCase() + "Width";
  var propTypeHeight = propType + "Height";

  var computedStyle = window.getComputedStyle(mainDiv, null);
  var borderLeftWidth = computedStyle.getPropertyValue("border-left-width");
  var borderTopWidth = computedStyle.getPropertyValue("border-top-width");

  div.style.position = "absolute";
  div.style.left = mainDiv.offsetLeft + Math.round(parseFloat((propType == "client") ? borderLeftWidth : 0)) + "px";
  div.style.top = mainDiv.offsetTop + Math.round(parseFloat((propType == "client") ? borderTopWidth : 0)) + "px";
  div.style.height = mainDiv[propTypeHeight] + "px";
  div.style.lineHeight = mainDiv[propTypeHeight] + "px";
  div.style.width = mainDiv[propTypeWidth] + "px";
  div.style.textAlign = "center";
  div.innerHTML = propTypeWidth + " X " + propTypeHeight + "( " +
    mainDiv[propTypeWidth] + " x " + mainDiv[propTypeHeight] + " )";



  div.style.background = "rgba(0,0,255,0.5)";
  document.body.appendChild(div);

}
document.getElementById("offset").onclick = function() {
  whatis('offset');
}
document.getElementById("client").onclick = function() {
  whatis('client');
}
document.getElementById("scroll").onclick = function() {
  whatis('scroll');
}
#MainDIV {
  border: 5px solid red;
}
<button id="offset">offsetHeight & offsetWidth</button>
<button id="client">clientHeight & clientWidth</button>
<button id="scroll">scrollHeight & scrollWidth</button>

<div id="MainDIV" style="margin:auto; height:200px; width:400px; overflow:auto;">
  <div style="height:400px; width:500px; overflow:hidden;">

  </div>
</div>


6
এই প্রশ্নটি অফ-টপিক হিসাবে উপস্থিত বলে মনে হচ্ছে কারণ এটি কেবল একটি টিপ সরবরাহ করে। একমাত্র প্রশ্নটি 'প্রশ্ন' শিরোনামে।
enhzflep

উত্তর:


543

পার্থক্যটি জানতে আপনাকে বাক্সের মডেলটি বুঝতে হবে তবে মূলত:

ক্লায়েন্টহাইট :

প্যাডিং কিন্তু সহ পিক্সেল, একটি উপাদান ভেতরের উচ্চতা ফেরৎ না অনুভূমিক স্ক্রলবার উচ্চতা , সীমান্ত , অথবা মার্জিন

অফসেটহাইট :

একটি পরিমাপ যা অন্তর্ভুক্ত উপাদান সীমানা উপাদান উল্লম্ব প্যাডিং উপাদান অনুভূমিক স্ক্রলবার (যদি থাকে, যদি অনুষ্ঠিত) এবং উপাদান সিএসএস উচ্চতা।

স্ক্রোলহাইট :

একটি উপাদান বিষয়বস্তুর উচ্চতা একটি পরিমাপ সহ বিষয়বস্তু না দৃশ্যমান পর্দায় ওভারফ্লো কারণে


আমি এটি আরও সহজ করব:

বিবেচনা:

<element>                                     
    <!-- *content*: child nodes: -->        | content
    A child node as text node               | of
    <div id="another_child_node"></div>     | the
    ... and I am the 4th child node         | element
</element>                                    

স্ক্রোলহাইট : উপাদানটির উচ্চতা থাকা সত্ত্বেও সমস্ত সামগ্রীর প্যাডিংয়ের ENTIRE content & padding (visible or not)
উচ্চতা।

ক্লায়েন্টহাইট : VISIBLE content & padding
কেবল দৃশ্যমান উচ্চতা: উপাদানগুলির স্পষ্টভাবে সংজ্ঞায়িত উচ্চতা দ্বারা সামগ্রী অংশ সীমাবদ্ধ।

অফসেটহাইট : VISIBLE content & padding + border + scrollbar
নথিতে উপাদানটির দ্বারা উচ্চতা দখল করা হয়েছে।

scrollHeight ক্লায়েন্টহাইট এবং অফসেটহাইট


এবং যদি আপনি কেবল দৃশ্যমান উচ্চতা চান
মুহাম্মদ উমার

2
clientHeightপ্রোফাইল উচ্চতার
আন্দ্রে Figueiredo

9
এই কারণেই আমি এসওকে ভালবাসি, এটি এত স্পষ্ট করার প্রয়াসের জন্য ধন্যবাদ!
হারিক

2
দ্রষ্টব্য: উপাদানটির অবস্থান: স্থির থাকলে অফসেটহাইট নালায় ফিরে আসতে পারে। এসভিজি অফসেটহাইট ক্রোমে অবচয় করা হচ্ছে। উপাদানটি প্রদর্শিত হলে অফসেটহাইটটি নালাগুলি ফিরে আসবে: কিছুই নেই, বা প্রদর্শন সহ কোনও পূর্বপুরুষ আছে: কিছুই নেই
ড্রেনাই

3
আমার scrollHeightএবং clientHeightউভয়ই একই বিষয়বস্তুতে স্ক্রিন বেশি সামগ্রী থাকা সত্ত্বেও একসাথে আসছে। কেন?
ফাঁকা স্থান

5

* অফসেটহাইট সীমানা, প্যাডিং এবং উপাদানটির অনুভূমিক স্ক্রোলবার সহ উপাদানটির সিএসএস উচ্চতার পিক্সেলের একটি পরিমাপ

* ক্লায়েন্টহাইট সম্পত্তি প্যাডেল সহ পিক্সেলগুলিতে কোনও উপাদানের দৃশ্যমান উচ্চতা প্রদান করে তবে সীমানা, স্ক্রোলবার বা মার্জিন নয়।

* স্ক্রোলহাইট মানটি উল্লম্ব স্ক্রোলবার ব্যবহার না করে ভিউপোর্টের সমস্ত সামগ্রী ফিট করার জন্য উপাদানটির ন্যূনতম উচ্চতার সমান । উচ্চতা ক্লায়েন্টহাইটের মতো একইভাবে পরিমাপ করা হয়: এতে উপাদানটির প্যাডিং অন্তর্ভুক্ত রয়েছে তবে এর সীমানা, মার্জিন বা অনুভূমিক স্ক্রোলবার নয়।

উচ্চতার পরিবর্তে প্রস্থ সহ এই সকলের ক্ষেত্রে একই বিষয়।


2

তিনটির জন্য আমার বর্ণনা:

  • অফসেটহাইট : পিতামাতার "আপেক্ষিক অবস্থান" স্থানটি উপাদান দ্বারা নেওয়া হয়। (যেমন। এটি উপাদানটির position: absoluteবংশধরদের উপেক্ষা করে )
  • ক্লায়েন্টহাইট : এটি তার নিজস্ব সীমানা, মার্জিন এবং এর অনুভূমিক স্ক্রোল-বারের উচ্চতা (যদি এটির একটি থাকে) বাদ দেয় তবে অফসেট-উচ্চতা হিসাবে একই।
  • স্ক্রোলহাইট : position: absoluteস্ক্রোল ছাড়াই উপাদানটির সমস্ত সামগ্রী / বংশধরদের (যার সাথে) সমস্ত দেখতে কত জায়গার প্রয়োজন ।

তারপরেও রয়েছে:


এই ক্ষেত্রে সিএসএস রূপান্তর সম্পর্কে নোটটি বেশ গুরুত্বপূর্ণ।
জান ব্রাডে

0

অফসেট মানে "পরিমাণ বা দূরত্ব যার মাধ্যমে কোনও কিছু লাইন থেকে দূরে থাকে"। মার্জিন বা বর্ডার এমন একটি জিনিস যা কোনও HTML উপাদানটির প্রকৃত উচ্চতা বা প্রস্থকে "লাইনের বাইরে" করে দেয়। এটি আপনাকে মনে রাখতে সাহায্য করবে:

  • অফসেটহাইট সীমানা, প্যাডিং এবং উপাদানটির অনুভূমিক স্ক্রোলবার সহ উপাদানটির সিএসএস উচ্চতার পিক্সেলের একটি পরিমাপ।

অন্যদিকে, ক্লায়েন্টহাইট এমন এক জিনিস যা আপনি অফসেটহাইটের বিপরীতে বলতে পারেন। এটি সীমানা বা মার্জিন অন্তর্ভুক্ত করে না। এটি প্যাডিং অন্তর্ভুক্ত করে কারণ এটি এমন কিছু যা এইচটিএমএল ধারকটির অভ্যন্তরে থাকে তাই এটি মার্জিন বা সীমানার মতো অতিরিক্ত পরিমাপ হিসাবে গণনা করে না। সুতরাং:

  • ক্লায়েন্টহাইট সম্পত্তি প্যাডেল সহ পিক্সেলগুলিতে কোনও উপাদানের দৃশ্যমান উচ্চতা প্রদান করে তবে সীমানা, স্ক্রোলবার বা মার্জিন নয়।

স্ক্রোলহাইট সমস্ত স্ক্রোলযোগ্য অঞ্চল, সুতরাং আপনার স্ক্রোলটি কখনই আপনার মার্জিন বা সীমান্তের উপর দিয়ে চলবে না, সেজন্য স্ক্রোলহাইটটি মার্জিন বা সীমানা অন্তর্ভুক্ত করে না তবে হ্যাঁ প্যাডিং করে। তাই:

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