ื”ื™ื—ื™ื“ื” Fr ื‘ CSS Grid

CSS Grid ื”ื‘ื™ื ืื™ืชื• ื™ื—ื™ื“ืช ืžื™ื“ื” ื’ืžื™ืฉื” ื‘ืฉื fr (ืงื™ืฆื•ืจ ืฉืœ Fractional Unit). 1fr ืžื™ื™ืฆื’ ื—ืœืง ืื—ื“ ืžืชื•ืš ื”ืฉื˜ื— ื”ืคื ื•ื™ ื‘ืชื•ืš grid container.

ืžื™ ืฉืขื‘ื“ ืขื ืื—ื•ื–ื™ื ืื• px ืœืจื•ื—ื‘ ืขืžื•ื“ื•ืช, ื™ืจื’ื™ืฉ ื‘ื‘ื™ืช ืขื fr – ืจืง ืฉื”ื™ื ืžื˜ืคืœืช ื‘ืฉื˜ื— ืฉื ื•ืชืจ ื‘ืฆื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช, ื‘ืœื™ ืœื—ืฉื‘ ื›ืœื•ื ื™ื“ื ื™ืช.

ืคืจื™ื˜ื™ ื”ื’ืจื™ื“ ื‘ื“ื•ื’ืžืื•ืช ื”ื‘ืื•ืช ืžืžื•ืงืžื™ื ื‘ืืžืฆืขื•ืช ื”ืชื›ื•ื ื” grid areas:

.grid-wrap {
    max-width: 100%;
    margin: 3em auto;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 50px 150px 50px;
    grid-template-areas: "head head2 . side" "main main2 . side" "footer footer footer footer";
}

ื›ืœ ืื—ืช ืžืืจื‘ืข ื”ืขืžื•ื“ื•ืช ืชื•ืคืกืช ืืช ืื•ืชื• ืžืงื•ื ื‘ื’ืจื™ื“.

Head
Head 2
Main
Main 2
Side
Footer

ืฉื™ืžื• ืœื‘! ื”ื“ื•ื’ืžืื•ืช ื‘ืคื•ืกื˜ ื–ื” ืžืฆื™ื’ื•ืช ืืช ื”ื’ืจื™ื“ ื›ืคื™ ืฉื”ื•ื ื™ื•ืคื™ืข ื‘ืืชืจื™ RTL (ื›ืœื•ืžืจ ื‘ืืชืจื™ื ื‘ืฉืคื” ื”ืขื•ื‘ื“ืช ืžื™ืžื™ืŸ ืœืฉืžืืœ ื›ื’ื•ืŸ ื”ืฉืคื” ื”ืขื‘ืจื™ืช). ื‘ืืชืจื™ื ื‘ืื ื’ืœื™ืช (LTR) ื”ื’ืจื™ื“ ื™ื•ืฆื’ ื”ืคื•ืš.

ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ ื‘ fr

ื”ื ื” ื’ืจื™ื“ ื“ื•ืžื”, ืืš ืขื ืขืจื›ื™ fr ืฉื•ื ื™ื. ืฉื™ืžื• ืœื‘ ื›ื™ืฆื“ ืจื•ื—ื‘ ื”ืขืžื•ื“ื•ืช ืžืฉืชื ื”:

.grid-wrap {
   /* ... */

   grid-template-columns: 1fr 1fr 40px 20%;
   grid-template-rows: 100px 200px 100px;

   /* ... */
}
Head
Head 2
Main
Main 2
Side
Footer

ื‘ื“ื•ื’ืžื” ื”ืื—ืจื•ื ื” ื”-sidebar ืชื•ืคืก 2fr ืžื”ืฉื˜ื—. ื”ืจื•ื—ื‘ ืฉืœื• ืฉื•ื•ื” ืœืจื•ื—ื‘ ื”ืžืฉื•ืœื‘ ืฉืœ ื”ืขืžื•ื“ื” ื”ืจืืฉื•ื ื” ื•ื”ืฉื ื™ื™ื”.

.grid-wrap {
   /* ... */

   grid-template-columns: 1fr 1fr 40px 2fr;
   grid-template-rows: 100px 200px 100px;

   /* ... */
}
Head
Head 2
Main
Main 2
Side
Footer

fr ืœืขื•ืžืช ืื—ื•ื–ื™ื

