ব্যবধান

সিএসএস পডকাস্ট - 013: ব্যবধান

বলুন আপনি তিনটি বাক্সের একটি সংগ্রহ পেয়েছেন, একে অপরের উপরে স্তুপীকৃত এবং আপনি তাদের মধ্যে স্থান চান। সিএসএসে এটি করার জন্য আপনি কত উপায়ে চিন্তা করতে পারেন?

নিচের দিকে তীর সহ তিনটি স্তুপীকৃত বাক্স

margin সম্পত্তি আপনাকে আপনার যা প্রয়োজন তা দিতে পারে , তবে এটি অতিরিক্ত ব্যবধান যোগ করতে পারে যা আপনি চান না। উদাহরণস্বরূপ, আপনি কিভাবে এই উপাদানগুলির প্রতিটির মধ্যে স্থানটিকে লক্ষ্য করবেন? এই ক্ষেত্রে gap মত কিছু আরো উপযুক্ত হতে পারে. একটি UI এর মধ্যে ব্যবধান সামঞ্জস্য করার অনেক উপায় রয়েছে, প্রতিটির নিজস্ব শক্তি এবং সতর্কতা রয়েছে।

এইচটিএমএল ব্যবধান

এইচটিএমএল নিজেই স্পেস উপাদানগুলির জন্য কিছু পদ্ধতি প্রদান করে। <br> এবং <hr> উপাদানগুলি আপনাকে ব্লকের দিক থেকে উপাদানগুলিকে স্থান দিতে দেয়, যেটি যদি আপনি একটি ল্যাটিন-ভিত্তিক ভাষায় হন, তাহলে উপরের থেকে নীচে।

আপনি যদি একটি <br> উপাদান ব্যবহার করেন তবে এটি একটি লাইন-ব্রেক তৈরি করবে, ঠিক যেমন আপনি একটি ওয়ার্ড প্রসেসরে আপনার এন্টার কী টিপতেন।

<hr> উভয় পাশে স্থান সহ একটি অনুভূমিক রেখা তৈরি করে, যা margin নামে পরিচিত।

এইচটিএমএল উপাদান ব্যবহার করার পাশাপাশি, এইচটিএমএল সত্তা স্থান তৈরি করতে পারে। একটি HTML সত্তা হল অক্ষরের একটি সংরক্ষিত স্ট্রিং যা ব্রাউজার দ্বারা অক্ষর সত্তা দিয়ে প্রতিস্থাপিত হয়। উদাহরণস্বরূপ, আপনি যদি &copy; আপনার HTML ফাইলে, এটি একটি © অক্ষরে রূপান্তরিত হবে। &nbsp; সত্তা একটি নন-ব্রেকিং স্পেস ক্যারেক্টারে রূপান্তরিত হয়, যা একটি ইনলাইন স্পেস প্রদান করে। যদিও সতর্কতা অবলম্বন করুন, কারণ এই চরিত্রটির অ-ভাঙা দিকটি দুটি উপাদানকে একত্রিত করে, যার ফলে অদ্ভুত আচরণ হতে পারে।

মার্জিন

আপনি যদি একটি উপাদানের বাইরে স্থান যোগ করতে চান, আপনি margin সম্পত্তি ব্যবহার করুন। মার্জিন আপনার উপাদানের চারপাশে একটি কুশন যোগ করার মত। margin প্রপার্টি হল margin-top , margin-right , margin-bottom এবং margin-left এর জন্য সংক্ষেপিত।

বক্স মডেলের চারটি প্রধান এলাকার একটি চিত্র।

margin শর্টহ্যান্ড একটি নির্দিষ্ট ক্রমে বৈশিষ্ট্য প্রয়োগ করে: উপরে, ডান, নীচে এবং বাম। আপনি কষ্টের সাথে এইগুলি মনে রাখতে পারেন: ট্রুবল।

'সমস্যা' শব্দটি নিচের দিকে T, R, B এবং L দিয়ে উপরে, ডানে, নীচে এবং বামে প্রসারিত। তীর চিহ্ন সহ একটি বাক্সও দিক নির্দেশনা দেখায়।

