2014-12-03 71 views
1

我正在使用自定義Leaflet標記,並將邊框添加到已被點擊過的標記。但是,添加標記會移動div元素。我有一個GIF動畫顯示我的意思:CSS border moving div

enter image description here

我要的是綠色圓圈留在原地加金色邊框時。我的css:

.marker-cluster-div { 
background-color: #00ff00; 
min-width: 40px; 
min-height: 40px; 
font-size: 12px; 
border-radius: 50%; 
color: black; 
font-weight: bold; 
text-align: center; 
vertical-align: middle; 
line-height: 40px; 
} 

.selectedMarker { 
border: 10px solid gold; 
border-radius: 50%; 
} 
+0

您沒有使用邊界徘徊的時候,但使用另一格,這是造成你這一點。 – 2014-12-03 09:38:54

回答

3

嘗試添加硬盤的box-shadow,而不是一個邊界

.selectedMarker { 
    box-shadow: 0 0 0 10px gold; 
    border-radius: 50%; 
} 

box-shadow不會更改元素在頁面上佔用的空間量。

或者,當您的div未懸停時添加透明邊框。

+0

這是我最後使用的那個。由於某些原因添加透明邊框對我來說無法正常工作:它增加了標記圖標的大小。該解決方案效果很好。 – ohyeah 2014-12-03 09:52:26

+0

很高興我能幫到:) – 2014-12-03 09:53:03

+1

請注意[box-shadow在IE8中不起作用](http://caniuse.com/#feat=css-boxshadow)。就我個人而言,我不認爲這是一個問題,但你知道。 – GolezTrol 2014-12-03 10:00:50

1

該位置基於div的左值和上值。它們包括邊界在內,因此div並不實際移動,但div(包括邊界)增長。

爲了防止這種情況,最簡單的解決辦法是將始終給它一個邊界,但作出這樣的邊框透明:

.marker-cluster-div { 
    border: 10px solid transparent; 
    border-radius: 50%; 
} 

.selectedMarker { 
    border-color: gold; 
} 
+1

我同意這一點。 – Roi 2014-12-03 09:43:16

1

您可以使用box-sizing: border-box來防止這種情況發生。

.marker-cluster-div { 
 
    background-color: #00ff00; 
 
    width: 40px; 
 
    height: 40px; 
 
    font-size: 12px; 
 
    border-radius: 50%; 
 
    color: black; 
 
    font-weight: bold; 
 
    text-align: center; 
 
    vertical-align: middle; 
 
    line-height: 40px; 
 
    box-sizing: border-box; 
 
    
 
} 
 
.marker-cluster-div:hover { 
 
    border: 10px solid gold; 
 
    border-radius: 50%; 
 
}
<div class="marker-cluster-div"></div>

+0

工作得很好,謝謝你的時間!但是,金色邊框放置在圓形div的頂部,而不是像在我發佈的gif中那樣。 – ohyeah 2014-12-03 09:53:27

+0

在這種情況下使用'border-box'會使內容區域更小(或者甚至太小) – 2014-12-03 09:54:47

+0

@MichałDudak - 是的,我知道,順便說一句,您的解決方案非常棒! – 2014-12-03 09:55:42