ื‘ืžื‘ื˜ ืจืืฉื•ืŸ, fr ื•-% ื ืจืื™ื ื›ืžืขื˜ ื–ื”ื™ื. ืฉืœื•ืฉ ืขืžื•ื“ื•ืช ืฉืœ 33.33% ื™ื™ืจืื• ืื•ืชื• ื“ื‘ืจ ื›ืžื• 1fr 1fr 1fr – ืขื“ ืฉืžื•ืกื™ืคื™ื gap.

ืื—ื•ื–ื™ื ืžื—ื•ืฉื‘ื™ื ืœืคื™ ื”ืจื•ื—ื‘ ื”ื›ื•ืœืœ ืฉืœ ื”-container, ื‘ืœื™ ืœื”ืชื—ืฉื‘ ื‘-gaps. ื’ืจื™ื“ ืขื 33.33% 33.33% 33.33% ื•-gap ืฉืœ 20px ืžืกืชื›ื ื‘-100% ืžื”ืจื•ื—ื‘ ื•ืขื•ื“ 40px ืฉืœ gaps, ื•ื–ื” ื’ื•ืจื ืœื’ืœื™ืฉื” ืื•ืคืงื™ืช:

/* ื’ื•ืœืฉ - 99.99% + 40px ืฉืœ gaps > ืจื•ื—ื‘ ื”-container */
grid-template-columns: 33.33% 33.33% 33.33%;
gap: 20px;

/* ืขื•ื‘ื“ - fr ืžืชื—ืฉื‘ ื‘-gaps ืื•ื˜ื•ืžื˜ื™ืช */
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;

ืขื fr ื”ื‘ืขื™ื” ื”ื–ื• ืœื ืงื™ื™ืžืช. ื”ื“ืคื“ืคืŸ ืžื—ืกื™ืจ ืงื•ื“ื ืืช ื”-gaps, ื•ืจืง ืื– ืžื—ืœืง ืืช ืžื” ืฉื ืฉืืจ ื‘ื™ืŸ ื”-tracks. ื‘ืœื™ ื’ืœื™ืฉื”, ื‘ืœื™ ื—ื™ืฉื•ื‘ื™ื.

ื–ื• ื”ืกื™ื‘ื” ื”ืžืจื›ื–ื™ืช ืœื”ืขื“ื™ืฃ fr ืขืœ % ื‘ื’ืจื™ื“. ืœืื—ื•ื–ื™ื ืขื“ื™ื™ืŸ ื™ืฉ ืžืงื•ื ื›ืฉืฆืจื™ืš ืฉืขืžื•ื“ื” ืชืฉืžื•ืจ ืขืœ ืคืจื•ืคื•ืจืฆื™ื” ืžื“ื•ื™ืงืช ืœืœื ืงืฉืจ ืœ-gaps, ืื‘ืœ ื‘ืจื•ื‘ ื”ืžืงืจื™ื fr ืคืฉื•ื˜ ื”ื‘ื—ื™ืจื” ื”ื ื›ื•ื ื”.

ืขืจื‘ื•ื‘ ื™ื—ื™ื“ื•ืช (Mixed Units)

ืืคืฉืจ ืœืขืจื‘ื‘ fr ืขื ื™ื—ื™ื“ื•ืช ืื—ืจื•ืช ื‘ืื•ืชื” ื”ื’ื“ืจื” – ืื—ื•ื–ื™ื, ืขืจื›ื™ px ืงื‘ื•ืขื™ื, ืื• auto. ื”ื“ืคื“ืคืŸ ืžืงืฆื” ืงื•ื“ื ืืช ื”ืขืจื›ื™ื ื”ืงื‘ื•ืขื™ื ื•ื”ืื—ื•ื–ื™ื™ื, ื•ืื– ืžื—ืœืง ืืช ืžื” ืฉื ืฉืืจ ื‘ื™ืŸ ืขืžื•ื“ื•ืช ื”-fr.

