探討行內元素轉換為塊級元素


行內元素和塊級元素對於前端來說是一個很重要的概念。在CSS中,只有塊級元素有物理屬性,而元素則有三種形態:

1. 塊級元素:有物理屬性,width,height寫值起作用,而且要占據一行。
2. 行內元素:沒有物理屬性。但是margin,padding值有用。不占據一行,后邊可以有兄弟元素。
3. 即是塊又是行內,根據兄弟元素決定。

一般來說,將行內元素和塊級元素進行轉換的話是給其加上display這個屬性。行內→塊級,display:block;塊級→行內,display:inline;

這也是大家都熟知的一種方式。而我今天看到了使用float將行內元素轉換為塊級元素。是否可以呢?我們嘗試一下。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="charset=utf-8"/>
 5     <title></title>
 6     <style type="text/css">
 7         p{ 
 8             background-color:yellow;
 9         }
10         a{ 
11             background-color: silver;
12         }
13     </style>
14 </head>
15 <body>
16     <p>test_1</p>
17     <p>test_2</p>
18     <p>test_3</p>
19     <a href="#">我是鏈接</a>
20 </body>
21 </html>

p是我們常用的塊級元素,而a是我們常用的行內元素。黃色占據了文檔流的一行,銀色僅占據了內容的那一片區域。

我們再給它們加上物理屬性上去。

<style type="text/css">
		p{ 
			background-color:yellow;
			width: 100px;
			height: 100px;
		}
		a{ 
			background-color: silver;
			width: 100px;
			height: 100px;
		}
</style>

  1-1

我們可以看到塊級元素<p>受到了影響,而<a>元素則沒有受到影響。

我們再給<a>元素添加一個浮動的屬性。

<style type="text/css">
		p{ 
			background-color:yellow;
			width: 100px;
			height: 100px;
		}
		a{ 
			background-color: silver;
			float: left;
			width: 100px;
			height: 100px;
		}
</style>

  1-2

我們可以看到<a>元素在添加了float屬性后,我們原來設置的width和height生效了。如果我們再<a>元素后再添加一個<a>元素,效果如下。

1-3

結論:float就是隱性的把行內元素轉化為塊元素,對內的話擁有了物理特性。對外則還是是行內元素的屬性,不占據一行。

既然float能讓行內轉換為塊級。那么,用position是否也可以呢?

<style type="text/css">
		p{ 
			background-color:yellow;
			width: 100px;
			height: 100px;
		}
		a{ 
			background-color: silver;
			position: absolute;
			width: 100px;
			height: 100px;
		}
</style>

  我們發現使用了position以后呈現的效果和“1-2”是一樣的。就是說position也可以使行內元素轉換為塊級元素。至於要使用absolute。這是因為absolute會使得元素脫離文檔結構,這一點和float是一樣的。再者如果這里設置了兩個<a>元素的話,第一個<a>會被第二個<a>元素蓋住。有多個的話則遵循“后來者居上”的原則。

所以說,不管是float還是position,使用它們都可以將行內元素轉換為隱式的塊級元素,不過隨之帶來的壞處就是會影響兄弟元素。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM