LoginSignup
10
7

More than 5 years have passed since last update.

【CSS】ブラウザを狭めた時に、画像の中心を固定したまま両側から非表示にしていく実装

Last updated at Posted at 2018-05-30

このぬこを縮めた時に、
kjbj-min-min.png

ぬこを中心にキープしたい。
スクリーンショット 2018-05-30 23.48-min.png

普通にCSSを指定してブラウザを狭めると以下のようになります。
スクリーンショット 2018-05-30 23 (1)-min.png

これは画像の基点が画像の左端(下の画像の赤線)!
にあるからです。基点は常に固定されたまま画像が非表示になっていくので、右端だけが消えてゆきます。
JJJJ-min-min.png

基点が左端なら、基点を中央に動かせばいいじゃない。
スクリーンショット 2018-05-30 23-min-1.png

基点は固定されるため、基点に対して両側から非表示になってくれるはず、
ということで、position:absoluteと、left:50% で画像の位置を右に、画像の幅の50%だけずらします。

こうすると当然画像の右半分はブラウザの外側に追いやられてしまうので、ここでネガティブマージンを使って、”画像の実体は右にずらしたまま” 表示されるイメージのみ50%左に戻してあげます。
スクリーンショット 2018-05-31 1.09.41.png

これで完成。
以下、コードです。

<head>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <div class="cat-image">
    <img src="/Users/yu/nuko.jpg" alt="">
</body>
.cat-image {
  position:relative;
  width: 100%;
  height:670px;
}
.cat-image img {
  position:absolute;
/* ▼画像幅の半分、右に動かす*/
  left:50%;
  height:670px;
  width: 1200px;
/* ▼画像の幅の半分だけ、ネガティブマージンを設定*/
  margin-left:-600px;
}

筆者は、サイト内で地図を画像で表示する時に使いました。ブラウザ幅を狭めても画像の縦横両方が縮んでいくのではなく、画像のサイドのみが非表示になるため、ある地点を中央に固定して表示するのにぴったりです。

参考サイト(悩んでいたので非常に助かりました)
http://www.coolwebwindow.com/csstips/csstechnic/templatelayout/000347.php

10
7
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7