【问题标题】:Keep image ratio while resizing browser and thus resizing the image tag在调整浏览器大小时保持图像比例,从而调整图像标签的大小
【发布时间】:2014-12-05 22:59:51
【问题描述】:

我有一个宽度为 19%、高度为 200 像素的图像标签。 因此,在调整浏览器大小时,该图像标签的纵横比正在发生变化。

我希望图像始终覆盖图像标签:有点像 width:100%;和 height:100%;,但保持图像 src 的纵横比。有点像“背景封面”。因此,在调整浏览器大小时,图像标签的“背景颜色”根本不可见。 我认为 div 导致我无法使用 0.5 边距的问题。

<div class='view view-tenth'>
<img src='http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg' class='imgpreview' />
<div class='mask'>
<h2>Title</h2>
<p>description</p>
<a href='#' class='info'>Read More</a>
</div>



.view {
   width: 19%;
   height: 200px;
   margin: 0.5%;
   float: left;
   overflow: hidden;
   position: relative;
   text-align: center;
   cursor: default;
   background: #000 no-repeat center center;
   background-size:cover;
}
.view .mask,.view .content {
   width: 100%;
   height: 200px;
   position: absolute;
   overflow: hidden;
   top: 0;
   left: 0;
}
.view img {
   display: block;
   position: relative;
   width:100%;
   height:auto;
   margin: 0.5%;
 }
.view h2 {
   text-transform: uppercase;
   color: #fff;
   text-align: center;
   position: relative;
   font-size: 17px;
   padding: 10px;
   background: rgba(0, 0, 0, 0.8);
   margin: 20px 0 0 0;
}
.view p {
   font-family: Georgia, serif;
   font-style: italic;
   font-size: 12px;
   position: relative;
   color: #fff;
   padding: 10px 20px 20px;
   text-align: center;
}
.view a.info {
   display: inline-block;
   text-decoration: none;
   padding: 7px 14px;
   background: #000;
   color: #fff;
   text-transform: uppercase;
   -webkit-box-shadow: 0 0 1px #000;
   -moz-box-shadow: 0 0 1px #000;
   box-shadow: 0 0 1px #000;
}
.view a.info: hover {
   -webkit-box-shadow: 0 0 5px #000;
   -moz-box-shadow: 0 0 5px #000;
   box-shadow: 0 0 5px #000;
}




