เค้าโครง CSS - จัดแนวนอนและแนวตั้ง


สารบัญ

    แสดงสารบัญ

Center elements
horizontally and vertically


องค์ประกอบจัดกึ่งกลาง

หากต้องการจัดกึ่งกลางองค์ประกอบบล็อก (เช่น <div>) ให้ใช้ margin: auto;

การตั้งค่าความกว้างขององค์ประกอบจะป้องกันไม่ให้ขยายออกไป ขอบภาชนะของมัน

องค์ประกอบจะใช้ความกว้างที่ระบุและพื้นที่ที่เหลืออยู่ จะถูกแบ่งเท่าๆ กันระหว่างระยะขอบทั้งสอง:

This div element is centered.

ตัวอย่าง

.center
{
  margin: auto;
   
width: 50%;
   
border: 3px solid green;
  padding: 10px;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.center {
  margin: auto;
  width: 60%;
  border: 3px solid #73AD21;
  padding: 10px;
}
</style>
</head>
<body>

<h2>Center Align Elements</h2>
<p>To horizontally center a block element (like div), use margin: auto;</p>

<div class="center">
  <p>Hello World!</p>
</div>

</body>
</html>


หมายเหตุ: การจัดกึ่งกลางจะไม่มีผลใดๆ หากไม่ได้ตั้งค่าคุณสมบัติ width (หรือตั้งค่าเป็น 100%)


จัดกึ่งกลางข้อความ

หากต้องการจัดข้อความให้อยู่ตรงกลางภายในองค์ประกอบ ให้ใช้ text-align: center;

This text is centered.

ตัวอย่าง

.center {
  text-align: center;
  
border: 3px solid green;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.center {
  text-align: center;
  border: 3px solid green;
}
</style>
</head>
<body>

<h2>Center Text</h2>

<div class="center">
  <p>This text is centered.</p>
</div>

</body>
</html>


เคล็ดลับ: สำหรับตัวอย่างเพิ่มเติมเกี่ยวกับวิธีจัดแนวข้อความ โปรดดูบทข้อความ CSS



จัดกึ่งกลางรูปภาพ

หากต้องการจัดกึ่งกลางรูปภาพ ให้ตั้งค่าระยะขอบซ้ายและขวาเป็น auto และทำให้มันกลายเป็นองค์ประกอบ block:

Paris

ตัวอย่าง

img
{
  display: block;
    margin-left: auto;
  margin-right: auto;
  width: 40%;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
</style>
</head>
<body>

<h2>Center an Image</h2>
<p>To center an image, set left and right margin to auto, and make it into a block element.</p>

<img src="paris.jpg" alt="Paris" style="width:40%">

</body>
</html>



จัดตำแหน่งซ้ายและขวา - การใช้ตำแหน่ง

วิธีหนึ่งในการจัดตำแหน่งองค์ประกอบคือการใช้ ตำแหน่ง: สัมบูรณ์;:

In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.

ตัวอย่าง

.right
{
  position: absolute;
   
right: 0px;
  width: 300px;
  border: 3px solid #73AD21;
  padding: 10px;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.right {
  position: absolute;
  right: 0px;
  width: 300px;
  border: 3px solid #73AD21;
  padding: 10px;
}
</style>
</head>
<body>

<h2>Right align with the position property</h2>

<p>An example of how to right align elements with the position property:</p>

<div class="right">
  <p>In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.</p>
</div>

</body>
</html>


หมายเหตุ: องค์ประกอบที่มีตำแหน่งสัมบูรณ์จะถูกลบออกจากโฟลว์ปกติ และสามารถซ้อนทับองค์ประกอบได้


จัดตำแหน่งซ้ายและขวา - ใช้โฟลต

อีกวิธีหนึ่งในการจัดองค์ประกอบคือการใช้คุณสมบัติ float:

ตัวอย่าง

.right
{
  float: right;
   
width: 300px;
  border: 3px solid #73AD21;
  padding: 10px;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.right {
  float: right;
  width: 300px;
  border: 3px solid #73AD21;
  padding: 10px;
}
</style>
</head>
<body>

<h2>Right align with the float property</h2>

<p>An example of how to right align elements with the float property:</p>

<div class="right">
  <p>In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.</p>
</div>

</body>
</html>



แฮ็ค clearfix

หมายเหตุ: หากองค์ประกอบสูงกว่าองค์ประกอบที่มีอยู่และลอยอยู่ องค์ประกอบนั้น จะล้นออกนอกภาชนะ คุณสามารถใช้ "แฮ็ก clearfix" เพื่อแก้ไขปัญหานี้ (ดูตัวอย่างด้านล่าง)

โดยไม่ต้องเคลียร์ฟิกซ์

ด้วยเคลียร์ฟิกซ์

จากนั้นเราสามารถเพิ่มแฮ็ค clearfix ให้กับองค์ประกอบที่มีอยู่เพื่อแก้ไข ปัญหานี้:

ตัวอย่าง

 .clearfix::after {
  content: "";
  clear: both;
  
  display: table;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
div {
  border: 3px solid #4CAF50;
  padding: 5px;
}

.img1 {
  float: right;
}

.img2 {
  float: right;
}

.clearfix::after {
  content: "";
  clear: both;
  display: table;
}
</style>
</head>
<body>

<h2>Without Clearfix</h2>

<p>This image is floated to the right. It is also taller than the element containing it, so it overflows outside of its container:</p>

<div>
  <img class="img1" src="pineapple.jpg" alt="Pineapple" width="170" height="170">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet...
</div>

<h2 style="clear:right">With New Modern Clearfix</h2>
<p>Add the clearfix hack to the containing element, to fix this problem:</p>

<div class="clearfix">
  <img class="img2" src="pineapple.jpg" alt="Pineapple" width="170" height="170">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet...
</div>

</body>
</html>



จัดกึ่งกลางแนวตั้ง - ใช้ช่องว่างภายใน

มีหลายวิธีในการจัดกึ่งกลางองค์ประกอบในแนวตั้งใน CSS วิธีแก้ไขง่ายๆ คือการใช้ padding บนและล่าง:

I am vertically centered.

ตัวอย่าง

.center {
  padding: 70px 0;
  border: 3px solid 
green;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.center {
  padding: 70px 0;
  border: 3px solid green;
}
</style>
</head>
<body>

<h2>Center vertically with padding</h2>

<p>In this example, we use the padding property to center the div element vertically:</p>

<div class="center">
  <p>I am vertically centered.</p>
</div>

</body>
</html>


หากต้องการจัดกึ่งกลางทั้งแนวตั้งและแนวนอน ให้ใช้ padding และ text-align: center:

I am vertically and horizontally centered.

ตัวอย่าง

.center {
  padding: 70px 0;
  border: 3px solid 
green;
  text-align: center;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.center {
  padding: 70px 0;
  border: 3px solid green;
  text-align: center;
}
</style>
</head>
<body>

<h2>Center with padding and text-align</h2>

<p>In this example, we use padding and text-align to center the div element both vertically and horizontally:</p>

<div class="center">
  <p>I am vertically and horizontally centered.</p>
</div>

</body>
</html>



จัดกึ่งกลางในแนวตั้ง - ใช้ความสูงของเส้น

เคล็ดลับอีกประการหนึ่งคือการใช้คุณสมบัติ line-height ที่มีค่าเท่ากัน ไปที่คุณสมบัติ height:

I am vertically and horizontally centered.

ตัวอย่าง

.center {
  line-height: 200px;
  height: 200px;
  border: 3px solid green;
  text-align: center;
}
/* If the text has multiple lines, add the 
following: */
.center p {
  line-height: 1.5;
  display: inline-block;
  vertical-align: middle;
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.center {
  line-height: 200px;
  height: 200px;
  border: 3px solid green;
  text-align: center;
}

.center p {
  line-height: 1.5;
  display: inline-block;
  vertical-align: middle;
}
</style>
</head>
<body>

<h2>Center with line-height</h2>

<p>In this example, we use the line-height property with a value that is equal to the height property to center the div element:</p>

<div class="center">
  <p>I am vertically and horizontally centered.</p>
</div>

</body>
</html>



จัดกึ่งกลางในแนวตั้ง - การใช้ตำแหน่งและการแปลง

ถ้า padding และ line-height ไม่ใช่ตัวเลือก วิธีแก้ไขปัญหาอื่นคือการใช้การวางตำแหน่งและคุณสมบัติ transform:

I am vertically and horizontally centered.

ตัวอย่าง

.center { 
  height: 200px;
  position: relative;
  border: 3px solid green; 
}

.center p {
  margin: 0;
  
position: absolute;
  top: 50%;
  
left: 50%;
  transform: translate(-50%, -50%);
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.center { 
  height: 200px;
  position: relative;
  border: 3px solid green; 
}

.center p {
  margin: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
</style>
</head>
<body>

<h2>Center with position and transform</h2>

<p>In this example, we use positioning and the transform property to vertically and horizontally center the div element:</p>

<div class="center">
  <p>I am vertically and horizontally centered.</p>
</div>

</body>
</html>


เคล็ดลับ: คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติการแปลงในการแปลง 2 มิติของเรา บท.


จัดกึ่งกลางในแนวตั้ง - ใช้ Flexbox

คุณยังสามารถใช้ flexbox เพื่อจัดสิ่งของให้อยู่ตรงกลางได้ โปรดทราบว่า IE10 และเวอร์ชันก่อนหน้าไม่รองรับ flexbox:

I am vertically and horizontally centered.

ตัวอย่าง

 .center {
  display: flex;
  justify-content: center;
  
  align-items: center;
  height: 200px;
  border: 3px solid 
  green; 
}

ลองด้วยตัวคุณเอง →

<!DOCTYPE html>
<html>
<head>
<style>
.center {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 200px;
  border: 3px solid green; 
}
</style>
</head>
<body>

<h2>Flexbox Centering</h2>

<p>A container with both the justify-content and the align-items properties set to <em>center</em> will align the item(s) in the center (in both axis).</p>

<div class="center">
  <p>I am vertically and horizontally centered.</p>
</div>

</body>
</html>


เคล็ดลับ: คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับ Flexbox ในบท CSS Flexbox ของเรา