ื‘ื•ืื• ื ืจืื” ืืช ื–ื” ืฆืขื“ ืื—ืจ ืฆืขื“, ืขืœ container ื‘ืจื•ื—ื‘ 800px ืขื grid-template-columns: 300px 10% 1fr 2fr:

  1. ืขืจื›ื™ื ืงื‘ื•ืขื™ื ืงื•ื“ื: 300px ื ืฉืžืจื™ื.
  2. ืื—ื•ื–ื™ื: 10% ืžืชื•ืš 800px = 80px.
  3. ืžื” ื ืฉืืจ: 800 – 300 – 80 = 420px.
  4. ื—ืœื•ืงื” ื‘ื™ืŸ tracks ืฉืœ fr: 420px รท 3 fr ืกื”"ื› = 140px ืœื›ืœ fr. ื”ืขืžื•ื“ื” ืฉืœ 1fr ืžืงื‘ืœืช 140px, ื•ื”ืขืžื•ื“ื” ืฉืœ 2fr ืžืงื‘ืœืช 280px.

ืื ื™ืฉ gap, ื’ื ื”ื•ื ืžื ื•ื›ื” ื‘ืฉืœื‘ 3. ืœืžืฉืœ, ืขื gap: 20px ื•-3 ืžืจื•ื•ื—ื™ื ื‘ื™ืŸ 4 ืขืžื•ื“ื•ืช, ื ืฉืืจื™ื ืขื 420 – 60 = 360px, ื›ืœื•ืžืจ 120px ืœื›ืœ fr.

main {
  width: 800px;
  display: grid;
  grid-template-columns: 300px 10% 1fr 2fr;
  /* Result: 300px  80px  140px  280px */

  grid-template-rows: auto;
}

fr ืœืขื•ืžืช auto

auto ืžืชืื™ื ืืช ื”ืขืžื•ื“ื” ืœื’ื•ื“ืœ ื”ืชื•ื›ืŸ ืฉื‘ื”. fr ืœื•ืงื— ืืช ื”ืฉื˜ื— ืฉื ื•ืชืจ, ืœื ืžืฉื ื” ืžื” ื™ืฉ ื‘ืชื•ื›ื•.

ื›ืฉืžืฉืœื‘ื™ื ืืช ื”ืฉื ื™ื™ื, ืขืžื•ื“ื•ืช auto ืžื—ื•ืฉื‘ื•ืช ืงื•ื“ื, ื•ืขืžื•ื“ื•ืช fr ืžืชื—ืœืงื•ืช ื‘ืžื” ืฉื ืฉืืจ:

grid-template-columns: auto 1fr auto;
/* sidebar | main ื’ืžื™ืฉ | sidebar */

ืชื‘ื ื™ืช ื ืคื•ืฆื” ืœืขื™ืžื•ื“ ื“ืคื™ื: ื”-sidebar ืจื—ื‘ ื›ืชื•ื›ืŸ ืฉืœื•, ื•ื”ืื–ื•ืจ ื”ืจืืฉื™ ืžืžืœื ืืช ื›ืœ ื”ืฉืืจ. ืขื•ื‘ื“ ื™ืคื” ื’ื ืขื ืชื›ื•ื ืช aspect-ratio ืœื›ืจื˜ื™ืกื™ื ืฉืฆืจื™ื›ื™ื ืœืฉืžื•ืจ ืขืœ ืคืจื•ืคื•ืจืฆื™ื•ืช.

fr ืขื repeat() ื•-minmax()

ื”ื™ื—ื™ื“ื” fr ืžืฉืชืœื‘ืช ืžืฆื•ื™ืŸ ืขื ืชื‘ื ื™ื•ืช ื’ืจื™ื“ ืจืกืคื•ื ืกื™ื‘ื™ื•ืช ื‘ืœื™ media queries. ืฉื™ืœื•ื‘ ืฉืœ repeat() ืขื minmax() ื™ื•ืฆืจ ื’ืจื™ื“ ืฉืขื•ื˜ืฃ ืคืจื™ื˜ื™ื ืœืฉื•ืจื” ื”ื‘ืื” ืœื‘ื“:

grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));

ื›ืœ ืขืžื•ื“ื” ืจื—ื‘ื” ืœืคื—ื•ืช 250px. ื›ืฉื ืฉืืจ ืžืงื•ื, 1fr ืžื—ืœืง ืื•ืชื• ืฉื•ื•ื” ื‘ืฉื•ื•ื”. ื›ื›ืœ ืฉื”-viewport ืžืฆื˜ืžืฆื, ืขืžื•ื“ื•ืช ื™ื•ืจื“ื•ืช ืœืฉื•ืจื” ื—ื“ืฉื” ื‘ืžืงื•ื ืœื”ื™ื“ื—ืก ืžืชื—ืช ืœ-250px.

