• June 2, 2017

    float  = “ลอย”
    เป็น property หนึ่งของ css  ซึ่งมีหน้าที่ทำให้ element นั้นมีลักษณะลอยออกมาในตำแหน่งที่เรากำหนด  และอนุญาตให้ text หรือ element อื่นๆ ล้อมรอบ element ที่ float ได้  โดยจะมีอยู่ 4 ลักษณะ

    left         ให้ลอยและชิดไปทางด้านซ้าย
    right      ให้ลอยและชิดไปทางด้านขวา
    inherit  ให้ลอยตามค่าที่สืบทอดมาจาก parent
    none     ไม่ลอย  (default)

    กล่อง ชิดซ้าย เรียงแถวลงตามแนวตั้ง

    <!DOCTYPE html>
    <html>
    <head>
    	<title>FLOAT AND CLEAR</title>
    	<link rel="stylesheet"type="text/css"href="main.css">
    </head>
    <body>
    		<div class="block-1"></div>
    		<div class="block-2"></div>
    		<div class="block-3"></div>
    </body>
    </html>
    
    <style type="text/css">
    .block-1 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #0E9F98;
    }
    .block-2 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #04BF9D;
    }
    .block-3 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #F4E85C;
    }
    </style>

    กล่อง ต่อกัน เรียงแถวลงตามแนวนอน

    .block-1 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #0E9F98;
    	float: left;
    }
    .block-2 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #04BF9D;
    	float: left;
    }
    .block-3 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #F4E85C;
    	float: left;
    }

    กล่อง ติดขอบซ้าย ขวาแยกกัน
    (ลดให้เหลือ 2 เเล้ว)

    .block-1 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #0E9F98;
    	float: left;
    }
    .block-2 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #04BF9D;
    	float: right;
    }

    ต่อไปเราจะให้ block-1 มีขนาดใหญ่ขึ้น  และให้ block-2 เป็น child ของ block-1  โดยจะกำหนดให้ block-1 เป็น float:left และ block-2 เป็น float:inherit

    ผลลัพธ์ที่ออกมา คือ block-2 จะ float:left ตาม block-1

    <!DOCTYPE html>
    <html>
    <head>
    	<title>FLOAT AND CLEAR</title>
    	<linkrel="stylesheet"type="text/css"href="main.css">
    </head>
    <body>
    		<divclass="block-1">
    			<divclass="block-2"></div>
    		</div>
    
    </body>
    </html>
    
    <style type="text/css">
    .block-1 {
    	width: 260px;
    	height: 260px;
    	margin: 20px;
    	background: #0E9F98;
    	float: left;
    }
    .block-2 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #04BF9D;
    	float: inherit;
    }
    </style>

    แล้วถ้าเราใส่ element ที่ไม่ float ต่อท้ายจากที่เรา float เรียบร้อย จะเกิดอะไรขึ้น?

    ให้ block-1 และ block-2 กำหนดเป็น float:left ส่วน block-3 และ block-4 ไม่ต้องกำหนดอะไร

    .block-1 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #0E9F98;
    	float: left;
    }
    .block-2 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #04BF9D;
    	float: left;
    }
    .block-3 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #F4E85C;
    }
    .block-4 {
    	width: 120px;
    	height: 120px;
    	margin: 20px;
    	background: #404040;
    }

    ผลลัพธ์ที่ออกมาก็คือ block-3 นั้นหายไป ดังภาพ จริงๆแล้ว block-3 นั้นไม่ได้หายไปไหน แต่อยู่ด้านล่าง block-1 ซึ่งลอยอยู่ ณ ตรงนั้นพอดี

    เราจะแก้ปัญหาในลักษณะนี้โดยการใช้ clear

    clear เป็น property หนึ่งของ css เช่นเดียวกับ float ซึ่งเมื่อคุณสมบัตินี้ถูกเรียกใช้กับ element ใดๆ หมายความว่า จะไม่มี element ใดๆ ต่อหรือลอยทางด้านขวา หรือทางซ้ายของ element นั้นๆ โดยจะมีอยู่ทั้งหมด 5 ลักษณะ

    left         ไม่อนุญาตให้มีอะไรลอยอยู่ทางด้านซ้าย
    right      ไม่อนุญาตให้มีอะไรลอยอยู่ทางด้านขวา
    both       ไม่นุญาตให้มีอะไรลอยอยู่ทั้งด้านซ้ายและด้านขวา
    inherit   ให้ clear ตามค่าที่สืบทอดมาจาก parent
    none      ไม่มี clear (default)

    จากตัวอย่างก่อนหน้านี้  กำหนดให้ block-3 นั้น  clear:both  ซึ่งจะทำให้ไม่มีอะไรลอยอยู่ทั้งทางด้านซ้ายและขวา  ผลลัพธ์จะได้ดังรูป

    ในส่วนของ clear:left และ clear:right นั่นจะมีลักษณะคล้ายๆกัน  แต่ต่างกันตรงที่จะยอมให้อีกฝั่งหนึ่งนั้นมี element ลอยอยู่ได้นั่นเอง

    ตัวอย่างการจัด layout ด้วย float และ clear

    https://smiletonz.wordpress.com/2013/04/13/css-float-clear/



เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories