web-dev-qa-db-ja.com

モバイルとタブレットの画像ストレッチの問題

問題:モバイル版では、画像がポートレートモードで伸びています。以下に示すように、圧縮されているように見えます。

Portrait Mode

横向きモードでは、画像は引き伸ばされたようには見えず、デスクトップバージョンのサイトとまったく同じように見えます。

Landscape Mode

bootstrapを使用していますが、画像のクラスimg-responseがあり、機能しません。

以下は私が書いたCSSです。 background-size:containやその他のアプローチを設定しようとしましたが、望ましい結果が得られませんでした。このプロジェクトでは、Coldfusion and Mura(CMS)を使用しています。

[〜#〜]更新[〜#〜]

次のcssは、応答性を高めるために使用されています。

@media (min-width: 1024px) #homepage .carousel .item img {
  width:100%;
  height:auto;
}
media (min-width:769px) and (max-width:980px) {
  #homepage .carousel .item img {
    max-width: 100%;
    min-height: 100%;
    height: auto;
    margin-top: 154px !important;
  }
}
@media (max-width: 751px) and (orientation: landscape) {
  .override-hidden-xs1 {
    display: block;
  }
  .carousel-inner {
    width: 100% !important;
  }
  .fixNext {
    margin-right: 0px;
  }
  .carouselCaption {
    margin-top: 120px !important;
  }
  .h4Font {
    font-size: 16px !important;
  }
  .upcoming-events-image {
    max-width: 180px;
    max-height: 180px;
    width: 22% !important;
    margin-left: 340px !important;
  }
  .image-margin-top {
    margin-top: 170px !important;
    display: inline-block;
  }
}
@media (max-width: 767px) {
  #homepage .carousel .item {
    height: 200px;
    margin-top: 241px;
  }
  #homepage .carousel .item img {
    max-width: 100%;
    height: auto;
    display: block;
  }
}
@media (max-width: 767px) and (orientation: landscape) {
  #homepage .carousel .item {
    height: 200px;
    margin-top: 311px;
  }
}
@media (min-width: 768px) and (max-width: 980px) {
  .company-logo {
    width: 400px;
  }
  #homepage .carousel .item img {
    /*max-width: 1200px;*/
    max-width: 100%;
    min-height: 100%;
    padding-top: 162px;
  }
  #homepage .carousel .carousel-caption {
    margin-left: 64px;
  }
  .image-margin-top {
    margin-top: 57px !important;
  }
  .changePosition {
    margin-top: -193px !important;
  }
}
@media (min-width: 920px) {
  .company-logo {
    width: 400px;
  }
  #homepage .carousel .item img {
    /*max-width: 1200px;*/
    max-width: 100%;
    min-height: 100%;
  }
}

以下は、CMSから画像を呼び出すcoldfusionコードです。

<div class="row carousel-inner padding-topImage">
  <cfset local.iterator.reset()>
    <cfset local.idx=0>
      <cfloop condition="local.iterator.hasNext()">
        <cfset local.item=iterator.next()>
          <cfif ListFindNoCase( 'jpg,jpeg,gif,png', ListLast(local.item.getImageURL(), '.'))>
            <div class="row item img-responsive<cfif local.idx eq 0> active</cfif>">
              <img src="#local.item.getImageURL(argumentCollection=local.imageArgs)#" alt="#HTMLEditFormat(local.item.getTitle())#">
              <cfif arguments.showCaption>
                <div class="container">
                  <div class="carousel-caption carousel-caption1">
                    <div>
                      <!--- <h3><a href="#local.item.getURL()#">#HTMLEditFormat(local.item.getTitle())#</a></h3> --->
                      <div class="visible-xs">
                        <!---<h2>#HTMLEditFormat(local.item.getTitle())#</h2>--->
                      </div>
                      <div class="hidden-xs">#local.item.getSummary()#
                        <!--- #local.item.getBody()# --->
                        <!---<p><a class="btn btn-larg btn-primary" href="#local.item.getURL()#">Read More</a></p>--->
                      </div>
                      <!---<div class="override-hidden-xs1 carouselCaption" style="color:##000"><span class="h4Font">#HTMLEditFormat(local.item.getTitle())#</span>
                                                </div>--->

                    </div>
                  </div>
                </div>
              </cfif>
            </div>
            <cfset local.idx++>
          </cfif>
      </cfloop>
