關於CSS中的float可能出現的小問題

JNovice發表於2018-08-17

關於CSS中的float可能出現的小問題


  • 前言:最近學習CSS的float所遇到點小問題,然後順便分享給大家。

一、什麼是CSS以及float


 

(一) CSS概述

CSS是層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等檔案樣式的計算機語言。CSS不僅可以靜態地修飾網頁,還可以配合各種指令碼語言動態地對網頁各元素進行格式化。


(二) float概述

float屬性定義元素在哪個方向浮動。以往這個屬性總應用於影象,使文字圍繞在影象周圍,不過在 CSS 中,任何元素都可以浮動。浮動元素會生成一個塊級框,而不論它本身是何種元素。
如果浮動非替換元素,則要指定一個明確的寬度;否則,它們會盡可能地窄。

 

二、float可能出項的問題


 

(一) 當沒有父級塊明確的邊界時,float可能沒有預想的效果

    1.沒有明確的邊界

 1 <!DOCTYPE html>
 2 <html>
 3 
 4     <head>
 5         <meta charset="utf-8" />
 6         <title>floatTest</title>
 7         <style type="text/css">
 8             #d1 {
 9                 float: left;
10                 width: 100px;
11                 height: 100px;
12                 background-color: red;
13             }
14             
15             #d2 {
16                 float: left;
17                 width: 100px;
18                 height: 100px;
19                 background-color: green;
20             }
21             
22             #d3 {
23                 float: left;
24                 width: 100px;
25                 height: 100px;
26                 background-color: blue;
27             }
28         </style>
29     </head>
30 
31     <body>
32         <div style="width:auto; border:solid 1px black;">
33         <!--<div style="width: 300px;height: 300px;border: solid 1px black;">-->
34             <div id="d1">
35                 d1
36             </div>
37             <div id="d2">
38                 d2
39             </div>
40             <div id="d3">
41                 d3
42             </div>
43         </div>
44 
45     </body>
46 
47 </html>

 浮動前

浮動後


 

    2.有明確的邊界時

 1 <!DOCTYPE html>
 2 <html>
 3 
 4     <head>
 5         <meta charset="utf-8" />
 6         <title>floatTest</title>
 7         <style type="text/css">
 8             #d1 {
 9                 float: left;
10                 width: 100px;
11                 height: 100px;
12                 background-color: red;
13             }
14             
15             #d2 {
16                 float: left;
17                 width: 100px;
18                 height: 100px;
19                 background-color: green;
20             }
21             
22             #d3 {
23                 float: left;
24                 width: 100px;
25                 height: 100px;
26                 background-color: blue;
27             }
28         </style>
29     </head>
30 
31     <body>
32         <!--<div style="width:auto; border:solid 1px black;">-->
33         <div style="width: 200px;height: 200px;border: solid 1px black;">
34             <div id="d1">
35                 d1
36             </div>
37             <div id="d2">
38                 d2
39             </div>
40             <div id="d3">
41                 d3
42             </div>
43         </div>
44 
45     </body>
46 
47 </html>

 浮動前

浮動後


 

    3.總結

      在選擇需要進行浮動操作的時候,一定要明確浮動的邊界,這樣才能出想要的效果。


 

(二) 對div塊的設定導致的問題

    1.div範圍定義較小

 1 <!DOCTYPE html>
 2 <html>
 3 
 4     <head>
 5         <meta charset="utf-8" />
 6         <title>floatTest</title>
 7         <style type="text/css">
 8             .divs {
 9                 /*float: right;*/
10             }
11             
12             .divs div {
13                 float: right;
14             }
15             
16             #d1 {
17                 width: 100px;
18                 height: 100px;
19                 background-color: red;
20             }
21             
22             #d2 {
23                 width: 100px;
24                 height: 100px;
25                 background-color: green;
26             }
27         </style>
28     </head>
29 
30     <body>
31         <div style="width: 700px;height: 700px;border: solid 1px black;">
32             <div style="width: 200px;height: 200px;border: solid 1px black;" class="divs">
33                 <div id="d1">
34                     d1
35                 </div>
36                 <div id="d2">
37                     d2
38                 </div>
39             </div>
40         </div>
41 
42     </body>
43 
44 </html>

 浮動前

浮動後


 

    2.合理的div塊定義

 1 <!DOCTYPE html>
 2 <html>
 3 
 4     <head>
 5         <meta charset="utf-8" />
 6         <title>floatTest</title>
 7         <style type="text/css">
 8             .divs {
 9                 float: right;
10             }
11             
12             .divs div {
13                 /*float: right;*/
14             }
15             
16             #d1 {
17                 width: 100px;
18                 height: 100px;
19                 background-color: red;
20             }
21             
22             #d2 {
23                 width: 100px;
24                 height: 100px;
25                 background-color: green;
26             }
27         </style>
28     </head>
29 
30     <body>
31         <div style="width: 700px;height: 700px;border: solid 1px black;">
32             <div style="width: 200px;height: 200px;border: solid 1px black;" class="divs">
33                 <div id="d1">
34                     d1
35                 </div>
36                 <div id="d2">
37                     d2
38                 </div>
39             </div>
40         </div>
41 
42     </body>
43 
44 </html>

浮動前

浮動後


 

    3.總結

當我們將整個divs塊下的元素都進行了右浮動,但是我們以為這就是將divs塊進行了移動,但是其實只是d1和d2塊在divs塊中進行了移動,divs塊並沒有動,所以當我們要移動一整塊的divs和分別移動的效果是完全不一樣的,所以一定要注意這樣的小細節。


 

相關文章