2017-01-16 19 views
0

私は、クリップされた画像を垂直方向にセンタリングしようとしています。画像は反応する。モバイルでは、画像はフルサイズで見栄えがよい。しかし、ブラウザがラップトップのために拡張されると、画像の下半分全体が切り取られ、上端が切り取られることはありません。レスポンシブにクリップされたイメージを垂直方向にセンタリングする方法は?

私はCSSの数字で遊んでみました。画像の幅が約800pxの場合、画像はよりよく表示されますが、すべてのクリッピングは最下部で行われます。

イメージを垂直に中央に配置し、応答性を保つためのアイデアは非常に高く評価されます。ありがとう!

HTML:

<div class="image-wrap" id="wrapper"> 
     <img src="cropped-img.jpg" alt="Oceanside Pier"> 
    </div> 

CSS:

.image-wrap { 
    max-height: 450px; 
    overflow: hidden; 
    max-width: 100%px;  
    -webkit-transition: max-width .5s ease-out; /* Saf3.2+, Chrome */ 
    -moz-transition: max-width .5s ease-out; /* FF4+ */ 
    -ms-transition: max-width .5s ease-out; /* IE10? */ 
    -o-transition: max-width .5s ease-out; /* Opera 10.5+ */ 
    transition: max-width .5s ease-out; 
} 

    .image-wrap img { 
     width: 100%; 
     -webkit-transition: margin-top .5s ease-out; /* Saf3.2+, Chrome */ 
     -moz-transition: margin-top .5s ease-out; /* FF4+ */ 
     -ms-transition: margin-top .5s ease-out; /* IE10? */ 
     -o-transition: margin-top .5s ease-out; /* Opera 10.5+ */ 
     transition: margin-top .5s ease-out; 
    } 

@media only screen and (min-width: 100%px) { 
    .image-wrap { max-width: 100%; } 
} 

はJavaScript:

$(document).ready(function() { 
  
    var imageHeight, wrapperHeight, overlap, container = $('.image-wrap');  
  
    function centerImage() { 
        imageHeight = container.find('img').height(); 
        wrapperHeight = container.height(); 
        overlap = (wrapperHeight - imageHeight)/2; 
        container.find('img').css('margin-top', overlap); 
    } 
      
    $(window).on("load resize", centerImage); 
      
    var el = document.getElementById('wrapper'); 
    if (el.addEventListener) {  
        el.addEventListener("webkitTransitionEnd", centerImage, false); // Webkit event 
        el.addEventListener("transitionend", centerImage, false); // FF event 
        el.addEventListener("oTransitionEnd", centerImage, false); // Opera event 
    } 
}); 
+0

イメージラップでは、最大幅:100%px; @mediaのみの画面と(最小幅:100%px)これらを両方とも100%に設定するとよいでしょう。 –

+0

ああ良い悲しみ。それを指摘してくれてありがとう。それは私の問題を解決しなかったが、確かに私の原因を助けていなかった。 –

答えて

0

私はあなたが何をしたい右のものを得る場合は、画像を中央にあなたのjsをコメントしようとすると、以下のスタイルを使用してください。

.image-wrap img { 

    object-fit:cover;//you can also try "contain" here 
    object-fit:center; 

    width: 100%; 
    -webkit-transition: margin-top .5s ease-out; /* Saf3.2+, Chrome */ 
    -moz-transition: margin-top .5s ease-out; /* FF4+ */ 
    -ms-transition: margin-top .5s ease-out; /* IE10? */ 
    -o-transition: margin-top .5s ease-out; /* Opera 10.5+ */ 
    transition: margin-top .5s ease-out; 

} 

http://caniuse.com/#search=object-fit

+0

MuhMarigoを働かせた1つの追加。あなたのCSSコードに 'max-height:450px;'を追加しなければなりませんでした。オブジェクトフィットをフォローアップするのは少し難しかったですが、それは良い解決策です。そして、それはすべてのJavaScriptなしで動作します。 –

関連する問題