完党なビゞュアルフレックスボックスずグリッドチヌトシヌト+チュヌトリアル





良い䞀日、友達



これは、FlexboxおよびGridCSSモゞュヌルのすべおのプロパティに関する完党なビゞュアルチヌトシヌトガむドです。



䞻な情報源フレキシボックスぞの完党なガむド、グリッドぞの完党なガむド。



蚘事の最埌に、Flexboxシミュレヌタヌの䜜成に関する小さなチュヌトリアルがありたす。



それ以䞊の前文なし。



目次
  • Flexbox


  • Grid








FlexboxFlex、以䞋Flexず呌びたす



甚語



Flexは個別のプロパティではなく、䞀連のプロパティを含むモゞュヌル党䜓です。これらのプロパティの䞀郚はコンテナフレックスコンテナず呌ばれる芪芁玠に远加され、その他は子芁玠以䞋、フレックスアむテムず呌ばれるに远加されたす。 -芁玠。



「通垞の」レむアりトはブロック芁玠ずむンラむン芁玠のフロヌに基づいおいたすが、フレックスレむアりトはフレックスフロヌの方向に基づいおいたす。仕様からこの画像を芋お、フレックスレむアりトの背埌にある重芁なアむデアを玹介したす。







芁玠は、䞻軞に沿っおメむンスタヌトからメむン゚ンドたで、たたはクロス軞に沿っおクロススタヌトからクロス゚ンドたで配眮されたす。



  • — , , . ; «flex-direction» (, . )
  • main-start | main-end — main-start main-end
  • (main size) — (main dimension),
  • — , .
  • cross-start | cross-end — , cross-end cross-start
  • (cross size) —






-



display


このプロパティはフレックスコンテナを定矩したす。割り圓おられた倀に応じおブロックたたはラむン。これには、コンテナのすべおの盎接の子の「フレックスコンテキスト」が含たれたす。



.container {
  display: flex; /*  inline-flex */
}


コンテナのCSS列のプロパティは機胜しないこずに泚意しおください。



フレックス方向






このプロパティは、䞻軞、぀たりアむテムがコンテナに配眮される方向を定矩したす。Flex自䜓ラッパヌがその機胜を拡匵するこずなくは、単方向レむアりトの抂念を実装したす。したがっお、芁玠は氎平線たたは垂盎列のいずれかに配眮されたす。



.container {
  flex-direction: row | row-reverse | column | column-reverse;
}


  • 行デフォルトアむテムは、ltrでは巊から右に、rtlでは右から巊に配眮されたす。
  • 行-逆アむテムの行順を逆にしたす-ltrでは右から巊、rtlでは巊から右
  • 列行ず䌌おいたすが、䞊から䞋ぞ
  • column-reverserow-reverseに䌌おいたすが、䞋から䞊ぞ


フレックスラップラップ、トランゞション、スプリット






デフォルトでは、すべおのアむテムが1行に配眮されたす。このプロパティを䜿甚するず、必芁に応じお芁玠を次の行に移動させるこずができたす。



.container {
  flex-wrap: nowrap | wrap | wrap-reverse;
}


  • nowrapデフォルトすべおのアむテムが1行にありたす
  • 折り返し芁玠は䞊から䞋に耇数の行にたたがるこずができたす
  • wrap-reverse芁玠は䞋から䞊に耇数の行にたたがるこずができたす


フレックスフロヌフロヌ


このプロパティは、コンテナの䞻軞ず亀差軞を定矩するflex-directionずflex-wrapの省略圢です。デフォルトは行nowrapです。



.container {
  flex-flow: column wrap;
}


justify-contentコンテンツを1行に揃える






このプロパティは、䞻軞に沿った芁玠の配眮を決定したす。これにより、固定サむズの未䜿甚芁玠たたは最倧サむズに達したフレックス芁玠によっお残された空き領域を分散できたす。たた、オヌバヌフロヌするアむテムの配眮を制埡するこずもできたす。



.container {
  justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly | start | end | left | right ... + safe | unsafe;
}


  • flex-startデフォルトアむテムは䞻軞に沿っおコンテナの先頭に移動されたす
  • フレックス゚ンドアむテムはコンテナの最埌にプッシュされたす
  • start「writing-mode」プロパティの倀によっお決定される芁玠がコンテナの先頭に移動されたす
  • end芁玠は、「writing-mode」プロパティの倀によっお決定されるコンテナの最埌にシフトされたす
  • 巊アむテムはコンテナの巊端にプッシュされたす。フレックス方向がない堎合、動䜜は開始ず同様です
  • 右アむテムはコンテナの右端に抌し蟌たれおいたす。フレックス方向がない堎合、動䜜は開始ず同じです
  • center:
  • space-between: , , — ,
  • space-around: . , ; , . , ,
  • space-evenly: ,


リストされおいるプロパティのサポヌトはブラりザによっお異なるこずに泚意しおください。最も安党なのは、フレックススタヌト、フレックス゚ンド、センタヌです。



远加のキヌワヌド「safe」および「unsafe」に぀いおは、safeを䜿甚するず、䜍眮に関係なく、ペヌゞの倖偎に芁玠を描画するこずを回避できたす。これにより、スクロヌルの可胜性がなくなりたす。



アむテムの敎列アむテムの敎列






このプロパティは、芁玠が暪軞に沿っおどのように配眮されるかを決定したす。これは、暪軞䞻軞に垂盎の正圓化コンテンツず比范できたす。



.container {
  align-items: stretch | flex-start | flex-end | center | baseline | first baseline | last baseline | start | end | self-start | self-end + ... safe | unsafe;
}


  • ストレッチデフォルト芁玠はコンテナ党䜓を埋めるためにストレッチしたす最小幅/最倧幅によっお異なりたす
  • フレックススタヌト/スタヌト/セルフスタヌトアむテムはクロス軞の始点にオフセットされたす。䞊蚘のプロパティの違いは重芁ではなく、フレックス方向たたは曞き蟌みモヌドによっお異なりたす。
  • フレックス゚ンド/゚ンド/セルプンドアむテムはクロス軞の端にオフセットされたす。指定されたプロパティ間の違いは重芁ではなく、フレックス方向たたは曞き蟌みモヌドによっお異なりたす
  • 䞭倮芁玠は䞭倮に配眮されたす
  • ベヌスラむン芁玠はベヌスラむンに沿っお配眮されたす


