2015-04-12 61 views
1

在下面的代碼中,所有的li都會有左邊距,包括第一個邊距。這會將第一個元素推向右側。我不希望第一個元素被推入,我希望它保持放置狀態,而其他元素添加了餘量。我該怎麼做呢?如何從ul裏的第一個li元素中刪除邊距,當其他li設置爲inline-block時

ul li 
{ 
    position:relative; 
    margin-left:10px; 
    display:inline-block 
} 
+0

'padding-left:10px'而不是'margin'? – Huey

+0

[first-of-type](https://css-tricks.com/almanac/selectors/f/first-of-type/) – abhinav

+0

答案的類型取決於你的HTML的結構如何,你可以張貼嗎? – sinanspd

回答

2

可以使用:first-child僞類

/* added to remove default styles given by browser */ 
 
* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
ul li { 
 
    position: relative; 
 
    display: inline-block; 
 
    margin-left: 20px; 
 
    border: 1px solid red; 
 
} 
 
ul li:first-child { 
 
    margin: 0; 
 
}
<ul> 
 
    <li>Hello world</li> 
 
    <li>Hello world</li> 
 
    <li>Hello world</li> 
 
</ul>

,或者您也可以使用+Adjacent sibling CSS選擇器會檢查是否li有一個兄弟,給margin

/* added to remove default styles given by browser */ 
 

 
* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
ul li { 
 
    position: relative; 
 
    display: inline-block; 
 
    border: 1px solid red; 
 
} 
 
ul li + li { 
 
    margin-left: 20px; 
 
}
<ul> 
 
    <li>Hello world</li> 
 
    <li>Hello world</li> 
 
    <li>Hello world</li> 
 
</ul>

+0

什麼都不做。我設置兩個塊的位置:相對btw – Dan

+0

位置:相對無關緊要,但我認爲你忘了刪除瀏覽器給出的默認樣式@Dan更新了我的答案 –

0

理想情況下,你將要針對所有,但第一個元素。這可以使用以下選擇器來完成:

li:nth-child(n+2) 
+0

下面是該結果http://jsfiddle.net/1ym40n88/ 3 /他們用這種方法在第一個元素下摺疊 – Dan

相關問題