.view-tenth img {
   -webkit-transform: scaleY(1);
   -moz-transform: scaleY(1);
   -o-transform: scaleY(1);
   -ms-transform: scaleY(1);
   transform: scaleY(1);
   -webkit-transition: all 0.7s ease-in-out;
   -moz-transition: all 0.7s ease-in-out;
   -o-transition: all 0.7s ease-in-out;
   -ms-transition: all 0.7s ease-in-out;
   transition: all 0.7s ease-in-out;
}
.view-tenth .mask {
   /*
   donkerblauw background-color: rgba(0, 101, 147, 0.3);
   lichtblauw background-color: rgba(31, 183, 191, 0.3);
   */
   background-color: rgba(255, 255, 255, 0.3);
   -webkit-transition: all 0.5s linear;
   -moz-transition: all 0.5s linear;
   -o-transition: all 0.5s linear;
   -ms-transition: all 0.5s linear;
   transition: all 0.5s linear;
   -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=0)";
   filter: alpha(opacity=0);
   opacity: 0;
}
.view-tenth h2 {
   border-bottom: 1px solid rgba(0, 0, 0, 0.3);
   background: transparent;
   margin: 20px 40px 0px 40px;
   -webkit-transform: scale(0);
   -moz-transform: scale(0);
   -o-transform: scale(0);
   -ms-transform: scale(0);
   transform: scale(0);
   color: #333;
   -webkit-transition: all 0.5s linear;
   -moz-transition: all 0.5s linear;
   -o-transition: all 0.5s linear;
   -ms-transition: all 0.5s linear;
   transition: all 0.5s linear;
   -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=0)";
   filter: alpha(opacity=0);
   opacity: 0;
}
.view-tenth p {
   color: #333;
   -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=0)";
   filter: alpha(opacity=0);
   opacity: 0;
   -webkit-transform: scale(0);
   -moz-transform: scale(0);
   -o-transform: scale(0);
   -ms-transform: scale(0);
   transform: scale(0);
   -webkit-transition: all 0.5s linear;
   -moz-transition: all 0.5s linear;
   -o-transition: all 0.5s linear;
   -ms-transition: all 0.5s linear;
   transition: all 0.5s linear;
}
.view-tenth a.info {
   -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=0)";
   filter: alpha(opacity=0);
   opacity: 0;
   -webkit-transform: scale(0);
   -moz-transform: scale(0);
   -o-transform: scale(0);
   -ms-transform: scale(0);
   transform: scale(0);
   -webkit-transition: all 0.5s linear;
   -moz-transition: all 0.5s linear;
   -o-transition: all 0.5s linear;
   -ms-transition: all 0.5s linear;
   transition: all 0.5s linear;
}
.view-tenth:hover img {
   -webkit-transform: scale(10);
   -moz-transform: scale(10);
   -o-transform: scale(10);
   -ms-transform: scale(10);
   transform: scale(10);
   -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=0)";
   filter: alpha(opacity=0);
   opacity: 0;
}
.view-tenth:hover .mask {
   -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=100)";
   filter: alpha(opacity=100);
   opacity: 1;
}
.view-tenth:hover h2,.view-tenth:hover p,.view-tenth:hover a.info {
   -webkit-transform: scale(1);
   -moz-transform: scale(1);
   -o-transform: scale(1);
   -ms-transform: scale(1);
   transform: scale(1);
   -ms-filter: "progid: DXImageTransform.Microsoft.Alpha(Opacity=100)";
   filter: alpha(opacity=100);
   opacity: 1;
}

小提琴:http://jsfiddle.net/3122mts4/10/

【问题讨论】:

    标签: jquery html css


    【解决方案1】:

    我认为

    height: auto;
    

    在你的 CSS 声明中可以做你想做的事。

    更新小提琴:http://jsfiddle.net/3122mts4/4/

    【讨论】:

    • 对不起,刚刚更新了帖子和小提琴,意识到 div 与图像有很大不同。
    【解决方案2】:

    如果您不提供 height 属性,那么它将自动获取高度。当您为任何 img 标签指定高度时,图像也会失真,因此除非某些罕见情况,否则切勿为图像提供固定高度。只需提供 width 属性即可。

    img{
       width: 19%;
       margin: 0.5%;
        background-color:black;
       }
    &lt;img src="http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg"&gt;&lt;img src="http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg"&gt;&lt;img src="http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg"&gt;&lt;img src="http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg"&gt;&lt;img src="http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg"&gt;

    【讨论】:

      【解决方案3】:

      如果要保存height,请将img 更改为div 块与background-image

      HTML

      <div style="background-image: url('http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg');"></div>
      <div style="background-image: url('http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg');"></div>
      <div style="background-image: url('http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg');"></div>
      <div style="background-image: url('http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg');"></div>
      <div style="background-image: url('http://doc.jsfiddle.net/_downloads/jsfiddle-logo-white.svg');"></div>
      

      CSS

      img{
         width: 19%;
         height: 200px;
         margin: 0.5%;
         background-color:black;
         background-size: cover;
      }
      div
      {
          width:19%;
          height:200px;
          margin:0.5%;
          background-color:black;
          background-size: cover;
          display:inline-block;
          background-position:50% 50%;
      }
      

      JSFiddle

      【讨论】:

        猜你喜欢
        • 2012-02-15
        • 2019-06-06
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 2011-10-04
        • 2012-10-25
        • 2015-11-08
        • 1970-01-01
        相关资源
        最近更新 更多