คุณสมบัติ align-items

คุณสมบัติ align-items กำหนดการจัดแนว ขององค์ประกอบตามแนวแกนตั้งฉากสำหรับบล็อก flex และตามแนวแกนตั้งสำหรับกริด ใช้ได้ กับองค์ประกอบหลัก

ไวยากรณ์

cssตัวเลือก {
  align-items: flex-start | flex-end | center | baseline | stretch;
}

ค่า

ค่า คำอธิบาย
flex-start บล็อกถูกจัดชิดไปที่จุดเริ่มต้นของแกนตั้งฉาก (แนวตั้ง)
flex-end บล็อกถูกจัดชิดไปที่จุดสิ้นสุดของแกนตั้งฉาก (แนวตั้ง)
center บล็อกอยู่กึ่งกลางของแกนตั้งฉาก (แนวตั้ง)
baseline องค์ประกอบถูกจัดแนวตามเส้นฐานของตัวเอง เส้นฐาน คือเส้นจินตภาพที่ลากผ่านขอบล่างของ ตัวอักษรโดยไม่คำนึงถึงส่วนที่ยื่น เช่น ในตัวอักษร 'p' และ 'y'
stretch บล็อกถูกยืดออกเพื่อครอบครองพื้นที่ที่มีอยู่ทั้งหมดตามแกนตั้งฉาก แต่จะยังคงคำนึงถึง min-width และ max-width ถ้ากำหนดไว้ ถ้ากำหนดความกว้างและความสูงสำหรับองค์ประกอบ - stretch จะถูกละเว้น

ค่าเริ่มต้น: stretch

ตัวอย่าง ค่า stretch

ตอนนี้แกนหลักชี้จากซ้ายไปขวา และตามแกนตั้งฉาก องค์ประกอบจะถูกยืดออกตลอด ความสูงทั้งหมด:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: stretch;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง ค่า stretch + ขนาดขององค์ประกอบ

ตอนนี้กำหนดความกว้างและความสูงให้กับองค์ประกอบ ดังนั้นค่า stretch สำหรับคุณสมบัติ align-items จะถูกละเว้น:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: stretch;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง ค่า flex-start โดยไม่มีขนาดขององค์ประกอบ

ตอนนี้องค์ประกอบจะถูกจัดชิดขึ้นด้านบน:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: flex-start;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง ค่า flex-start + ขนาดขององค์ประกอบ

ตอนนี้องค์ประกอบจะยังคงถูกจัดชิดขึ้นด้านบน อย่างไรก็ตามพวกมันจะมีความกว้าง และความสูงที่กำหนด:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: flex-start;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง ค่า flex-end + ขนาดขององค์ประกอบ

ตอนนี้องค์ประกอบจะถูกจัดชิดลงด้านล่าง:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: flex-end;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง ค่า center + ขนาดขององค์ประกอบ

ตอนนี้องค์ประกอบจะอยู่กึ่งกลางตาม แกนตั้งฉาก (ในกรณีนี้คือแนวตั้ง):

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: center;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง ค่า center, องค์ประกอบมีขนาดต่างกัน

ตอนนี้องค์ประกอบมีความสูงต่างกัน (ตอนนี้พวกมันถูกขยายออกด้วยข้อความ แต่ สามารถกำหนด height ได้) ความกว้างเท่ากันทั้งหมด เนื่องจากกำหนดคุณสมบัติ width:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: center;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง ค่า baseline, องค์ประกอบมีขนาดต่างกัน

นี่คือลักษณะของการจัดแนว ตามเส้นฐาน:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: baseline;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 130px;
  line-height: 1;
  border: 1px solid #696989;
}

Результат:

ตัวอย่าง การจัดแนวตามจุดเริ่มต้นของแกนตั้งในกริด

มาทำการจัดแนวองค์ประกอบภายในเซลล์ ตามจุดเริ่มต้นของแกนตั้ง:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  align-items: flex-start;
  grid-template-columns: 100px 100px;
  gap: 10px;
  padding: 10px;
  border: 2px solid #696989;
  height: 200px;
  width: 400px;
}
#parent > div {
  gap: 10px;
  padding: 10px;
  box-sizing: border-box;
  border: 1px solid #696989;
}

Результат:

และตอนนี้มาดูกริดของเรา ในตัวดีบักเกอร์ของเบราว์เซอร์:

ตัวอย่าง การจัดแนวกึ่งกลางแกนตั้งในกริด

และตอนนี้มาจัดแนวองค์ประกอบของเรา ในเซลล์กึ่งกลางแกนตั้ง:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  align-items: center;
  grid-template-columns: 100px 100px;
  gap: 10px;
  padding: 10px;
  border: 2px solid #696989;
  height: 200px;
  width: 400px;
}
#parent > div {
  gap: 10px;
  padding: 10px;
  box-sizing: border-box;
  border: 1px solid #696989;
}

Результат:

มาดูการแสดงผลของกริด ในตัวดีบักเกอร์:

ตัวอย่าง การจัดแนวตามจุดสิ้นสุดของแกนตั้งในกริด

เปลี่ยนการจัดแนวองค์ประกอบอีกครั้ง คราวนี้ตามจุดสิ้นสุดของแกนตั้ง:

html<div id="parent">
  <div id="elem1">1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  align-items: end;
  grid-template-columns: 100px 100px;
  gap: 10px;
  padding: 10px;
  border: 2px solid #696989;
  height: 200px;
  width: 400px;
}
#parent > div {
  gap: 10px;
  padding: 10px;
  box-sizing: border-box;
  border: 1px solid #696989;
}
#elem1 {
  
}

Результат:

และตอนนี้มาดูว่ากริดของเรา หน้าตาเป็นอย่างไรผ่านตัวดีบักเกอร์:

ดูเพิ่มเติม

  • คุณสมบัติ flex-direction,
    ซึ่งกำหนดทิศทางของแกนสำหรับบล็อก flex
  • คุณสมบัติ justify-content,
    ซึ่งกำหนดการจัดแนวตามแกนหลัก
  • คุณสมบัติ align-items,
    ซึ่งกำหนดการจัดแนวตามแกนตั้งฉาก
  • คุณสมบัติ flex-wrap,
    ซึ่งกำหนดการขึ้นบรรทัดใหม่สำหรับบล็อก flex
  • คุณสมบัติ flex-flow,
    รูปแบบย่อสำหรับ flex-direction และ flex-wrap
  • คุณสมบัติ order,
    ซึ่งกำหนดลำดับของบล็อก flex
  • คุณสมบัติ align-self,
    ซึ่งกำหนดการจัดแนวของบล็อกเดียว
  • คุณสมบัติ flex-basis,
    ซึ่งกำหนดขนาดของบล็อก flex เฉพาะ
  • คุณสมบัติ flex-grow,
    ซึ่งกำหนดการขยายตัวของบล็อก flex
  • คุณสมบัติ flex-shrink,
    ซึ่งกำหนดการหดตัวของบล็อก flex
  • คุณสมบัติ flex,
    รูปแบบย่อสำหรับ flex-grow, flex-shrink และ flex-basis