margin শর্টহ্যান্ড এক, দুই বা তিনটি মান দিয়েও ব্যবহার করা যেতে পারে। একটি চতুর্থ মান যোগ করা আপনাকে প্রতিটি পৃথক দিক সেট করতে দেয়। এগুলি নিম্নরূপ প্রয়োগ করা হয়:

  • একটি মান সব দিকে প্রয়োগ করা হবে. ( margin: 20px )।
  • দুটি মান: প্রথম মানটি উপরের এবং নীচের দিকে প্রয়োগ করা হবে এবং দ্বিতীয় মানটি বাম এবং ডান দিকে প্রয়োগ করা হবে৷ ( margin: 20px 40px )
  • তিনটি মান: প্রথম মানটি top , দ্বিতীয় মানটি left এবং right এবং তৃতীয় মানটি bottom । ( margin: 20px 40px 30px )।

মার্জিনকে দৈর্ঘ্য, শতাংশ বা স্বয়ংক্রিয় মান দিয়ে সংজ্ঞায়িত করা যেতে পারে, যেমন 1em বা 20% । আপনি যদি শতাংশ ব্যবহার করেন, তাহলে আপনার উপাদানের ব্লকের প্রস্থের উপর ভিত্তি করে মানটি গণনা করা হবে।

এর মানে হল যে যদি আপনার উপাদানের ব্লকের প্রস্থ 250px হয় এবং আপনার উপাদানটির margin মান 20% থাকে : আপনার উপাদানটির প্রতিটি পাশের 50px এর গণনাকৃত মার্জিন থাকবে।

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

auto মার্জিনের আরেকটি ভাল উদাহরণ হল একটি অনুভূমিকভাবে কেন্দ্রীভূত মোড়ক যার সর্বোচ্চ প্রস্থ রয়েছে। এই ধরণের মোড়ক প্রায়ই একটি ওয়েবসাইটে একটি সামঞ্জস্যপূর্ণ কেন্দ্র কলাম তৈরি করতে ব্যবহৃত হয়।

.wrapper {
    max-width: 400px;
    margin: 0 auto;
}

এখানে, উপরের এবং নীচের (ব্লক) পাশ থেকে মার্জিন সরানো হয় এবং auto বাম এবং ডান (ইনলাইন) দিকগুলির মধ্যে স্থান ভাগ করে।

নেতিবাচক মার্জিন

নেতিবাচক মান মার্জিনের জন্যও ব্যবহার করা যেতে পারে। সন্নিহিত ভাইবোন উপাদানগুলির মধ্যে স্থান যোগ করার পরিবর্তে, এটি তাদের মধ্যে স্থান হ্রাস করবে। এর ফলে ওভারল্যাপিং উপাদান হতে পারে, যদি আপনি একটি ঋণাত্মক মান ঘোষণা করেন যা উপলব্ধ স্থানের চেয়ে বেশি।

মার্জিন পতন

মার্জিন পতন একটি জটিল ধারণা, তবে এটি এমন কিছু যা আপনি ইন্টারফেস তৈরি করার সময় খুব সাধারণভাবে চালাবেন। বলুন আপনার দুটি উপাদান রয়েছে: একটি শিরোনাম এবং একটি অনুচ্ছেদ উভয়েরই উল্লম্ব মার্জিন রয়েছে:

<article>
  <h1>My heading with teal margin</h1>
  <p>A paragraph of text that has blue margin on it, following the heading with margin.</p>
</article>
h1 {
    margin-bottom: 2rem;
}

p {
    margin-top: 3rem;
}

প্রথম নজরে, অনুচ্ছেদটি শিরোনাম থেকে 5em ব্যবধানে থাকবে এই ভেবে আপনাকে ক্ষমা করা হবে, কারণ 2rem এবং 3rem মিলিত গণনা করে 5rem . কারণ উল্লম্ব মার্জিন ধসে পড়ে , যদিও, স্থানটি আসলে 3rem