</div>

[〜#〜]更新[〜#〜]

これが私が抱えている問題ですが、それを回避することができません。

高さが固定されているので、高さを試してみました:autoですが、カルーセル内の画像が消えます。

背景の高さが画面サイズに基づいてサイズ変更される画像に依存するように、CSSを変更するにはどうすればよいですか。

変更されたcssは次のとおりです。

@media (max-width: 747px){
        #homepage .carousel .item img{
                margin-top: 71px !important;
                max-width:0px;
                min-height:0%;
        }/*
        #homepage .carousel .item {
                height:180px !important;
        }*/
        .carousel-inner {
                height:auto;
        }
}
@media (min-width: 748px){
        #homepage .carousel .item img{
                max-width:0px;
                min-height:0%;
        }/*
        #homepage .carousel .item {
                height:180px !important;
        }*/
}

@media (max-width: 1024px) and (min-width: 768px){
        #homepage .carousel .item {
                width: 100% !important;
                /*margin-top: 20px !important;*/
                height:396px !important;
        }
}

/*@media (min-width:992px) and (max-width:1363px){
        #homepage .carousel .item img {
                /* width: 100% !important; 
                margin-top: 15px !important;
                max-height: auto;
                max-height: 100%;
                min-height: 80%;
        }
}

@media (min-width:1024px) and (max-width:1255px){

}*/

@media (min-width: 1024px){
        #homepage .carousel .item img {
                /* width: 100% !important; */
                margin-top: 15px !important;
                max-height: auto;
                max-height: 100%;
                min-height: 80%;
        }
}
@media (max-width:1263px) and (min-width:1024px){
        #homepage .carousel .item{ height:500px !important; }
                
        #homepage .carousel .carousel-caption { 
                left: 100px; 
                top: 80px;
                width: 500px;
        }
}

@media (min-width:1264px) and (max-width:1363px){
        #homepage .carousel .item{ height:502px !important; }
                #homepage .carousel .carousel-caption { 
                left: 99px;
                top: 100px;
        }
}

@media (min-width:1364px) and (max-width:1641px){
        #homepage .carousel .item{ height:540px !important; }
        
        #homepage .carousel .carousel-caption { 
                left: 170px; 
                top: 120px;
                width: 500px;
        }
                #homepage .carousel .carousel-caption { 
                left: 170px; 
                top: 80px;
                width: 500px;
        }
}

@media (min-width:1642px){
        #homepage .carousel .item{ height:650px !important; }
        
        #homepage .carousel .carousel-caption { 
                left: 170px; 
                top: 120px;
                width: 500px;
        }
}
<div class="row carousel-inner padding-topImage">
                                                
<div class="row item myclass">

<img src="/Regal-en-us/cache/file/90A5069B-155D-0201-11BF135B13F69E9A_W1280_H500.jpg" alt="Real People, Real Solutions See how we've helped make a difference in the lives of our members.">
                                                                        
        <div class="container">
                <div class="carousel-caption carousel-caption1">
                        <div>
                        <div class="visible-xs"></div>
                                <div class="hidden-xs"><h1 class="titleSlide"><br>
        Real People,<br>
        Real Solutions</h1>

<p class="content1">See how we’ve helped make a difference in the lives of our members.</p>

<p style="font-size: 12px; color: #ffffff;">&nbsp;</p>

<p><a class="btn btn-info1 styleText btn-primary" href="/index.cfm/doctor-Finder/" role="button">Read More</a></p>
<!---<p style="font-size: 12px; color: #ffffff;">&nbsp;</p>

<p><a class="btn btn-info" href="/index.cfm/doctor-Finder/" role="button">Read More</a></p>--->
                                                                                                        
                                                                                                        
        </div>
                                                
                                                
        </div>
                </div>
        </div>
                                                                        
        </div>
                                                                
<div class="row item myclass">

        <img src="/Regal-en-us/cache/file/9CFFC7AA-155D-0201-119470C3C01460AE_W1280_H500.jpg" alt="Need an Urgent Care Center? There is one right in your neighborhood – and we will help you find it.">
                                                                        
<div class="container">
        <div class="carousel-caption carousel-caption1">
                        <div>
                <div class="visible-xs"></div>
                                <div class="hidden-xs"><h1 class="titleSlide"><br>
        <h1>Need an Urgent Care Center?</h1>