修食子キヌワヌド「safe」および「unsafe」を远加蚭定ずしお䜿甚しお、コンテンツにアクセスできないアクセスできない、ペヌゞ倖芁玠の配眮を回避できたす。



align-content耇数行にたたがっおコンテンツを敎列






このプロパティは、暪軞に沿っお空きスペヌスがある堎合のコンテナラむンの配眮を決定したす。これは、䞻軞に沿っお個々の芁玠間にスペヌスを分散するjustify-contentに䌌おいたす。



問題のプロパティは、flex-wrapプロパティがwrapたたはwrap-reverseに蚭定されおいる堎合に、耇数行にたたがるコンテナコンテンツにのみ適甚されるこずに泚意しおください。ワンラむナヌの堎合「flex-wrap」プロパティが「no-wrap」に蚭定されおいる堎合、align-contentを適甚しおも効果はありたせん。



.container {
  align-content: flex-start | flex-end | center | space-between | space-around | space-evenly | stretch | start | end | baseline | first baseline | last baseline + ... safe | unsafe;
}


  • 通垞デフォルト線は通垞の䜍眮にありたす
  • flex-start / start行がコンテナの先頭に移動されたす。flex-startはflex-directionに䟝存し、startは曞き蟌みモヌドに䟝存したす
  • フレックス゚ンド/゚ンドラむンはコンテナの最埌にプッシュされたす。フレックス゚ンドはフレックス方向に䟝存し、゚ンドは曞き蟌みモヌドに䟝存したす
  • 䞭倮線は䞭倮に配眮されたす
  • space-between行は、最初の行がコンテナヌの先頭に、最埌の行が最埌に配眮され、残りの行が等間隔になるように配眮されたす。
  • スペヌスアラりンドラむンはそれらの間に等間隔で配眮されたす
  • スペヌス均等ラむンは、各ラむンの呚囲に等間隔で配眮されたす
  • ストレッチ線が䌞びお利甚可胜なすべおのスペヌスを埋めたす


修食子キヌワヌド「safe」および「unsafe」を远加蚭定ずしお䜿甚しお、コンテンツにアクセスできないアクセスできない、ペヌゞ倖芁玠の配眮を回避できたす。







フレックス゚レメントのプロパティ



泚文泚文






デフォルトでは、芁玠はマヌクアップにリストされおいる順序でコンテナヌに配眮されたす。このプロパティを䜿甚するず、これを制埡できたす。



.item {
  order: 5; /*    0 */
}


フレックスグロヌ成長、拡匵






このプロパティは、必芁に応じお芁玠が拡匵できるかどうかを決定したす。比率ずしお機胜する敎数倀を取りたす。比率は、アむテムがコンテナ内で占有できるスペヌスの量を決定したす。



すべおのアむテムのフレックスグロヌが1の堎合、䜿甚可胜なスペヌスはアむテム間で均等に分散されたす。アむテムの1぀が2のフレックスグロヌを持っおいる堎合、そのアむテムは残りのアむテムず比范しお2倍のスペヌスを占有したすたたは少なくずもそうしようずしたす。



.item {
  flex-grow: 4; /*   0 */
}


負の倀は無効です。



フレックスシュリンクシュリンク、シュリンク


このプロパティは、必芁に応じお芁玠が圧瞮できるかどうかを決定したす。



.item {
  flex-shrink: 3; /*   1 */
}


負の倀は無効です。



フレックスベヌス


このプロパティは、残りのスペヌスを割り圓おる前の芁玠のデフォルトサむズを定矩したす。このサむズは、長さ20、5remなどたたはキヌワヌドにするこずができたす。autoキヌワヌドは、芁玠の「width」たたは「height」プロパティの倀を䜿甚するこずを意味したす以前は、autoの代わりにmain-sizeが䜿甚されおいたした。「content」キヌワヌドは、芁玠のコンテンツを説明するこずを意味したす。䞊蚘のキヌワヌドはただ十分にサポヌトされおいないため、min-content、max-content、fit-contentの違いを区別するこずは困難です。



.item {
  flex-basis:  | auto; /*   auto */
}


このプロパティの倀が0の堎合、芁玠を囲むスペヌスは考慮されたせん。倀が「auto」の堎合、䜿甚可胜なスペヌスは「flex-grow」プロパティの倀に埓っお割り圓おられたす。



フレックス


このプロパティは、flex-grow、flex-shrink、およびflex-basisの省略圢です。2番目ず3番目のパラメヌタヌflex-shrinkずflex-basisはオプションです。デフォルトは01 autoで、autoは省略できたす。



.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}


プロパティ倀が正しい順序で自動的に決定されるように、各プロパティを定矩する代わりにこの省略圢を䜿甚するこずをお勧めしたす。



align-self単䞀芁玠の配眮






このプロパティを䜿甚するず、個々の芁玠のデフォルトたたはalign-selfアラむメントを䞊曞きできたす。



䜿甚可胜な倀に぀いおは、align-itemsの説明を参照しおください。



.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}


float、clear、vertical-alignはフレックス芁玠に圱響を䞎えないこずに泚意しおください。



の䟋



非垞に簡単な䟋から始めたしょう-芁玠を䞭心に揃える問題を解決したす。



.parent {
  display: flex;
  height: 300px; /*     */
}

.child {
  width: 100px;  /*     */
  height: 100px; /*     */
  margin: auto;  /* ! */
}


これは、「auto」に蚭定された「margin」プロパティがフレックスコンテナの䜿甚可胜なすべおのスペヌスを消費するずいう事実のおかげで機胜したす。したがっお、垂盎パディング倀をautoに蚭定するず、芁玠が䞡方の軞で完党に䞭倮に配眮されたす。



それでは、さらに倚くのプロパティを䜿甚しおみたしょう。メディアク゚リを䜿甚せずに画面幅に応じおサむズを倉曎できる6぀の固定サむズ芁玠がありたす。䞻軞の利甚可胜なスペヌスが芁玠間で均等に分散されるようにしたす。



.flex-container {
  /*     - */
  display: flex;

  /*     ,
           
   *       :
   * flex-direction: row;
   * flex-wrap: wrap;
   */
  flex-flow: row wrap;

  /* ,  ,      */
  justify-content: space-around;
}


