Bootstrap不等图像高度

时间:2018-04-25 07:32:26

标签: css twitter-bootstrap

我刚刚开始学习Bootstrap和一个月的CSS。我正在编写一个页面,我觉得我对像素和响应式设计了解不足。

所以我在一个部分中有三个图像(.demo)。第一个图像(.png)是668x522像素,另外两个(.jpeg)是548x445像素。我为每张图片使用col-md-4。我看到最高的图像最终比其他两个更短。你可以see my page here。请注意最左边的图像如何比其他两个图像更短,即使它具有更高的像素高度。我的问题是

  1. 为什么第一张图片的高度会缩短? (我预计它会是三者中最高的)。当我在Chrome中测量其他图像时,我发现它们的图像高度是345 x 280像素。如何确定渲染尺寸?

  2. 我希望这三个人都有相同的身高。我做了img.demo {height :280px ; }并且所有图像排列得很好,但我知道这不是响应。我试过img.demo { height :73% }(父容器col-md-4的宽度为380像素,因此img.demo的高度为73%应该给它280px高度。但是设置高度%以img.demo没有做任何事情它。为什么?

  3. 让所有图像都具有相同高度的响应方式是什么?

  4. HTML:

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Starter Template for Bootstrap</title>
        <!-- Bootstrap core CSS -->
        <link href="css/bootstrap.css" rel="stylesheet">
        <!-- Custom styles for this template -->
        <link href="css/style.css" rel="stylesheet">
      </head>
    
      <body>
        <nav class="navbar navbar-default navbar-fixed-top">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
                <a class="navbar-brand" href="index.html"><strong>GemniPro</strong></a>
            </div>
            <div id="navbar" class="collapse navbar-collapse">
              <ul class="nav navbar-nav">
                <li class="active"><a href="index.html">Home</a></li>
                <li><a href="about.html">About</a></li>
                <li><a href="contact.html">Contact</a></li>
              </ul>
            </div><!--/.nav-collapse -->
          </div>
        </nav>
    
        <section>
            <div class="jumbotron">
                 <div class = "container">
                    <div class = "row">
                         <div class = "col-md-6">
                                <h1>Capture <strong>Life</strong></h1>
                                <p>A fun and easy way to capture and share the moments you live for</p>
                                <a href= "#"><img class= "app-btn" src="img/icon_app_store.png"></a>
                                <a href= "#"><img class= "app-btn" src="img/icon_google_play.png"></a>
                            </div>
                         <div class = "col-md-6">
                            <img  class ="showcase" src = "img/site_phone.png" >
                        </div>
                    </div>
                 </div>     
            </div> 
        </section>
    
        <section id = "middle">
            <div class = "row">
                <div class ="container">
                    <div class = "col-md-4 ">
                        <img src  = "img/demo1.png" class="demo" >
                        <h3> Lorem Ipsum</h3>
                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lobortis tempus varius. Sed porttitor ex id lectus interdum tristique.</p>
                    </div>
                   <div class = "col-md-4 ">
                       <img src = "img/demo2.jpg" class="demo">
                       <h3> Lorem Ipsum</h3>
                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lobortis tempus varius. Sed porttitor ex id lectus interdum tristique.</p>
                    </div>
                   <div class = "col-md-4 demo">
                        <img src  = "img/demo3.jpg" class="demo">
                        <h3> Lorem Ipsum</h3>
                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lobortis tempus varius. Sed porttitor ex id lectus interdum tristique.</p>
                    </div>
                </div>
            </div>
        </section>
    
        <!-- Bootstrap core JavaScript
        ================================================== -->
        <!-- Placed at the end of the document so the pages load faster -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script src="js/bootstrap.js"></script>
        <script src="js/main.js"></script>
      </body>
    </html>
    

    CSS:

    body {
        margin-top: 50px;
    }
    
    strong {
        color:aqua ;
    }
    
    section#middle {
        padding:40px 0 40px 0;
    }
    
    .jumbotron {
        color :#fff;
        background: url("../img/site_showcase_bg.jpg");
        height:500px;
        overflow:hidden;
    }
    
    .jumbotron img.app-btn {
        height : 60px;
        width:40%
    
    } 
    
    .jumbotron h1 {
        margin-top:125px;
    }
    
    .jumbotron p {
        margin-bottom:50px;
    }
    
    .jumbotron img.showcase {
        width:75%;
    }
    
    #middle img.demo {
        width:100%;
        height:73%;
        border:solid 1px #ccc;
    }
    

2 个答案:

答案 0 :(得分:0)

第一张图片略小,因为它的宽高比与另外两张不同:

第一张图片的原始尺寸是:668x552 |纵横比= 1.210

另外两个是:548x445 |纵横比= 1.231

他们需要具有相同的宽高比,或者您可以将它们放在div中并将其显示为background-size: contain

答案 1 :(得分:0)

如果不应用任何宽度或高度,图像将保持其纵横比。如果您以宽高比大于原始宽高比的方式应用它们,图像会变形。

  1. 第一图像的高宽比大于高度和宽度相等的其他2个图像。宽度越大,高度越小。

  2. 参考父高度计算百分比高度。由于.demo的封闭容器没有高度,因此以百分比定义高度无效。

  3. 拍摄相同尺寸的图像。或

  4. .demo max-width: 100%; height: 280px; border: solid 1px #ccc;

    或者

    .demo max-width: 100%;

    所有3张图片的高度差别不大,因此可以安全地移除边框。 ;)