ื”ื”ื‘ื“ืœ ื‘ื™ืŸ auto-fill ืœ-auto-fit: auto-fill ืฉื•ืžืจ ืขืœ tracks ืจื™ืงื™ื ื›ืฉื™ืฉ ืžืงื•ื ืคื ื•ื™, ื‘ืขื•ื“ auto-fit ืžืงืคืœ ืื•ืชื ื›ืš ืฉื”ืคืจื™ื˜ื™ื ื”ืงื™ื™ืžื™ื ื ืžืชื—ื™ื ืœืžืœื ืืช ื”ืฉื•ืจื”.

ืžืœื›ื•ื“ื•ืช ื ืคื•ืฆื•ืช

ื›ืžื” ื“ื‘ืจื™ื ืฉื ื•ื˜ื™ื ืœื‘ืœื‘ืœ ืžืคืชื—ื™ื ืฉืขื•ื‘ื“ื™ื ืขื fr ื‘ืคืขื ื”ืจืืฉื•ื ื”:

1. fr ืœื ืขื•ื‘ื“ ืžื—ื•ืฅ ืœ-Grid

ื‘ื ื™ื’ื•ื“ ืœ-% ืื• px, ื”ื™ื—ื™ื“ื” fr ืขื•ื‘ื“ืช ืจืง ื‘ืชื•ืš grid-template-columns ื•-grid-template-rows. ืœืฉื™ื ืื•ืชื” ื‘-width, margin ืื• Flexbox? ื”ื“ืคื“ืคืŸ ืคืฉื•ื˜ ื™ืชืขืœื.

2. ื’ืœื™ืฉื” ืขื ืชื•ื›ืŸ ื’ื“ื•ืœ

ืขืžื•ื“ืช fr ืขืœื•ืœื” ืœื’ื“ื•ืœ ืžืขื‘ืจ ืœื—ืœืง ืฉืžื’ื™ืข ืœื” ืื ื”ืชื•ื›ืŸ ืœื ื ื›ื ืก. ื”ืคืชืจื•ืŸ – ืœื”ืฉืชืžืฉ ื‘-minmax(0, 1fr) ื‘ืžืงื•ื 1fr:

/* ื‘ืจื™ืจืช ืžื—ื“ืœ: fr ืžืฉืชืžืฉ ื‘ื’ื•ื“ืœ ื”ืชื•ื›ืŸ ื›ืžื™ื ื™ืžื•ื */
grid-template-columns: 1fr 1fr;

/* ื›ืคื™ื™ืช ืžื™ื ื™ืžื•ื 0 - ื”ืชื•ื›ืŸ ื™ื’ืœื•ืฉ ื‘ืžืงื•ื ืœื”ืจื—ื™ื‘ */
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);

3. fr ืœื ืขื•ื‘ื“ ื‘ืชื•ืš calc()

ื”ื™ื—ื™ื“ื” fr ื”ื™ื ืžืกื•ื’ ื ืชื•ื ื™ื <flex>, ืœื <length> ื›ืžื• px ืื• %. ืžื” ืฉืื•ืžืจ ืฉ-calc(1fr - 20px) ื”ื•ื CSS ืœื ืชืงื™ืŸ, ื•ื”ื“ืคื“ืคืŸ ื™ืชืขืœื ืžืžื ื•. ืฆืจื™ื›ื™ื ื’ื•ื“ืœ ืžื™ื ื™ืžืœื™ ืขื ื’ื“ื™ืœื” ื’ืžื™ืฉื”? ืชืฉืชืžืฉื• ื‘-minmax(): minmax(200px, 1fr).

4. gaps ื ืกืคืจื™ื ืœืคื ื™ fr

ื”ืชื›ื•ื ื” gap ืžื ื•ื›ื” ืžื”ืฉื˜ื— ื”ืคื ื•ื™ ืœืคื ื™ ื—ื™ืฉื•ื‘ ืขืจื›ื™ fr. ื’ืจื™ื“ ืขื 3 ืขืžื•ื“ื•ืช 1fr 1fr 1fr ื•-gap ืฉืœ 20px ื ื•ืชืŸ ืœื›ืœ ืขืžื•ื“ื” (total - 40px) / 3, ื•ืœื total / 3.

ืฉืืœื•ืช ื ืคื•ืฆื•ืช