完了。少しスタむルを敎える必芁がありたす。







他のこずを詊しおみたしょう。サむトのヘッダヌに右揃えのナビゲヌションメニュヌがあり、それを䞭皋床の画面の䞭倮に配眮し、小さな画面の1぀の列に䞊べたいずしたす。簡単なピヌシヌ。



/*   */
.navigation {
  display: flex;
  flex-flow: row wrap;
  /*          */
  justify-content: flex-end;
}

/*   */
@media (max-width: 800px) {
  .navigation {
    /*                 */
    justify-content: space-around;
  }
}

/*   */
@media (max-width: 500px) {
  .navigation {
    /*           ()   () */
    flex-direction: column;
  }
}




芁玠の柔軟性を詊しおみたしょう。マヌクアップ内の芁玠の順序に䟝存しないフルサむズのヘッダヌずフッタヌを䜿甚しお、モバむルファヌストの3列のレむアりトを䜜成するのはどうですか。



.wrapper {
  display: flex;
  flex-flow: row wrap;
}

/*   flex-basis       100% */
.wrapper > * {
  flex: 1 100%;
}

/*      
 * 1. header
 * 2. article
 * 3. aside 1
 * 4. aside 2
 * 5. footer
 */

/*   */
@media all and (min-width: 600px) {
  /*        */
  .aside { flex: 1 auto; }
}

/*   */
@media all and (min-width: 800px) {
  /*      main 
   *   main   2   ,  
   */
  .main { flex: 2 0px; }
  .aside-1 { order: 1; }
  .main    { order: 2; }
  .aside-2 { order: 3; }
  .footer  { order: 4; }
}




圹立぀リ゜ヌス





サポヌト






グリッド以䞋、グリッドたたはグリッドず呌びたす



CSSグリッドレむアりトは、これたでで最も匷力なペヌゞレむアりトツヌルです。双方向システムです。これは、文字列でのみ機胜するFlexずは異なり、文字列ず列の䞡方で機胜するこずを意味したす。グリッドには、芪芁玠グリッドコンテナ、以䞋、コンテナず呌びたすのプロパティず子芁玠グリッド芁玠、グリッド芁玠、以䞋、芁玠ず呌びたすのプロパティが含たれたす。



甚語



グリッドコンテナ以䞋、コンテナず呌びたす


倀が「grid」の「display」プロパティが割り圓おられた芁玠は、グリッドコンテナになりたす。このコンテナは、すべおのグリッドアむテムの盎接の祖先です。次の䟋では、クラス「container」を持぀divはグリッドコンテナです。



<div class="container">
  <div class="item item-1"> </div>
  <div class="item item-2"> </div>
  <div class="item item-3"> </div>
</div>


グリッドラむン以䞋、ラむンず呌びたす


グリッドの構造を圢成する分割線。垂盎たたは氎平にするこずができ、行たたは列の境界を瀺したす。䞋の画像の黄色い線は、垂盎グリッド線列グリッド線の䟋です。







グリッドトラック以䞋、トラックたたはトラックず呌びたす


2぀の隣接する線の間のスペヌス。トラックは、グリッドの行たたは列ず考えるこずができたす。これは、2行目ず3行目の間のトラックの䟋です。







グリッド゚リア以䞋、゚リアず呌びたす


4本の線の間の合蚈スペヌス。゚リアは、任意の数のグリッドセルにたたがるこずができたす。これは、氎平線1ず3ず垂盎線1ず3の間の領域の䟋です。







グリッド芁玠以䞋、芁玠ず呌びたす


コンテナの子盎系の子孫。次の䟋では、クラス「item」のアむテムはグリッドアむテムですが、クラス「sub-item」のアむテムはグリッドアむテムではありたせん。



<div class="container">
  <div class="item"> </div>
  <div class="item">
    <p class="sub-item"> </p>
  </div>
  <div class="item"> </div>
</div>


グリッドセル以䞋、セルず呌びたす


2぀の隣接する氎平線ず垂盎線の間のスペヌス。グリッドの基本単䜍です。これは、氎平線1ず2ず垂盎線2ず3の間のセルの䟋です。







䟋



メディアク゚リなしで画面幅に基づいお自動的にサむズ倉曎されるフレキシブル幅の列。



.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  /*      min() */
  /* grid-template-columns: repeat(auto-fill, minmax(min(200px, 100%), 1fr)); */
  grid-gap: 1rem;
  /*    ,    */
  /* gap: 1rem */
}




グリッドコンテナのプロパティ



衚瀺


このプロパティは、芁玠をグリッドコンテナにし、そのコンテンツのグリッドコンテキストを蚭定したす。



.container {
  display: grid | inline-grid;
}


  • グリッド-ブロックグリッド
  • むンラむングリッド-むンラむングリッド


ネストされたグリッドを䜜成する機胜は、CSSグリッドレベル2仕様に移動されおいるこずに泚意しおください。



grid-template-columns、grid-template-rows


これらのプロパティは、スペヌスで区切られたグリッド倀の列ず行を定矩したす。倀はトラックのサむズを衚し、スペヌスはラむンを衚したす。



.container {
  grid-template-columns:  ... |   ...;
  grid-template-rows:  ... |   ...;
}


  • <track-size>-グリッドの空き領域の長さ、パヌセンテヌゞ、たたは割合「fr」単䜍を䜿甚
  • <行名>-任意の名前


トラック倀の間に空癜を残すず、線には自動的に正ず負の番号が割り圓おられたす。



.container {
  grid-template-columns: 40px 50px auto 50px 40px;
  grid-template-rows: 25% 100px auto;
}






行名は明瀺的に指定できたす。四角い括匧に泚意しおください。



.container {
  grid-template-columns: [first] 40px [line2] 50px [line3] auto [col4-start] 50px [five] 40px [end];
  grid-template-rows: [row1-start] 25% [row1-end] 100px [third-line] auto [last-line];
}






行には耇数の名前を付けるこずができたす。ここでは、たずえば、2行目に2぀の名前がありたす。



.container {
  grid-template-rows: [row1-start] 25% [row1-end row2-start] 25% [row2-end];
}


定矩に繰り返しフラグメントが含たれおいる堎合は、「repeat」ステヌトメントを䜿甚しお以䞋を短瞮できたす。



.container {
  grid-template-columns: repeat(3, 20px [col-start]);
}


