2017-01-20 26 views
1

我有兩個按鈕在他們水平居中這樣一個div:給予水平排列的按鈕固定的位置在一個div

div with buttons

我想要的按鈕具有的底部相同的寬度div,而不管他們上面的文本行數。

通常我會得到母體DIV position: relative;和按鈕position: absolute;,但是在這種情況下,絕對定位破壞了他們原來的排列,從而導致左一個完全脫落頁:

div with missing buttons

我對CSS定位知之甚少,不知道爲什麼會出現這種情況。

這是我現有的html和css。

HTML:

<div class="formula-block centered" id="587d6b07c89e7613846a3cf3"> 
     <h4 class="padded-top"> Vegan Vit. D</h4> 
     <p> fat soluble vitamin mix</p> 
      <button class="button-success pure-button"><a href="/formula/587d6b07c89e7613846a3cf3">Show</a></button> 
      <button class="button-warning pure-button">Delete</button> 
    </div> 

CSS/LESS:

.formula-block { 
    height: 225px; 
    width: 200px; 
    border: 3px solid lighten(@dark-grey, 15%); 
    box-shadow: 1px 1px @grey; 
    margin-bottom: 1.5em; 
    margin-right: 1.5em; 
    position: relative; 
a { 
    color: @off-white; 
    text-decoration: none; 
} 
p { 
    padding: 0px 5px 0px 5px; 
    } 
button { 
    position: absolute; 
    bottom: 0.5em; 
    } 
} 

我怎麼能做的按鈕從底部固定的距離?任何幫助將不勝感激,謝謝。

+0

的位置絕對是正確的想法了新的元素,其中一個辦法做到這一點是將兩個按鈕都包裝在一個div中,並且絕對定位div,而不是定位每個按鈕絕對。 – Adam

+0

https://jsfiddle.net/vdbsa3fn/似乎有一些樣式不在你的CSS ..也,它會出現兩個按鈕都在那裏,他們只是覆蓋另一個..嘗試應用'左'和'右鍵屬性到相應的按鈕 – haxxxton

回答

1

您只需要給左邊的按鈕left: 0和右邊的按鈕right: 0,其中0是您希望它們定位的左邊或右邊的位置。 0可以是px值,em,%等,具體取決於您的用戶界面以及您希望他們如何查看。

.formula-block { 
 
    height: 225px; 
 
    width: 200px; 
 
    border: 3px solid lighten(@dark-grey, 15%); 
 
    box-shadow: 1px 1px @grey; 
 
    margin-bottom: 1.5em; 
 
    margin-right: 1.5em; 
 
    position: relative; 
 
} 
 

 
a { 
 
    color: @off-white; 
 
    text-decoration: none; 
 
} 
 

 
p { 
 
    padding: 0px 5px 0px 5px; 
 
} 
 

 
button { 
 
    position: absolute; 
 
    bottom: 0.5em; 
 
} 
 

 
.button-success { 
 
    left: 0; 
 
} 
 

 
.button-warning { 
 
    right: 0; 
 
}
<div class="formula-block centered" id="587d6b07c89e7613846a3cf3"> 
 
    <h4 class="padded-top"> Vegan Vit. D</h4> 
 
    <p> fat soluble vitamin mix</p> 
 
    <button class="button-success pure-button"><a href="/formula/587d6b07c89e7613846a3cf3">Show</a></button> 
 
    <button class="button-warning pure-button">Delete</button> 
 
</div>

或者,您也可以進行絕對定位,它包裝的按鈕

.formula-block { 
 
    height: 225px; 
 
    width: 200px; 
 
    border: 3px solid lighten(@dark-grey, 15%); 
 
    box-shadow: 1px 1px @grey; 
 
    margin-bottom: 1.5em; 
 
    margin-right: 1.5em; 
 
    position: relative; 
 
} 
 

 
a { 
 
    color: @off-white; 
 
    text-decoration: none; 
 
} 
 

 
p { 
 
    padding: 0px 5px 0px 5px; 
 
} 
 

 
.buttons { 
 
    position: absolute; 
 
    bottom: 0.5em; 
 
    left: 0; right: 0; 
 
    text-align: center; 
 
}
<div class="formula-block centered" id="587d6b07c89e7613846a3cf3"> 
 
    <h4 class="padded-top"> Vegan Vit. D</h4> 
 
    <p> fat soluble vitamin mix</p> 
 
    <div class="buttons"> 
 
    <button class="button-success pure-button"><a href="/formula/587d6b07c89e7613846a3cf3">Show</a></button> 
 
    <button class="button-warning pure-button">Delete</button> 
 
    </div> 
 
</div>

+0

這個非常有用,謝謝。爲什麼絕對定位導致一個按鈕消失在另一個按鈕之後?這對我來說是個謎。 –

+0

@JonathanBechtel不客氣。絕對定位從DOM中的正常流程中移除元素,並且依靠基於具有'position:relative;'的父級的'top/left/right/bottom'來定位它們。如果沒有'top'或'bottom' CSS,那麼絕對定位的元素將以頁面上的「top」值顯示,並與之前的元素相關。沒有'left'或'right' CSS,它將一直顯示在左邊。而且,絕對定位元素之後的任何元素都將與它們重疊,因爲它們不再具有頁面上的佈局。 –

+0

@JonathanBechtel所以2個按鈕相互重疊,因爲它們都沒有左值,也沒有頁面佈局 - 它們與指定的底部值一直重疊到左邊(顯示元素的默認位置)。希望有所幫助。這有點棘手。 –