หากต้องการจัดกึ่งกลางองค์ประกอบบล็อก (เช่น <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
:
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::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 เพื่อจัดสิ่งของให้อยู่ตรงกลางได้ โปรดทราบว่า IE10 และเวอร์ชันก่อนหน้าไม่รองรับ flexbox:
.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 ของเรา