これは次ず同等です。



.container {
  grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start];
}


耇数の行に同じ名前がある堎合は、行名ずそのような行の数を䜿甚できたす。



.item {
  grid-column-start: col-start 2;
}


「fr」ナニットを䜿甚するず、トラックサむズをコンテナの空き領域の䞀郚ずしお蚭定できたす。以䞋の䟋では、各芁玠はコンテナの幅の3分の1です。



.container {
  grid-template-columns: 1fr 1fr 1fr;
}


空き領域は、固定サむズの芁玠を差し匕いた埌に蚈算されたす。次の䟋では、「fr」ナニットを䜿甚しお割り圓お可胜なスペヌスに50pxが含たれおいたせん。



.container {
  grid-template-columns: 1fr 50px 1fr 1fr;
}


grid-template-areas


このプロパティは、「grid-area」プロパティで定矩された゚リア名を䜿甚しおグリッドテンプレヌトを定矩したす。゚リア名を繰り返すず、コンテンツは指定されたセル数だけ拡匵されたす。ドットは空のセルを意味したす。この構文により、グリッドの構造を芖芚化できたす。



.container {
  grid-template-areas:
    " | . | none | ..."
    "...";
}


  • <grid-area-name>-゚リア名
  • ..。-空のセル
  • なし-゚リアなし


䟋



.item-a {
  grid-area: header;
}
.item-b {
  grid-area: main;
}
.item-c {
  grid-area: sidebar;
}
.item-d {
  grid-area: footer;
}

.container {
  display: grid;
  grid-template-columns: 50px 50px 50px 50px;
  grid-template-rows: auto;
  grid-template-areas:
    "header header header header"
    "main main . sidebar"
    "footer footer footer footer";
}


このコヌドは、幅4列、高さ3行のグリッドを䜜成したす。最初の䞀番䞊の行は、ヘッダヌによっお完党に占有されおいたす。䞭倮の行は、2぀の「メむン」領域、1぀の空のセル、および1぀の「サむドバヌ」領域で構成されおいたす。最埌の行は地䞋です。







定矩の各行には、同じ数の列が必芁です。



空のセルを衚すために、任意の数のドットを䜿甚できたす。ドットの間にスペヌスがない限り、それらは空のセルのむンゞケヌタヌです。



この構文は、線ではなく領域を衚すために䜿甚されるこずに泚意しおください。この構文を䜿甚するず、領域の䞡偎の行に自動的に名前が付けられたす。リヌゞョン名が「foo」の堎合、リヌゞョンの最初最初の行行ず列は「foo-start」になり、最埌の行行ず列は「foo-end」になりたす。これは、䞊蚘の䟋のように、䞀郚の行に耇数の名前を付けるこずができるこずを意味したす。巊䞊の行には、header-start、main-start、footer-startの3぀の名前がありたす。



グリッドテンプレヌト


このプロパティは、grid-template-rows、grid-template-columns、およびgrid-template-areasの省略圢です。



.container {
  grid-template: none | <grid-template-rows> / <grid-template-columns>;
}


  • none-3぀のプロパティすべおの倀をデフォルトにリセットしたす
  • <grid-template-rows> / <grid-template-columns>-「grid-template-rows」プロパティず「grid-template-columns」プロパティを察応する倀に蚭定し、「grid-template-areas」プロパティを「none」に蚭定したす


より耇雑ですが、同時に、3぀のプロパティすべおの倀を定矩するためのより䟿利な構文を䜿甚できたす



.container {
  grid-template:
    [row1-start] "header header header" 25px [row1-end]
    [row2-start] "footer footer footer" 25px [row2-end]
    / auto 50px auto;
}


これは、次ず同等です。



.container {
  grid-template-rows: [row1-start] 25px [row1-end row2-start] 25px [row2-end];
  grid-template-columns: auto 50px auto;
  grid-template-areas:
    "header header header"
    "footer footer footer";
}


grid-templateは、ほずんどの堎合に必芁な暗黙のGridプロパティgrid-auto-columns、grid-auto-rows、grid-auto-flowなどをリセットしないため、代わりに「grid」プロパティを䜿甚するこずをお勧めしたす。



column-gap、row-gap、grid-column-gap、grid-row-gap


これらのプロパティは、線のサむズを決定したす。蚀い換えれば、それらは列/行間のむンデントの量を決定したす。



.container {
  /*  */
  column-gap: <line-size>;
  row-gap: <line-size>;

  /*  */
  grid-column-gap: <line-size>;
  grid-row-gap: <line-size>;
}


  • <line-size>-むンデントの量


䟋



.container {
  grid-template-columns: 100px 50px 100px;
  grid-template-rows: 80px auto 80px;
  column-gap: 10px;
  row-gap: 15px;
}






パディングは、グリッドの端に沿っおではなく、列/行の間にのみ䜜成されたす。



「grid-column-gap」プロパティず「grid-row-gap」プロパティの名前が「column-gap」ず「row-gap」に倉曎されたこずに泚意しおください。



ギャップ、グリッドギャップ


このプロパティは、row-gapおよびcolumn-gapの省略圢です。



.container {
  /*  */
  gap: <grid-row-gap> <grid-column-gap>;

  /*  */
  grid-gap: <grid-row-gap> <grid-column-gap>;
}


  • <grid-row-gap> <grid-column-gap>-パディングサむズ


䟋



.container {
  grid-template-columns: 100px 50px 100px;
  grid-template-rows: 80px auto 80px;
  gap: 15px 10px;
}


「row-gap」プロパティが蚭定されおいない堎合は、「column-gap」プロパティに蚭定されたす。



「grid-gap」プロパティの名前が「gap」に倉曎されたこずに泚意しおください。



正圓化-アむテム


このプロパティは、線氎平軞に沿ったセル内のアむテムの配眮を決定したすブロック列、垂盎軞に沿った配眮を決定する「align-items」プロパティずは察照的です。このプロパティの倀は、コンテナ内のすべおの芁玠に適甚されたす。



.container {
  justify-items: start | end | center | stretch;
}


  • start-芁玠はセルの先頭に移動したす巊の境界線
  • end-芁玠はセルの終わりにシフトされたす右の境界線
  • center-芁玠は䞭倮に配眮されたす
  • ストレッチ-芁玠はセルの党幅を埋めたす


.container {
  justify-items: start;
}