ืžื” ื”ืžืฉืžืขื•ืช ืฉืœ 1fr ื‘-CSS Grid?
1fr ืžื™ื™ืฆื’ ื—ืœืง ืื—ื“ ืžืชื•ืš ื”ืฉื˜ื— ื”ืคื ื•ื™ ื‘-grid container. ืื ืžื’ื“ื™ืจื™ื grid-template-columns: 1fr 1fr 1fr, ืจื•ื—ื‘ ื”-container (ืคื—ื•ืช gaps) ืžืชื—ืœืง ืœืฉืœื•ืฉ ืขืžื•ื“ื•ืช ืฉื•ื•ืช.
ืžื” ื”ื”ื‘ื“ืœ ื‘ื™ืŸ fr ืœืื—ื•ื–ื™ื ื‘-CSS Grid?
ืื—ื•ื–ื™ื ืžื—ื•ืฉื‘ื™ื ืžื”ืจื•ื—ื‘ ื”ื›ื•ืœืœ ืฉืœ ื”-container, ื›ื•ืœืœ gaps. ื”ื™ื—ื™ื“ื” fr ืžื—ืœืงืช ืืช ื”ืฉื˜ื— ืฉื ื•ืชืจ ืœืื—ืจ ืฉื’ื“ืœื™ื ืงื‘ื•ืขื™ื, ืื—ื•ื–ื™ื ื•-gaps ืžื ื•ื›ื™ื. ื–ื” ื”ื•ืคืš ืืช fr ืœื‘ื˜ื•ื—ื” ื™ื•ืชืจ ื‘ื’ืจื™ื“ ืขื gaps ื›ื™ ื”ื™ื ืœื ืชื’ืจื•ื ืœื’ืœื™ืฉื”.
ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘-fr ืžื—ื•ืฅ ืœ-CSS Grid?
ืœื. ื”ื™ื—ื™ื“ื” fr ืขื•ื‘ื“ืช ืจืง ื‘ืชื•ืš grid-template-columns ื•-grid-template-rows. ืื™ืŸ ืœื” ื”ืฉืคืขื” ื‘-Flexbox, width, margin ืื• ื›ืœ ืชื›ื•ื ืช CSS ืื—ืจืช.
ืžื” ื”ื”ื‘ื“ืœ ื‘ื™ืŸ fr ืœ-auto ื‘-CSS Grid?
auto ืžื’ื“ื™ืจ track ืœืคื™ ื’ื•ื“ืœ ื”ืชื•ื›ืŸ ืฉืœื•. fr ืžื—ืœืง ืืช ื”ืฉื˜ื— ืฉื ื•ืชืจ ืœืœื ืงืฉืจ ืœืชื•ื›ืŸ. ื›ืฉืžืฉืœื‘ื™ื ืื•ืชื, tracks ืฉืœ auto ืžื—ื•ืฉื‘ื™ื ืงื•ื“ื, ื•ืื– tracks ืฉืœ fr ืžืชื—ืœืงื™ื ื‘ืžื” ืฉื ืฉืืจ.
ืœืžื” ืขืžื•ื“ืช fr ืฉืœื™ ืจื—ื‘ื” ืžื”ืฆืคื•ื™?
ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื”ื’ื•ื“ืœ ื”ืžื™ื ื™ืžืœื™ ืฉืœ track ืžืกื•ื’ fr ื”ื•ื auto, ื›ืœื•ืžืจ ืชื•ื›ืŸ ื™ื›ื•ืœ ืœื“ื—ื•ืฃ ืืช ื”ืขืžื•ื“ื” ืœื”ื™ื•ืช ืจื—ื‘ื” ืžื”ื—ืœืง ื”ื™ื—ืกื™ ืฉืœื”. ื›ื“ื™ ืœืคืชื•ืจ ื–ืืช, ื”ืฉืชืžืฉื• ื‘-minmax(0, 1fr) ื‘ืžืงื•ื 1fr ื›ืš ืฉื”ืขืžื•ื“ื” ืชื•ื›ืœ ืœื”ืชื›ื•ื•ืฅ ืžืชื—ืช ืœื’ื•ื“ืœ ื”ืชื•ื›ืŸ.
ืื™ืš ื”ืชื›ื•ื ื” gap ืžืฉืคื™ืขื” ืขืœ ืขืจื›ื™ fr?
Gaps ืžื ื•ื›ื™ื ืžื”ืฉื˜ื— ื”ืคื ื•ื™ ืฉืœ ื”-container ืœืคื ื™ ื—ื™ืฉื•ื‘ ื™ื—ื™ื“ื•ืช fr. ืœื“ื•ื’ืžื”, container ื‘ืจื•ื—ื‘ 900px ืขื gap: 30px ื•-1fr 1fr 1fr ื ื•ืชืŸ ืœื›ืœ ืขืžื•ื“ื” 280px, ืœื 300px, ื›ื™ ืฉื ื™ gaps ืฉืœ 30px ืกื”"ื› 60px.
ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘-fr ื‘ืชื•ืš calc()?
ืœื. ื”ื™ื—ื™ื“ื” fr ื”ื™ื ืžืกื•ื’ <flex>, ืœื <length>. ื›ืชื™ื‘ืช calc(1fr - 20px) ื”ื™ื CSS ืœื ืชืงื™ืŸ ื•ื”ื“ืคื“ืคืŸ ื™ืชืขืœื ืžืžื ื•. ืื ืฆืจื™ื›ื™ื ืขืžื•ื“ื” ื’ืžื™ืฉื” ืขื ื’ื•ื“ืœ ืžื™ื ื™ืžืœื™, ื”ืฉืชืžืฉื• ื‘-minmax(20px, 1fr) ื‘ืžืงื•ื.
ื›ืžื” ืคื™ืงืกืœื™ื ืฉื•ื•ื” 1fr?
ืื™ืŸ ืขืจืš ืคื™ืงืกืœื™ื ืงื‘ื•ืข. 1fr ื”ื•ื ื—ืœืง ื™ื—ืกื™ ืžื”ืฉื˜ื— ืฉื ื•ืชืจ ืœืื—ืจ ื ื™ื›ื•ื™ ื’ื“ืœื™ื ืงื‘ื•ืขื™ื, ืื—ื•ื–ื™ื ื•-gaps. ื‘-container ื‘ืจื•ื—ื‘ 900px ืขื ืขืžื•ื“ื” ืื—ืช ืฉืœ 300px ื•ืฉืชื™ ืขืžื•ื“ื•ืช 1fr, ื›ืœ 1fr ืฉื•ื•ื” 300px. ืฉื™ื ื•ื™ ืจื•ื—ื‘ ื”-container ืื• ื”ืขืžื•ื“ื” ื”ืงื‘ื•ืขื” ื™ืฉื ื” ืืช ืขืจืš ื”ืคื™ืงืกืœื™ื.

