CSS Box Model

লেসন ১৮ / ৪৪

Box Model কী?

প্রতিটি HTML element একটি আয়তাকার বাক্স যার ৪টি স্তর আছে:

┌─────────────────── Margin ────────────────────┐
│  ┌─────────────── Border ──────────────────┐  │
│  │  ┌─────────── Padding ────────────────┐ │  │
│  │  │                                    │ │  │
│  │  │         Content (text/image)       │ │  │
│  │  │                                    │ │  │
│  │  └────────────────────────────────────┘ │  │
│  └─────────────────────────────────────────┘  │
└───────────────────────────────────────────────┘

প্রতিটি অংশের ব্যাখ্যা

  • Content — আসল text/image (width × height)
  • Padding — content ও border এর মাঝের space (ভিতরের খালি জায়গা)
  • Border — বাক্সের সীমানা
  • Margin — বাক্সের বাইরের space (অন্য element থেকে দূরত্ব)

উদাহরণ

.box {
    width: 300px;
    height: 200px;
    padding: 20px;
    border: 2px solid black;
    margin: 30px;
    background: lightblue;
}

/* সংক্ষিপ্ত লেখার নিয়ম */
padding: 10px;              /* চারদিকে 10px */
padding: 10px 20px;          /* top-bottom 10px, left-right 20px */
padding: 10px 20px 30px;     /* top, left-right, bottom */
padding: 10px 20px 30px 40px; /* top, right, bottom, left */

margin: auto;  /* কেন্দ্রে আনতে */

box-sizing (অত্যন্ত গুরুত্বপূর্ণ!)

/* Default: content-box */
.box {
    width: 300px;
    padding: 20px;
    border: 2px solid;
    /* আসল width = 300 + 40 + 4 = 344px */
}

/* সেরা পদ্ধতি: border-box */
* {
    box-sizing: border-box;
}
.box {
    width: 300px;
    padding: 20px;
    border: 2px solid;
    /* আসল width = 300px (padding+border ভিতরে হিসাব) */
}

Border প্রোপার্টি

.box {
    border: 2px solid red;                    /* সংক্ষিপ্ত */
    border-width: 2px;
    border-style: solid;  /* dashed, dotted, double, groove */
    border-color: red;
    border-radius: 10px;                      /* গোল কোণা */
    border-radius: 50%;                       /* বৃত্ত */
}

Display Property

display: block;        /* পুরো width, নতুন লাইন (div, p, h1) */
display: inline;       /* শুধু content width (span, a) */
display: inline-block; /* inline কিন্তু width/height কাজ করে */
display: none;         /* সম্পূর্ণ লুকায় (space-ও নেয় না) */
visibility: hidden;    /* লুকায় কিন্তু space থাকে */
display: flex;         /* Flexbox */
display: grid;         /* Grid */