.container {
  justify-items: end;
}






.container {
  justify-items: center;
}






.container {
  justify-items: stretch;
}






セルの線軞に沿った個々のアむテムの䜍眮は、「justify-self」プロパティによっお制埡されたす。



敎列アむテム


このプロパティは、ボックス列、垂盎軞に沿ったセル内のアむテムの配眮を決定したす行氎平軞に沿った配眮を決定する「justify-items」プロパティずは察照的です。このプロパティの倀は、コンテナ内のすべおの芁玠に適甚されたす。



.container {
  align-items: start | end | center | stretch;
}


  • start-芁玠はセルの先頭にシフトされたす䞊郚の境界線
  • end-芁玠はセルの終わりにシフトされたす䞋の境界線
  • 䞭倮-アむテムは䞭倮に配眮されたす
  • ストレッチ-芁玠はセルの高さ党䜓を埋めたす


.container {
  align-items: start;
}






.container {
  align-items: end;
}






.container {
  align-items: center;
}






.container {
  align-items: stretch;
}






セル列軞に沿った個々の芁玠の䜍眮は、「align-self」プロパティによっお制埡されたす。



堎所-アむテム


このプロパティは、align-itemsおよびjustify-itemsの省略圢です。



.container {
  place-items: <align-items> <justify-items>;
}


  • <align-items> <justify-items>は、align-itemsの最初の倀であり、justify-itemsの2番目の倀です。2番目の倀がない堎合、最初の倀が䞡方のプロパティに割り圓おられたす。


䟋



.container {
  place-items: center start;
}


アむテムは、列軞に沿っお䞭倮に配眮され、線軞に沿っお原点に配眮されたす。



justify-content列の配眮


グリッド芁玠その列の合蚈幅がコンテナの幅よりも小さい堎合がありたす。これは、固定サむズの芁玠を定矩するずきに発生する可胜性がありたすたずえば、pxを䜿甚。この堎合、コンテナ内のグリッド列の順序を定矩できたす。このプロパティは、線軞に沿ったグリッドの配眮列の配眮を決定したすボックス列軞に沿ったグリッドの配眮を決定する "align-content"プロパティ-行の配眮ずは察照的。



.container {
  justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
}


  • start-グリッドをコンテナの先頭巊の境界線に移動したす
  • end-グリッドをコンテナの最埌右の境界線に移動したす
  • center-グリッドは䞭倮に配眮されたす
  • stretch — ,
  • space-around — ,
  • space-between — , — ,
  • space-evenly — ,


.container {
  justify-content: start;
}






.container {
  justify-content: end;
}






.container {
  justify-content: center;
}






.container {
  justify-content: stretch;
}






.container {
  justify-content: space-around;
}






.container {
  justify-content: space-between;
}






.container {
  justify-content: space-evenly;
}






align-content ( )


グリッド芁玠その行の合蚈の高さがコンテナの高さよりも䜎い堎合がありたす。これは、固定サむズの芁玠を定矩するずきに発生する可胜性がありたすたずえば、pxを䜿甚。この堎合、コンテナ内のグリッド行の順序を決定できたす。このプロパティは、ボックス列軞に沿ったグリッドの配眮-行の配眮を定矩したすむンラむン軞に沿ったグリッドの配眮を決定する "justify-content"プロパティ-列の配眮ずは察照的。



.container {
  align-content: start | end | center | stretch | space-around | space-between | space-evenly;
}


  • start-グリッドをコンテナの先頭䞊郚の境界線に移動したす
  • end-グリッドをコンテナの最埌䞋の境界線に移動したす
  • center-グリッドは䞭倮に配眮されたす
  • ストレッチ-グリッドがコンテナの高さ党䜓を占めるように線が匕き䌞ばされたす
  • space-around-ラむン間の等間隔、およびコンテナの゚ッゞの呚りのその半分のスペヌス
  • space-between-最初の行がコンテナの最初にシフトされ、最埌の-最埌に-空きスペヌスが残りの行に均等に分散されたす
  • スペヌス-均等-ラむン間ずコンテナの端の䞡方で等しいスペヌス


.container {
  align-content: start;
}






.container {
  align-content: end;
}






.container {
  align-content: center;
}






.container {
  align-content: stretch;
}






.container {
  align-content: space-around;
}






.container {
  align-content: space-between;
}






.container {
  align-content: space-evenly;
}






堎所-コンテンツ


このプロパティは、align-contentおよびjustify-contentの省略圢です。



.container {
  place-content: <align-content> <justify-content>;
}


  • <align-content> <justify-content>はalign-contentの最初の倀で、2番目はjustify-contentの倀です。2番目の倀がない堎合、最初の倀が䞡方のプロパティに割り圓おられたす。


䟋



.container {
  place-content: center start;
}


行はコンテナの䞭倮に配眮され、列は先頭にありたす。



grid-auto-columns、grid-auto-rows暗黙のトラックのサむズ


これらのプロパティは、自動生成されたトラック暗黙のトラックのサむズを決定したす。暗黙のトラックは、グリッド内のセルよりも倚くのアむテムがある堎合、たたはアむテムがグリッドの倖偎に配眮されおいる堎合に䜜成されたす。



.container {
  grid-auto-columns: <track-size> ...;
  grid-auto-rows: <track-size> ...;
}


  • <track-size>-グリッドの空き領域の長さ、パヌセンテヌゞ、たたは割合「fr」単䜍を䜿甚


䟋



.container {
  grid-template-columns: 60px 60px;
  grid-template-rows: 90px 90px;
}






これにより、2x2グリッドが䜜成されたす。



「grid-column」プロパティず「grid-row」プロパティを䜿甚しお、アむテムを次のように配眮するずしたす。



.item-a {
  grid-column: 1 / 2;
  grid-row: 2 / 3;
}
.item-b {
  grid-column: 5 / 6;
  grid-row: 2 / 3;
}






クラス「item-b」の芁玠は、垂盎線5で始たり、垂盎線6で終わりたすが、これらの線は定矩されおいたせん。存圚しない行を参照しおいるため、むンデントを埋めるために暗黙のれロ幅トラックが䜜成されたす。「grid-auto-columns」プロパティを䜿甚しお、暗黙的なトラックの幅を定矩できたす。



.container {
  grid-auto-columns: 60px;
}






グリッド-自動フロヌ


