দেহের উচ্চতা 100% উল্লম্ব স্ক্রোলবার প্রদর্শন করছে


86

কৌতূহলের বাইরে, নীচের উদাহরণটি বিবেচনা করে, কেন # কনটেনার ডিভের উপর মার্জিন থাকা ব্রাউজারে উল্লম্ব স্ক্রোলবার প্রদর্শিত হতে পারে? ধারকটি দৈহিক উচ্চতার চেয়ে উচ্চতায় অনেক ছোট যা সেটাকে 100% সেট করা হয়েছে।

আমি # কন্টেইনার ব্যতীত সমস্ত উপাদানগুলির জন্য প্যাডিং এবং মার্জিন 0 তে সেট করে রেখেছি। নোট করুন যে আমি ইচ্ছাকৃতভাবে # কন্টেইনার ডিভের উপর নিখুঁত অবস্থান বাদ দিয়েছি। এই ক্ষেত্রে ব্রাউজার কীভাবে শরীরের উচ্চতা গণনা করছে এবং মার্জিন কীভাবে এটি প্রভাব ফেলছে?

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
* { padding:0; margin:0;}
html, body { height:100%; }
#container
{
  padding:10px;
  margin:50px;
  border:1px solid black;
  width: 200px;
  height: 100px;
}
</style>
</head>
<body>
  <div id='container'>
  </div>
</body>
</html>

জেএসফিডেলের উপরও উদাহরণ


উত্তর:


65

আপনি যদি এর ব্যাকগ্রাউন্ডগুলি আঁকেন htmlএবং body(প্রত্যেককে তার নিজস্ব রঙ দেওয়া) , আপনি দ্রুত লক্ষ্য করবেন যে bodyএটি পাশাপাশি সরিয়ে চলেছে #container, এবং এটি #containerনিজেই একেবারে শীর্ষ থেকে অফসেট bodyনয়। এটি মার্জিন ধসের একটি পার্শ্ব প্রতিক্রিয়া , যা আমি এখানে বিস্তারিত কভার করছি (যদিও উত্তরটি কিছুটা আলাদা সেটআপের বর্ণনা দেয়)।

আপনি bodyএই উচ্চতাটি 100% ঘোষণা করেছেন যেহেতু এটিই এই আচরণের ফলে স্ক্রোলবারটি প্রদর্শিত হচ্ছে html। মনে রাখবেন যে আসল উচ্চতাটি bodyপ্রভাবিত হয় না, কারণ মার্জিনগুলি কখনই উচ্চতার গণনায় অন্তর্ভুক্ত হয় না।


এর অর্থ কী কোনও পৃষ্ঠার উপাদানগুলির উচ্চতাগুলি উইন্ডো দিয়ে শুরু করে গণনা করা হয়, তারপরে শরীর, তারপরে উপাদানগুলি শরীরের ভিতরে / বা উপরে? সমস্ত শতাংশ কি px বা pt বা em মানগুলিতে রূপান্তরিত হয়?
টিএমবি

4
@ টিএমবি: একটি 100% উচ্চতা htmlএটিকে ভিউপোর্টের 100% করে তোলে (একটি ব্রাউজারের দেখার অঞ্চল), এবং 100% উচ্চতা bodyএটিকে তার পিতামাতার 100% করে তোলে যা এটি html। যে শতাংশ শতাংশ অনুসরণ করে তা হ'ল উপাদানটির পূর্বপুরুষের always আপনি যদি 100% উচ্চতা সেট না করেন htmlবা bodyতারপরে তারা অন্য কোনও ব্লক উপাদানের মতো আচরণ করে। বিশদ জানতে w3.org/TR/CSS21/syndata.html#percentage-units দেখুন । % s এবং ems সবশেষে রেন্ডারিংয়ের সময় সমস্ত কিছুকে কিছু পরম মানতে রূপান্তর করতে হবে, যাতে কোনও ব্রাউজার পর্দায় জিনিসগুলি পরিমাপ করতে এবং রেন্ডার করতে সঠিকভাবে কত বড় বা ছোট তা জানতে পারে।
BoltClock

4
@ নিউডিমিয়াম: ঠিক আছে। উভয় htmlএবং bodyঅন্য যে কোনও ব্লক-স্তরের উপাদানগুলির মতো আচরণ করে।
BoltClock