মার্জিন কোল্যাপস পার্শ্ববর্তী পার্শ্বে উল্লম্ব মার্জিন সেট সহ দুটি সংলগ্ন উপাদানের বৃহত্তম মান নির্বাচন করে কাজ করে। h1 এর নিচের অংশটি p এর উপরের অংশের সাথে মিলিত হয়, তাই h1 এর নিচের মার্জিনের সবচেয়ে বড় মান এবং p এর উপরের মার্জিনটি নির্বাচন করা হয়। যদি h1 নিচের মার্জিনের 3.5rem থাকে, তাহলে উভয়ের মধ্যে স্পেস হবে 3.5rem কারণ এটি 3rem এর চেয়ে বড়। শুধুমাত্র ব্লক মার্জিন ভেঙে যায়, ইনলাইন (অনুভূমিক) মার্জিন নয়।

মার্জিন পতনও খালি উপাদানগুলির সাথে সাহায্য করে। আপনার যদি এমন একটি অনুচ্ছেদ থাকে যার উপরে এবং নীচের মার্জিন 20px থাকে, তাহলে এটি শুধুমাত্র 20px স্থান তৈরি করবে: 40px নয়। padding সহ যদিও এই উপাদানটির অভ্যন্তরে কিছু যোগ করা হয় তবে এর মার্জিনটি আর নিজের মধ্যে ভেঙে পড়বে না এবং বিষয়বস্তু সহ যেকোনো বাক্স হিসাবে বিবেচিত হবে।

আপনার উপলব্ধি পরীক্ষা করুন

মার্জিন ধসে আপনার জ্ঞান পরীক্ষা করুন

যদি দুটি উপাদান একে অপরের উপরে স্তূপাকার করা হয়, উভয়ের উপরের মার্জিনের 20px এবং নীচের মার্জিনের 30px থাকে, তাহলে তাদের মধ্যে কত স্থান থাকবে?

10px
আবার চেষ্টা করুন!
20px
পুরোপুরি না
30px
সিএসএস উপাদানগুলির মধ্যে মার্জিন স্পেসের বড় অংশ নেবে হ্যাঁ!
40px
আবার চেষ্টা করুন!

মার্জিন পতন রোধ করা

position: absolute ব্যবহার করে যদি আপনি একটি উপাদানকে একেবারে অবস্থানে রাখেন, তাহলে মার্জিনটি আর ভেঙে পড়বে না। আপনি যদি float সম্পত্তি ব্যবহার করেন তবে মার্জিনটিও ভেঙে যাবে না।

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

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

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

মার্জিন এবং মার্জিন পতন বোঝা কঠিন হতে পারে, তবে তারা কীভাবে কাজ করে তা বিশদভাবে বোঝা খুব দরকারী, তাই এই বিস্তারিত ব্যাখ্যাকারীকে দৃঢ়ভাবে সুপারিশ করা হয়।

প্যাডিং

আপনার বাক্সের বাইরের অংশে স্থান তৈরি করার পরিবর্তে, যেমন margin করে, padding বৈশিষ্ট্য পরিবর্তে আপনার বাক্সের ভিতরে স্থান তৈরি করে: যেমন অন্তরণ।

একটি বাক্স যাতে প্যাডিং একটি বাক্সের ভিতরে থাকে তা দেখানোর জন্য তীরগুলি ভিতরের দিকে নির্দেশ করে৷

আপনি কোন বক্স মডেল ব্যবহার করছেন তার উপর নির্ভর করে—যা বক্স মডেল পাঠে কভার করা হয়েছে — padding উপাদানটির সামগ্রিক মাত্রাকেও প্রভাবিত করতে পারে।

padding বৈশিষ্ট্যটি padding-top , padding-right , padding-bottom এবং padding-left এর জন্য সংক্ষিপ্ত। margin মতোই, padding যৌক্তিক বৈশিষ্ট্য রয়েছে: padding-block-start , padding-inline-end , padding-block-end এবং padding-inline-start

পজিশনিং