自動配眮アルゎリズムを䜿甚しお、グリッドの倖偎にアむテムを配眮できたす。問題のプロパティは、このアルゎリズムがどのように機胜するかを決定したす。



.container {
  grid-auto-flow: row | column | row dense | column dense;
}


  • 行デフォルト-アルゎリズムは珟圚の行を制限たで埋め、必芁に応じお、珟圚の行の幅が十分でない堎合、新しい行を䜜成したす
  • column-アルゎリズムは珟圚の列を限界たで埋め、必芁に応じお、珟圚の列の高さが䞍十分な堎合、新しい列を䜜成したす
  • 密-異なるサむズの芁玠がある堎合のグリッドのむンテリゞェントな充填


密集するずアむテムの芖芚的な順序が倉わるため、アクセシビリティに悪圱響を䞎える可胜性があるこずに泚意しおください。



次のマヌクアップがあるず仮定したしょう。



  <section class="container">
  <div class="item-a">item-a</div>
  <div class="item-b">item-b</div>
  <div class="item-c">item-c</div>
  <div class="item-d">item-d</div>
  <div class="item-e">item-e</div>
</section>


5列2行のグリッドを定矩し、「grid-auto-flow」プロパティを「row」デフォルトに蚭定したす。



.container {
  display: grid;
  grid-template-columns: 60px 60px 60px 60px 60px;
  grid-template-rows: 30px 30px;
  grid-auto-flow: row;
}


グリッドにアむテムを配眮する堎合、2぀のアむテムのみを配眮したす。



.item-a {
  grid-column: 1;
  grid-row: 1 / 3;
}
.item-e {
  grid-column: 5;
  grid-row: 1 / 3;
}


「grid-auto-flow」プロパティの倀は「row」であるため、グリッドは次の画像のようになりたす。クラス「item-b」、「item-c」、「item-d」の芁玠の配眮に泚意しおください行が優先されたす







プロパティ「grid-auto-flow」の倀を「column」に倉曎するず、グリッドは次のようになりたす。方法列が優先されたす







グリッド


このプロパティは、grid-template-rows、grid-template-columns、grid-template-areas、grid-auto-rows、grid-auto-columns、およびgrid-auto-flowの省略圢です1぀の宣蚀に含たれる堎合があるこずに泚意しおください。 「明瀺的」たたは「暗黙的」プロパティのみ。



  • none-すべおのプロパティはデフォルト倀を受け入れたす
  • <grid-template> -grid-templateショヌトカットに䌌おいたす
  • <grid-template-rows> / [auto-flow && density] <grid-auto-columns>-grid-template-rowsの倀を定矩したす。キヌワヌド「auto-flow」がスラッシュの右偎にある堎合、「grid-auto-flow」プロパティの倀は「column」になりたす。自動フロヌに加えおキヌワヌド「dense」が指定されおいる堎合、自動ネストアルゎリズムはそれに応じおアむテムをパックしたす。「grid-auto-columns」プロパティの倀を省略するず、その倀は「auto」になりたす。
  • [自動フロヌ&&高密床] <grid-auto-rows>/ <grid-template-columns> -grid-template-columnsの倀を定矩したす。キヌワヌド「auto-flow」がスラッシュの巊偎にある堎合、「grid-auto-flow」プロパティの倀は「row」になりたす。自動フロヌに加えおキヌワヌド「dense」が指定されおいる堎合、自動ネストアルゎリズムはそれに応じおアむテムをパックしたす。「grid-auto-rows」プロパティの倀を省略するず、その倀は「auto」になりたす。


次の2぀のコヌドブロックは同等です。



.container {
  grid: 100px 300px / 3fr 1fr;
}


.container {
  grid-template-rows: 100px 300px;
  grid-template-columns: 3fr 1fr;
}


次の2぀のコヌドブロックは同等です。



.container {
  grid: auto-flow / 200px 1fr;
}


.container {
  grid-auto-flow: row;
  grid-template-columns: 200px 1fr;
}


次の2぀のコヌドブロックは同等です。



.container {
  grid: auto-flow dense 100px / 1fr 2fr;
}


.container {
  grid-auto-flow: row dense;
  grid-auto-rows: 100px;
  grid-template-columns: 1fr 2fr;
}


たた、次の2぀のコヌドブロックも同等です。



.container {
  grid: 100px 300px / auto-flow 200px;
}


.container {
  grid-template-rows: 100px 300px;
  grid-auto-flow: column;
  grid-auto-columns: 200px;
}


この堎合、より耇雑ですが、同時に、「grid-template-areas」、「grid-template-rows」、「grid-template-columns」プロパティを同時に定矩し、他のプロパティをデフォルト倀に蚭定するためのより䟿利な構文を䜿甚できたす。 ..。このために必芁なこずは、ラむンの名前ずトラックのサむズを1぀のラむン䞊の察応する領域ずずもに定矩するこずです。これは、䟋を䜿甚しお簡単に説明できたす。



.container {
  grid: [row1-start] "header header header" 1fr [row1-end]
        [row2-start] "footer footer footer" 25px [row2-end]
        / auto 50px auto;
}


これは、次ず同等です。



.container {
  grid-template-areas:
    "header header header"
    "footer footer footer";
  grid-template-rows: [row1-start] 1fr [row1-end row2-start] 25px [row2-end];
  grid-template-columns: auto 50px auto;
}


グリッドアむテムのプロパティ



グリッド芁玠に適甚されたプロパティfloat、displayinline-block、displaytable-cell、vertical-align、およびcolumn- *は効果がないこずに泚意しおください。



grid-column-start、grid-column-end、grid-row-start、grid-row-end


これらのプロパティは、特定の行にスナップするこずにより、グリッド内の芁玠の䜍眮を決定したす。grid-column-start / grid-row-startはアむテムの開始行であり、grid-column-end / grid-row-endは終了行です。



.item {
  grid-column-start: <number> | <name> | span <number> | span <name> | auto;
  grid-column-end: <number> | <name> | span <number> | span <name> | auto;
  grid-row-start: <number> | <name> | span <number> | span <name> | auto;
  grid-row-end: <number> | <name> | span <number> | span <name> | auto;
}


  • <line>-番号行番号にスナップたたは名前行名にスナップにするこずができたす
  • span <number>-芁玠は指定されたトラック数だけ匕き䌞ばされたす
  • span <name>-芁玠は指定された名前の行に到達するたで䌞びたす
  • 自動-自動レむアりト、自動展開、たたはデフォルトの1列ストレッチ


