2017-09-30 57 views
-2

我目前有兩個要素:檢測上面的div是否在CSS中有邊距?

.item-one { 
    margin-bottom: 24px; 
} 
..other-elements.. 
.item-two { 
    margin-top: 48px; 
} 

這些項目是對自己很好,但說的,如果我刪除它們之間的..other elements..,所以他們會一個接一個,我會留下一個總(視覺上)72px的邊距。

由於流動,..other elements..擁有一致的24像素,但我的應用程序是動態的,用戶可以切換元素的位置。

不幸的是,這是非常不可取的,因爲它會導致看起來不好看的空間。

我想寫點東西像

.item-two [if-div-is-previous -> .item-one] { 
    //this will set the margin to 0 only if preceded by .item-one 
    margin-top: 0px; 
} 

總之,我試圖讓所有的元素之間的距離一致PX 24的頁面上,即使項目有不同幅度超過24像素是一個接一個。

+0

顯然,在這個「其他因素」發揮作用,也沒有辦法幫不知道什麼是對那裏發生的。 – Rob

+0

@Rob「+」的作品。 .item-one + item-two {}允許我查看項目是否彼此相鄰,如果屬實,則更改它們的屬性:) –

回答

0
.item-one + .item-two { } //if .item-two is next to .item-one 
+0

這隻適用於即時相鄰的元素。如果你有更多的相鄰元素,它不會影響它們。 –

+0

正確。這正是我想要的!此外,我發現只使用margin-top和padding-bottom來生成空間通常會產生更好的結果,而且我不必編寫儘可能多的規則(因此沒有太多的佈局廢棄)。 –

+0

@Adren你知道我如何添加第三個參數,例如.item-one + .item-two | another-item-here | ?因此,如果item-one後面是item-2,那麼這些更改將會發送到下一個選擇器? –

0

這並不是如何利潤率的工作。 CSS有垂直摺疊邊距。 您的利潤總是24px,而不是48.只要這兩者是相鄰的並且在相同的格式上下文中。

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Mastering_margin_collapsing

編輯:隨着信息您添加我明白你的問題是,下面的相鄰單元可以有更大的空間。您可以使用~選擇以下重置它們

#one~*{ 
    margin-top: 24px !important; 
    margin-bottom: 24px !important; 
} 

https://codepen.io/anon/pen/VMzwvq

+0

對不起,這完全不是我的問題所在,你能告訴我你在哪裏瞭解它,這樣我可以修復,也許? //我明白這是它的工作原理,但如果另一個元素在他們旁邊,我希望其中一個元素可以更改邊距。 –

+0

這不是你問的問題,你說你想要「所有元素之間保持一致的距離」。這已經是自然而然發生的事情。這codepen說明它:https://codepen.io/anon/pen/LzjPwB –

+0

剛剛看到你重新提出你的問題,我編輯了我的初步答案。 –