8
সুতরাং কিভাবে স্থির করা উচিত? দ্বারা ধারক ভাসমান যেমন মিশেল প্রস্তাব দেওয়া ?
ড্যান ড্যাসকলেসকু

4
@ ড্যানিয়েল আলবাসচ্যাট: আমি সম্মানিত!
BoltClock

20

@ বোল্টক্লক'এর উত্তরের ভিত্তিতে, আমি এটিকে মার্জিন শূন্য করে ঠিক করেছি ...
তাই

html,body, #st-full-pg {
   height: 100%;
   margin: 0;
}

"st-full-pg" id কাজ করে যেখানে প্যানেল ডিভকে নির্ধারিত হয় (এতে আরও প্যানেল-শিরোনাম এবং প্যানেল-বডি রয়েছে)


19

কিছুটা দেরি করলেও সম্ভবত এটি কাউকে সহায়তা করে।

ডাব্লু 3 সি যেমন বলেছেন তেমনি স্ক্রোলবারটি সরানোর float: left;জন্য যুক্ত করা #container:

Flo ভাসমান বাক্স এবং অন্য কোনও বাক্সের মধ্যে মার্জিন ভেঙে যায় না (এমনকি একটি ফ্লোট এবং এর প্রবাহিত শিশুদের মধ্যেও নয়)।


3
html,body {
   height: 100%;
   margin: 0;
   overflow: hidden;
}

এটি আমার পক্ষে কাজ করেছে


4
আপনার যদি পাদলেখ থাকে তবে এটি এটি সরিয়ে ফেলবে
আলেকজান্ডার

3

যোগ float:left;করা দুর্দান্ত, তবে কেন্দ্রীয় অনুভূমিক অবস্থান ব্যবহার করে হস্তক্ষেপ করবেmargin:auto;

আপনি যদি জানেন যে আপনার প্রান্তিকতা কত বড়, আপনি নিজের উচ্চতা শতাংশে ক্যালক ব্যবহার করে অ্যাকাউন্ট করতে পারেন:

height: calc(100% - 50px);

ব্রাউজার সমর্থনটি ভাল তবে কেবল আই 1111 + https://caniuse.com/#feat=calc


কেন 50px? যাদু নম্বর।
ইভান রুবিনসন

"যদি আপনি জানেন যে আপনার প্রান্তিকতা কত বড়" " আমি বিশ্বাস করি ওপি 50px
ক্লে

1
html, body {
    height: 100%;
    overflow: hidden;
}

আপনি যদি শরীরের স্ক্রোলিং অপসারণ করতে চান তবে নীচের স্টাইলটি যুক্ত করুন:

body {
    height: 100%;
    overflow: hidden;
}

এটি আমার সমস্যাটি স্থির করেছে যেখানে আমার 2 টি উলম্ব স্ক্রোল বার ছিল। এটির জন্য এইচটিএমএল সেট করা overflow: hiddenএবং বডিটি একা রেখে সেটি স্থির করে। আমার শরীর এবং এইচটিএমএল উভয়ই আছে height: 100%
করাই

1

আমি একটি সমাধান পেয়েছি: প্যাডিং যুক্ত করুন: 1 পিএক্স 0; দেহে উল্লম্ব স্ক্রোলবারগুলি উপস্থিত হতে বাধা দেয়


0

আমি এই সমস্যাটি ঠিক আগে দেখেছি যেখানে আপনি সমস্ত লিখিত সামগ্রীকে bodyমোড়কে একটি ডিভের মধ্যে রেখেছেন । মোড়কের স্টাইল সেট করা উচিত position: relative; min-height: 100%;#containerউপরে থেকে বাম 50px অবস্থান এবং বামে একটি প্যাডিং সেট দিয়ে 50 ডিগ্রি সেট করে একটি ডিভ রাখুন p মার্জিনগুলি মোড়ানোর জন্য এবং সবেমাত্র তৈরি করা ডিভের সাথে কাজ করবে না, তবে তারা এতে #containerএবং এর ভিতরে সমস্ত কিছুতেই কাজ করবে।

এখানে আমার জিসফিল উপর ফিক্স


