2017-12-07 44 views
0

私はHTMLのウェブサイトを作っています。私は背景画像として地図を持っており、地図上にボタンが必要です。このように: This is how it should look likeHTMLの位置= center-10px

しかし、私は、私のサイトをスケーリング起動したときに、これが起こる:enter image description here 私は問題が何であるかを知っている:画像の位置は、center-X pxcenter-Y pxある、ないmargin: 40% 0px 0px 20%。しかし、それを行う方法? position: absolute; left: 50%-30px; top: 50%-83pxは機能しません。

+0

I)は、(あなたはあなたがCALCを使用することができます –

+3

これらのdiv内に固定イメージを保持すべきだと思います。 : 'left:calc(50% - 30px);' https://developer.mozilla.org/en-US/docs/Web/CSS/calcを参照してください。 –

+0

[mcve]を投稿すると正確な問題が表示されます – j08691

答えて

1

あなたはcalc()より良いサポートを持っている負のマージンを使用することができます。

position: absolute; 
left: 50%; 
top: 50%; 
margin-top: -83px; 
margin-left: -30px; 

すでに余白がある場合は、そこからマイナス値を差し引いても構いません。ただし、パーセントまたはemのものとして定義されている場合は、それに応じて変換する必要があります。

+0

彼はすでにマージンが定義されていると思うので、コメントで述べたようにcalcを使います。 –

-2

あなたは画像を背景画像(背景画像としてマップでのdivコンテナ)からの相対になりたいでしょう:

position: relative; left: 30px; top: 83px 
+2

あなたは何をしましたか、あなたは説明できますか?あなたは無効なCSSを使用しています –

+0

私は例を挙げています。あなたは、背景のイメージが文字通り 'コンテナ' divの背景イメージを必要とするでしょう。次に、左と上を使用して、キャプション画像を背景画像に相対的に配置することができます。 –

0

絶対的なマージン(これはうまくいく)を使用している人がいますが、transform: translateの実装では別のアプローチがあります。

以下の例では、内側のimgは常にあなたのニーズに合うと思われるdivを含む中央に配置されています。私はボックスにランダムなアニメーションをいくつか追加して、この位置付けの効果を確認することもできます。

setInterval(randomAnimation, 500); 
 

 
function randomAnimation() { 
 
    var random = Math.floor(Math.random() * (4 - 0)); 
 
    if (random == 0) 
 
    $(".box").animate({ 
 
     top: "+=50" 
 
    }); 
 
    else if (random == 1) 
 
    $(".box").animate({ 
 
     left: "+=50" 
 
    }); 
 
    else if (random == 2) 
 
    $(".box").animate({ 
 
     top: "-=50" 
 
    }); 
 
    else 
 
    $(".box").animate({ 
 
     height: "+=50" 
 
    }); 
 
}
.box { 
 
    position: relative; 
 
    width: 150px; 
 
    height: 100px; 
 
    background-image: url(http://via.placeholder.com/150x100/ff0000/ffffff) 
 
} 
 

 
img { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="box"> 
 
    <img src="http://via.placeholder.com/50x50" /> 
 
</div>

関連する問題