.item-a {
  grid-column-start: 2;
  grid-column-end: five;
  grid-row-start: row1-start;
  grid-row-end: 3;
}






.item-b {
  grid-column-start: 1;
  grid-column-end: span col4-start;
  grid-row-start: 2;
  grid-row-end: span 2;
}






grid-column-end / grid-row-endプロパティ倀が指定されおいない堎合、アむテムはデフォルトで1トラックを占有したす。



芁玠は互いにオヌバヌラップできたす。z-indexプロパティを䜿甚しお、芁玠のスタック順序を制埡できたす。



grid-column、grid-row


これらのプロパティは、それぞれgrid-column-start + grid-column-endおよびgrid-row-start + grid-row-endの省略圢です。



.item {
  grid-column: <start-line> / <end-line> | <start-line> / span <value>;
  grid-row: <start-line> / <end-line> | <start-line> / span <value>;
}


  • <start-line> / <end-line>-倀は、スパンを含め、元のプロパティず同じです


䟋



.item-c {
  grid-column: 3 / span 2;
  grid-row: third-line / 4;
}






終了行が指定されおいない堎合、芁玠はデフォルトで1トラックになりたす。



グリッド゚リア


このプロパティは、grid-template-areasプロパティの倀ずしお䜿甚される芁玠の名前を定矩したす。grid-areaは、grid-row-start + grid-column-start + grid-row-end + grid-column-endの省略圢ずしおも䜿甚できたす。



.item {
  grid-area: <name> | <row-start> / <column-start> / <row-end> / <column-end>;
}


  • <name>-芁玠の任意の名前
  • <row-start> / <column-start> / <row-end> / <column-end>-数字たたは行名にするこずができたす


芁玠の呜名



.item-d {
  grid-area: header;
}


grid-row-start + grid-column-start + grid-row-end + grid-column-endの省略圢



.item-d {
  grid-area: 1 / col4-start / last-line / 6;
}






正圓化-自己


このプロパティは、行軞に沿ったセル内の芁玠の配眮を指定したすボックス列軞に沿った配眮を指定するalign-selfプロパティずは察照的です。このプロパティは、単䞀セル内の芁玠に適甚されたす。



.item {
  justify-self: start | end | center | stretch;
}


  • start-芁玠はセルの先頭に移動したす巊の境界線
  • end-芁玠はセルの終わりにシフトされたす右の境界線
  • center-芁玠は䞭倮に配眮されたす
  • ストレッチ-芁玠はセルの幅党䜓を埋めたす


.item-a {
  justify-self: start;
}






.item-a {
  justify-self: end;
}






.item-a {
  justify-self: center;
}






.item-a {
  justify-self: stretch;
}






justify-itemsプロパティは、線軞に沿ったすべおのグリッドアむテムの配眮を制埡するために䜿甚されたす。



敎列-自己


このプロパティは、ボックス列軞に沿ったセル内のアむテムの配眮を決定したす行軞に沿った配眮を決定するjustify-selfプロパティずは察照的です。このプロパティは、単䞀セル内の芁玠に適甚されたす。



.item {
  align-self: start | end | center | stretch;
}


  • start-芁玠はセルの先頭䞊郚の境界線に移動したす
  • end-芁玠はセルの終わりにシフトされたす䞋の境界線
  • center-芁玠は䞭倮に配眮されたす
  • ストレッチ-芁玠はセルの高さ党䜓を埋めたす


.item-a {
  align-self: start;
}






.item-a {
  align-self: end;
}






.item-a {
  align-self: center;
}






.item-a {
  align-self: stretch;
}






align-itemsプロパティは、ブロック列軞に沿ったすべおのグリッドアむテムの配眮を制埡するために䜿甚されたす。



堎所-自己


このプロパティは、align-selfおよびjustify-selfの省略圢です。



  • auto-デフォルト倀
  • <align-self> / <justify-self>は、align-selfの最初の倀であり、justify-selfの2番目の倀です。2番目の倀を省略するず、最初の倀が䞡方のプロパティに適甚されたす


.item-a {
  place-self: center;
}






.item-a {
  place-self: center stretch;
}








  • , px, rem, % .., , min-content, max-content, auto , , — (fr). grid-template-columns: 200px 1fr 2fr min-content
  • , . , , 1fr, 200px: grid-template-columns: 1fr minmax(200px, 1fr)
  • repeat() : grid-template-columns: repeat(10, 1fr) ( , 1fr)
  • これらの機胜の組み合わせにより、次のような驚くべきレむアりトの柔軟性が可胜になりたす。grid-template-columnsrepeatauto-fill、minmax200px、1frグリッドセクションの冒頭の䟋から


圹立぀リ゜ヌス





サポヌト






チュヌトリアル



このチュヌトリアルでは、基本的なFlexboxプロパティの簡単なトレヌナヌを䜜成したす。







マヌクアップ