0

@ বোল্টক্লক দ্বারা অনুপ্রাণিত হয়ে, আমি এটি চেষ্টা করেছিলাম এবং এটি কাজ করে এমনকি জুম আউট এবং ইন করার সময়ও।

Browser: Chrome 51

html{
  height: 100%;
}
body{
  height: 100%;
  margin: 0px;
  position: relative;
  top: -20px;
}

আমার ধারণা body20px এ স্থানান্তরিত হয়েছে।


0
/*removes default margin & padding*/
html, body{
    padding: 0px !important;
    margin: 0px !important;
}

/*sets body height to max; and allows scrollbar as page content grows*/
body{
    min-height: 100vh;
}

0

যারা এখানে কোডের নমুনাও অন্তর্ভুক্ত করে উত্তরটি বোঝার জন্য এখানে আসছেন তাদের পক্ষে এই উত্তরটি ( এখান থেকে অনুলিপি করা ) আপনার জন্য।

কোনও জাভাস্ক্রিপ্ট বা সুনির্দিষ্ট পিক্সেল মান (যেমন 100px) প্রয়োজন নেই, কেবল, খাঁটি সিএসএস এবং শতাংশের জন্য।

যদি আপনার ডিভটি কেবল সেখানে বসে থাকে তবে তার height: 50%অর্থ শরীরের উচ্চতা 50%। সাধারণত, কোনও দৃশ্যমান সামগ্রী ছাড়াই দেহের উচ্চতা শূন্য, সুতরাং এর 50% কেবলমাত্র, ভাল, শূন্য।

এই সমাধান (উপর ভিত্তি করে এই ) (uncomment backgroundলাইন প্যাডিং একটি ঠাহর পেতে):

/* Makes <html> take up the full page without requiring content to stretch it to that height. */

html
{
  height: 100%;
  
  /* background: green; */
}

body
{
  /*
    100% the height of <html> minus 1 multiple of the total extra height from the padding of <html>.
    This prevents an unnecessary vertical scrollbar from appearing.
  */
  height: calc(100% - 1em);
  
  /* background: blue; */
}

/* In most cases it's better to use stylesheets instead of inline-CSS. */
div
{
  width: 50%;
  height: 50%;
  
  background: red;
}
<div></div>

উপরেরটি এমনভাবে লেখা হয়েছিল যাতে এখনও স্বাভাবিক প্যাডিং থাকবে। আপনি লাল রঙের মাত্রা সেট করতে divপারেন 100%এবং এখনও প্রতিটি পাশ / প্রান্তে প্যাডিং দেখতে পাচ্ছেন। আপনি যদি এই প্যাডিংটি না চান তবে এটি ব্যবহার করুন (যদিও এটি দেখতে সুন্দর লাগছে না, তবে আমি আপনাকে প্রথম উদাহরণটির সাথে লেগে থাকার পরামর্শ দিই):

/* Makes <html> take up the full page without requiring content to stretch it to that height. */

html, body
{
  height: 100%;
}

/* You can uncomment it but you wouldn't be able to see it anyway. */

/*
html
{
  background: green;
}
*/

body
{
  margin: 0;
  
 /* background: blue; */
}

/* In most cases it's better to use stylesheets instead of inline-CSS */
div
{
  width: 50%;
  height: 50%;
  
  background: red;
}
<div></div>


0

এটা আমার জন্য কাজ করে:

html,
body {
    height: 100%;
    height: -webkit-fill-available; // Chrome
}

// Firefox
@-moz-document url-prefix() {
    body {
        box-sizing: border-box; 
        margin: 0;
        padding: 1px;
    }
}

-2

যোগ overflow: hidden;HTML এবং শরীর থেকে।

html, body {
  height: 100%;
  overflow: hidden;
}

42
এই সমাধান সম্পূর্ণরূপে স্ক্রোলবার সরিয়ে দেয়। এমনকি যে পৃষ্ঠাগুলিতে স্ক্রোলটি প্রয়োজন সেখানে
ভিল

-9

আমি একটি দ্রুত সমাধান পেয়েছি: 100% এর পরিবর্তে উচ্চতা 99.99% এ সেট করার চেষ্টা করুন


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