ืกื™ื›ื•ื

ืื ื™ ืžืฉืชืžืฉ ื‘-fr ื›ืžืขื˜ ื‘ื›ืœ ื’ืจื™ื“ ืฉืื ื™ ื‘ื•ื ื”. ืœื ืฆืจื™ืš ืœื—ืฉื‘ ืื—ื•ื–ื™ื, ื•ื”ื›ืœ ืžืชืื™ื ืืช ืขืฆืžื• ื›ืฉืžื•ืกื™ืคื™ื ืื• ืžื•ืจื™ื“ื™ื ืขืžื•ื“ื•ืช. ื‘ืฉื™ืœื•ื‘ ืขื px, auto ื•-minmax() ืืคืฉืจ ืœื›ืกื•ืช ืืช ืจื•ื‘ ืฆืจื›ื™ ื”ืขื™ืžื•ื“ ื‘ืœื™ media query ื‘ื•ื“ื“.

ื“ื™ื•ืŸ ื•ืชื’ื•ื‘ื•ืช
[  0 ืชื’ื•ื‘ื•ืช  ]

ื”ืฉืื™ืจื• ืชื’ื•ื‘ื”

ื”ื•ืกื™ืคื• ืงื•ื“ ื‘ืืžืฆืขื•ืช ื”ื›ืคืชื•ืจื™ื ืžื˜ื”. ืœืžืฉืœ, ื‘ื›ื“ื™ ืœื”ื•ืกื™ืฃ PHP ืœื—ืฆื• ืขืœ ื”ื›ืคืชื•ืจ PHP ื•ื”ื•ืกื™ืคื• ืืช ื”ืงื•ื“ ื‘ืชื•ืš ื”ืฉื•ืจื˜ืงื•ื“. ืžืฆืืชื ืฉื’ื™ืื” ื‘ืคื•ืกื˜? ืขื“ื›ื ื• ืื•ืชื ื•...