<main>
  <div id="controls">
    <div id="buttons">
      <button data-btn="addBtn">Add Item</button>
      <button data-btn="removeBtn">Remove Item</button>
    </div>
    <fieldset id="flexContainerProps">
      <legend>Flex Container Props</legend>
      <label for="flexDirection">flex-direction</label>
      <select id="flexDirection">
        <option value="row" selected>row</option>
        <option value="row-reverse">row-reverse</option>
        <option value="column">column</option>
        <option value="column-reverse">column-reverse</option>
      </select>

      <label for="flexWrap">flex-wrap</label>
      <select id="flexWrap">
        <option value="nowrap">nowrap</option>
        <option value="wrap" selected>wrap</option>
        <option value="wrap-reverse">wrap-reverse</option>
      </select>

      <label for="justifyContent">justify-content</label>
      <select id="justifyContent">
        <option value="flex-start">flex-start</option>
        <option value="flex-end">flex-end</option>
        <option value="center" selected>center</option>
        <option value="space-between">space-between</option>
        <option value="space-around">space-around</option>
        <option value="space-evenly">space-evenly</option>
      </select>

      <label for="alignItems">align-items</label>
      <select id="alignItems">
        <option value="flex-start">flex-start</option>
        <option value="flex-end">flex-end</option>
        <option value="center" selected>center</option>
        <option value="stretch">stretch</option>
        <option value="baseline">baseline</option>
      </select>

      <label for="alignContent">align-content</label>
      <select id="alignContent">
        <option value="flex-start" selected>flex-start</option>
        <option value="flex-end">flex-end</option>
        <option value="center">center</option>
        <option value="stretch">stretch</option>
        <option value="space-between">space-between</option>
        <option value="space-around">space-around</option>
        <option value="space-evenly">space-evenly</option>
      </select>
    </fieldset>

    <fieldset id="flexItemProps">
      <legend>Flex Item Props</legend>
      <label for="order">order</label>
      <input
        id="order"
        type="number"
        min="-5"
        max="5"
        step="1"
        value="0"
      />

      <label for="flexGrow">flex-grow</label>
      <input
        id="flexGrow"
        type="number"
        min="0"
        max="5"
        step="1"
        value="0"
      />

      <label for="flexShrink">flex-shrink</label>
      <input
        id="flexShrink"
        type="number"
        min="1"
        max="6"
        step="1"
        value="1"
      />

      <label for="alignSelf">align-self</label>
      <select id="alignSelf">
        <option value="auto" selected>auto</option>
        <option value="flex-start">flex-start</option>
        <option value="flex-end">flex-end</option>
        <option value="center">center</option>
        <option value="stretch">stretch</option>
        <option value="baseline">baseline</option>
      </select>
    </fieldset>
  </div>

  <div id="flexContainer">
    <div class="flex-item selected">1</div>
    <div class="flex-item">2</div>
    <div class="flex-item">3</div>
    <div class="flex-item">4</div>
    <div class="flex-item">5</div>
    <div class="flex-item">6</div>
  </div>
</main>


ここには、6぀のフレックスアむテムを備えたflexContainerず、flexContainerPropsのプロパティず遞択したflexItemPropsのプロパティ間の切り替えを制埡するコントロヌルがありたす。たた、2番目のコンテナには2぀のボタンがありたす。1぀はフレックスコンテナに芁玠を远加するためのものaddBtnで、もう1぀は最埌のフレックス芁玠を削陀するためのものremoveBtnです。



スタむル


main {
  display: flex;
  justify-content: center;
  align-items: center;
}

#controls {
  margin-right: 0.4rem;
}

#buttons {
  margin: 0.4rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

button {
  margin: 0.2rem;
}

label {
  display: block;
  margin: 0.4rem;
}

select {
  width: 100%;
}

#flexContainer {
  width: 600px;
  height: 600px;
  border: 1px dashed #222;
  border-radius: 4px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
}

.flex-item {
  min-width: 178px;
  min-height: 178px;
  background: radial-gradient(circle, yellow, orange);
  border: 1px solid #222;
  border-radius: 4px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
  color: #222;
  font-size: 2rem;
  display: flex;
  justify-content: center;
  align-items: center;
  user-select: none;
  cursor: pointer;
}

.flex-item:nth-child(2n) {
  min-width: 158px;
  min-height: 158px;
}

.flex-item:nth-child(3n) {
  min-width: 198px;
  min-height: 198px;
}

.flex-item.selected {
  background: radial-gradient(circle, lightgreen, darkgreen);
}


フレックス芁玠は、サむズが異なり、同時に柔軟性がある必芁がありたす。これは、min-width / min-heightおよびnth-childで実珟したす。遞択されたアむテムは、異なる背景色でクラス「遞択枈み」です。



脚本


//    
const controls = document.querySelector('#controls')
const buttons = document.querySelector('#buttons')
const flexContainer = document.querySelector('#flexContainer')

//   
buttons.addEventListener('click', (e) => {
  //     
  if (e.target.tagName !== 'BUTTON') return

  //   
  const { btn } = e.target.dataset

  switch (btn) {
    //        -
    case 'addBtn':
      //     6 
      //      -
      //    
      const num = document.querySelectorAll('.flex-item').length + 1
      // ,      7 
      //   
      if (num < 7) {
        //    "div"
        const newItem = document.createElement('div')
        //    
        newItem.className = 'flex-item'
        //  
        newItem.textContent = num
        //    -
        flexContainer.append(newItem)
      }
      break
    //      -
    case 'removeBtn':
      //    
      const index = document.querySelectorAll('.flex-item').length - 1
      // ,      0
      //      -
      if (index > 0) {
        //  ,  
        const itemToRemove = document.querySelectorAll('.flex-item')[index]
        //   
        itemToRemove.remove()
      }
      break
  }
})

//     
controls.addEventListener('change', (e) => {
  //    
  const prop = e.target.id
  //    
  const value = e.target.value

  // ,   
  //  -    -
  //      
  if (e.target.parentElement.id === 'flexContainerProps') {
    flexContainer.style[prop] = value
  } else {
    const selectedItem = document.querySelector('.selected')
    selectedItem.style[prop] = value
  }
})

//   -
flexContainer.addEventListener('click', (e) => {
  //        -
  if (
    e.target.className !== 'flex-item' ||
    e.target.classList.contains('selected')
  )
    return

  //     "selected"    
  if (document.querySelector('.selected') !== null)
    document.querySelector('.selected').classList.remove('selected')

  //      
  e.target.classList.add('selected')

  //   -      "-"
  //       
  //      -
  //    
  //   ,     

  //         
  //         -
  const getStyle = (property, element = e.target) =>
    getComputedStyle(element).getPropertyValue(property)

  //  ,      DOM-,   "id", 
  //  ,     
  order.value = getStyle('order')
  flexGrow.value = getStyle('flex-grow')
  flexShrink.value = getStyle('flex-shrink')
  alignSelf.value = getStyle('align-self')
})


ご芧のずおり、耇雑なこずは䜕もありたせん。もちろん、結果のシミュレヌタヌの機胜は非垞に制限されおいたす。ただし、Flexboxの基本的なプロパティがどのように機胜するかを理解するにはこれで十分だず思いたす。



グリッドの基本的なプロパティに基づいお同様のシミュレヌタヌを䜜成するこずをお勧めしたす。これは優れた方法であり、すべおを正しく理解できるようになりたす。







私の最近のプロゞェクトの1぀であるModernHTML StarterTemplateも興味深いかもしれたせん。



ご枅聎ありがずうございたした。良い䞀日を。



All Articles