এছাড়াও লেআউট মডিউলে আচ্ছাদিত, যদি আপনি position জন্য একটি মান সেট করেন যা static ব্যতীত অন্য কিছু, আপনি top , right , bottom এবং left বৈশিষ্ট্য সহ উপাদানগুলিকে স্থান দিতে পারেন। এই দিকনির্দেশক মানগুলি কীভাবে আচরণ করে তার সাথে কিছু পার্থক্য রয়েছে:

  • position: relative নথির প্রবাহে তার স্থান বজায় রাখবে, এমনকি আপনি যখন এই মানগুলি সেট করেন। এগুলি আপনার উপাদানের অবস্থানের সাথেও আপেক্ষিক হবে।
  • position: absolute আপেক্ষিক পিতামাতার অবস্থান থেকে দিকনির্দেশক মানকে ভিত্তি করবে।
  • position: fixed ভিউপোর্টের দিকনির্দেশক মানকে ভিত্তি করবে।
  • position: sticky শুধুমাত্র নির্দেশমূলক মান প্রয়োগ করবে যখন এটি ডক করা/আটকে থাকা অবস্থায় থাকে।

যৌক্তিক বৈশিষ্ট্য মডিউলে, আপনি inset-block এবং inset-inline বৈশিষ্ট্য সম্পর্কে শিখবেন, যা আপনাকে নির্দেশমূলক মান সেট করতে দেয় যা লেখার মোডকে সম্মান করে।

উভয় বৈশিষ্ট্যই start এবং end মানগুলির সংমিশ্রণে সংক্ষিপ্ত আকারের এবং এইভাবে start এবং end জন্য সেট করা একটি মান বা দুটি পৃথক মান গ্রহণ করে।

গ্রিড এবং ফ্লেক্সবক্স

অবশেষে, গ্রিড এবং ফ্লেক্সবক্স উভয় ক্ষেত্রেই আপনি শিশু উপাদানগুলির মধ্যে স্থান তৈরি করতে gap সম্পত্তি ব্যবহার করতে পারেন। gap বৈশিষ্ট্যটি row-gap এবং column-gap সংক্ষিপ্ত বিবরণ, এটি এক বা দুটি মান গ্রহণ করে, যা দৈর্ঘ্য বা শতাংশ হতে পারে। এছাড়াও আপনি unset , initial এবং inherit এর মত কীওয়ার্ড ব্যবহার করতে পারেন। আপনি যদি শুধুমাত্র একটি মান সংজ্ঞায়িত করেন, একই gap সারি এবং কলাম উভয় ক্ষেত্রেই প্রয়োগ করা হবে, কিন্তু যদি আপনি উভয় মান সংজ্ঞায়িত করেন, প্রথম মানটি row-gap এবং দ্বিতীয় মানটি column-gap

ফ্লেক্সবক্স এবং গ্রিড উভয়ের সাথে, আপনি তাদের বিতরণ এবং প্রান্তিককরণ ক্ষমতা ব্যবহার করে স্থান তৈরি করতে পারেন, যা আমরা গ্রিড মডিউল এবং ফ্লেক্সবক্স মডিউলে কভার করি।

ফাঁক সহ একটি গ্রিডের একটি চিত্র উপস্থাপনা

সামঞ্জস্যপূর্ণ ব্যবধান তৈরি করা

একটি কৌশল বেছে নেওয়া এবং এটির সাথে লেগে থাকা আপনাকে একটি সামঞ্জস্যপূর্ণ ইউজার ইন্টারফেস তৈরি করতে সাহায্য করার জন্য যা ভাল প্রবাহ এবং ছন্দ রয়েছে তা সত্যিই একটি ভাল ধারণা৷ এটি অর্জন করার একটি ভাল উপায় হল আপনার ব্যবধানের জন্য সামঞ্জস্যপূর্ণ ব্যবস্থা ব্যবহার করা।

