li的水平排列問題

涅槃總是痛苦的,什麼都得重新開始。

最近在開始轉前端,學習css。在li水平排列時遇到了幾個問題,把解決方法記錄下來。什麼不多說,開始上代碼。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
	<title>li水平排列</title>
	<style>
	html{
		font-size: 20px;
	}
	@media only screen and (min-width: 320px){
    html{font-size: 20px !important;}
	}
	@media only screen and (min-width: 350px){
	    html{font-size: 22.5px !important;}
	}
	@media only screen and (min-width: 365px){
	    html{font-size: 23px !important;}
	}
	@media only screen and (min-width: 375px){
	    html{font-size: 23.5px !important;}
	}
	@media only screen and (min-width: 390px){
	    html{font-size: 24.5px !important;}
	}
	@media only screen and (min-width: 400px){
	    html{font-size: 25px !important;}
	}
	@media only screen and (min-width: 428px){
	    html{font-size: 26.8px !important;}
	}
	@media only screen and (min-width: 432px){
	    html{font-size: 27.4px !important;}
	}
	@media only screen and (min-width: 481px){
	    html{font-size: 30px !important;}
	}
	@media only screen and (min-width: 569px){
	    html{font-size: 35px !important;}
	}
	@media only screen and (min-width: 569px){
	    html{font-size: 40px !important;}
	}
	body{
		margin: 0;
		padding: 0;
	}
	ul{
		width: 100%;
		margin: 0.3rem 0;
		padding:0.3rem 0;
		border-top:0.05rem solid #ccc;
		border-bottom: 0.05rem solid #ccc;
	}
	li{
		width: 33%;
		list-style-type: none;
		display:inline-block;
		font-size: 0.8rem;
		border-left: 0.05rem solid #ccc;
		text-align: center;
	}
	</style>
</head>
<body>
	<ul>
		<li>我是第一個li</li>
		<li>我是第二個li</li>
		<li>我是第三個li</li>
	</ul>	
</body>
</html>



這樣會有一個問題給li的寬度設置爲33%,三個li標籤的寬度居然超過了一行,有一點很明顯就是li標籤直接多了一點空白。


一、浮動

首先想到的是浮動,給li增加樣式float:left。



效果如上,這樣的方式,浮動會有一個問題,就是li的浮動使得ul的高度爲0,解決這問題,有三種方法:

1、給ul增加height高度,但是這樣不能做到自適應。

2、清楚浮動的影響,在最後的li標籤後面增加一個空的div,<div style="clear:both;">(個人推薦,但是覺得代碼維護上也不是很好。)

3、對ul增加zoom屬性,貌似只適應與ie(我沒研究)。



二、將li標籤寫成一行

<ul>
<li>我是第一個li</li><li>我是第二個li</li><li>我是第三個li</li>
</ul>

很奇怪爲什麼這樣就正常了,暫時很難理解。



三、給ul增加樣式去掉li標籤之間空白

給ul增加font-size:0樣式可以去除li標籤之間的空白。這樣有點需要注意的就是需要重新設置li標籤的字體大小。


總結下:首先給li標籤增加樣式display:inline-block,讓它水平排列然後解決兼容問題。個人不推薦是否float的方法來解決問題,覺得第二種和第三種比較好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章