<p class="content1">There is one right in your neighborhood –<br>
        and we will help you find it.</p>

<div class="embeddedContent oembed-provider-">&nbsp;</div>
<!---<p style="font-size: 12px; color: #ffffff;">&nbsp;</p>

<p><a class="btn btn-info1 styleText" href="http://oc2-web03/index.cfm/doctor-Finder/" role="button">Find an Urgent Care</a></p>---><!---<p style="font-size: 12px; color: #686868;">&nbsp;</p>--->

<p><a class="btn btn-info1 slideText btn-primary urgentButton" href="/index.cfm/urgent-care-Finder/" role="button">Find an Urgent Care</a></p>
                                                                                                        
</div>
</div>
        </div>
        </div>
                                                                        
                </div>
                                                                
        <div class="row item myclass active">

        <img src="/Regal-en-us/cache/file/9CFD4EC1-155D-0201-11C0E45BAE92654E_W1280_H500.jpg" alt="Looking for a Doctor? We have just the right one for you.">
                                                                        
        <div class="container">
        <div class="carousel-caption carousel-caption1">
        <div>
        <div class="visible-xs"></div>
                <div class="hidden-xs"><h1 class="titleSlide"><br>
        Looking for a doctor?</h1>

<p class="content1">We have just the right one for you.</p>
<!---<p style="font-size: 12px; color: #ffffff;">&nbsp;</p>

<p><a class="btn btn-info1 styleText" href="/index.cfm/doctor-Finder/" role="button">Read More\\\</a></p>--->

<p style="font-size: 12px; color: #686868;">&nbsp;</p>

<p><a class="btn btn-info1 slideText btn-primary" href="/index.cfm/doctor-Finder/" role="button">Find a Doctor Now</a></p>
                                                                                                        
                                                                                                        
</div>
                                                
                                                
</div>
        </div>
                </div>
                                                                        
        </div>
                                                                
        <div class="row item myclass">

        <img src="/Regal-en-us/cache/file/22E66EFF-155D-0201-11F1D4090927E676_W1280_H500.jpg" alt="Snow Machines Run as Winter Winds Down">
                                                                        
                                                                                <div class="container">
                                                                                        <div class="carousel-caption carousel-caption1">
                                                                                            <div>
                                                                                                
                                                                                                <div class="visible-xs"></div>
                                                                                                        <div class="hidden-xs"><p>Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl.</p>
                                                                                                        
                                                                                                        
                                                                                                </div>
                                                
                                                
                                                                                                </div>
                                                                                        </div>
                                                                                </div>
                                                                        
                                                                </div>
                                                                
                                        </div>

高さが固定されているため、モバイル版とタブレット版では次のことが発生しています。問題の原因となっているアイテムクラスを削除しようとしましたが、前述のように、カルーセルが消えます。

どんな助けでもいただければ幸いです enter image description here

enter image description here

10
Roberto Flores

経験則として、カルーセルコンポーネントの高さを指定したり、それらをautoに設定したりしないでください。ストレッチの原因は、これらのコンポーネントの[max/min]-height: 100%です。

.carousel-inner {
   height:auto;
  }

.carousel .item {
    height: auto;
}

.carousel .item img {
    height:auto;

}

この概念は、カルーセルだけに適用されるわけではありません。クラスを設計するときは、高さをそのままにするか、自動にしてください。

例えば:

.give-me-the-bounty
{
    width: 100%;
    height:auto;
}
7
Shadi Namrouti

高さまたは幅のいずれかを設定しますが、両方は設定しません。画像はそれ自体を拡大縮小し、アスペクト比を保持します

4
joshpj1

このコードを追加してみてください:

@media (max-width: 767px)
#homepage .carousel .item img {

object-fit: cover;

}
2
Ibrahim

わかりました。他のアプローチを忘れて、インラインスタイルを使用してください。

<div style="background-image: url('#local.item.getImageURL(argumentCollection=local.imageArgs)#')"></div>

そしてあなたのCSSであなたが望むどんなスタイルでも使う

2
João Vilaça

あなたがしなければならないのは、画像の幅を設定し、画像にそれを自分で修正させ、比率を維持させることです。

2
fsfh60