উদাহরণ স্বরূপ, আপনি 20px ব্যবহার করতে প্রতিশ্রুতিবদ্ধ হতে পারেন উপাদানগুলির মধ্যে সমস্ত ফাঁকের জন্য একটি সামঞ্জস্যপূর্ণ পরিমাপ - যা গাটার নামে পরিচিত - যাতে সমস্ত লেআউটগুলি সামঞ্জস্যপূর্ণ দেখায় এবং অনুভব করে৷ আপনি প্রবাহ বিষয়বস্তুর মধ্যে উল্লম্ব ব্যবধান হিসাবে 1em ব্যবহার করার সিদ্ধান্ত নিতে পারেন, যা উপাদানের font-size উপর ভিত্তি করে সামঞ্জস্যপূর্ণ ব্যবধান অর্জন করবে। আপনি যাই চয়ন করুন না কেন, আপনার এই মানগুলিকে ভেরিয়েবল (বা CSS কাস্টম বৈশিষ্ট্য) হিসাবে সংরক্ষণ করা উচিত যাতে সেই মানগুলিকে টোকেনাইজ করা যায় এবং সামঞ্জস্যকে কিছুটা সহজ করা যায়।

উপাদানগুলির মধ্যে সামঞ্জস্যপূর্ণ ব্যবধান, একটি লেআউটের জন্য 20px বা প্রবাহ সামগ্রীর জন্য 1em ব্যবহার করে।

:root {
  --gutter: 20px;
  --spacing: 1em;
}

h1 {
  margin-left: var(--gutter);
  margin-top: var(--spacing);
}

এর মতো কাস্টম বৈশিষ্ট্যগুলি ব্যবহার করলে আপনি সেগুলিকে একবার সংজ্ঞায়িত করতে পারবেন, তারপরে আপনার CSS জুড়ে সেগুলি ব্যবহার করুন৷ যখন সেগুলি আপডেট করা হয়, স্থানীয়ভাবে একটি উপাদানের মধ্যে বা বিশ্বব্যাপী, মানগুলি ক্যাসকেডের মধ্য দিয়ে চলে যাবে এবং আপডেট করা মানগুলি প্রতিফলিত হবে।

আপনার উপলব্ধি পরীক্ষা করুন

ব্যবধান সম্পর্কে আপনার জ্ঞান পরীক্ষা করুন

স্পেসিংয়ের জন্য HTML ব্যবহার করা নিরাপদ যখন...

এটা শুধুমাত্র একটি.
আবার চেষ্টা করুন!
কেউ খেয়াল করবে না।
আবার চেষ্টা করুন!
এটা শুধু স্থানের জন্য।
আবার চেষ্টা করুন!
এটি নথি বুঝতে সাহায্য করে।
আপনি এটা পেয়েছেন!

একটি বাক্সের ভিতরে স্থান তৈরি করতে, ব্যবহার করুন...

মার্জিন
মার্জিন হল একটি বাক্সের বাইরে ধাক্কা দেওয়ার জন্য।
এইচটিএমএল
এগুলি ব্যবধান এবং বিষয়বস্তু ভাগ করার জন্য।
ফাঁক
ফাঁক হল বাক্সের মধ্যে ব্যবধানের জন্য।
প্যাডিং
প্যাডিং হল একটি বাক্সের ভিতরে স্থান তৈরি করার জন্য।

একটি বাক্সের বাইরে স্থান তৈরি করতে, ব্যবহার করুন...

মার্জিন
মার্জিন হল একটি বাক্সের বাইরে ধাক্কা দেওয়ার জন্য।
এইচটিএমএল
এগুলি ব্যবধান এবং বিষয়বস্তু ভাগ করার জন্য।
ফাঁক
ফাঁক হল বাক্সের মধ্যে ব্যবধানের জন্য।
প্যাডিং
প্যাডিং হল একটি বাক্সের ভিতরে স্থান তৈরি করার জন্য।

বাক্সগুলির মধ্যে স্থান তৈরি করতে, ব্যবহার করুন...

মার্জিন
মার্জিন হল একটি বাক্সের বাইরে ধাক্কা দেওয়ার জন্য।
এইচটিএমএল
এগুলি ব্যবধান এবং বিষয়বস্তু ভাগ করার জন্য।
ফাঁক
ফাঁক হল বাক্সের মধ্যে ব্যবধানের জন্য।
প্যাডিং
প্যাডিং হল একটি বাক্সের ভিতরে স্থান তৈরি করার জন্য।