2016-11-29 3 views
2

У меня есть список различных предоставляемых услуг, каждая служба имеет изображение, заголовок и описание. Я настроил его так, чтобы изображение масштабировалось до размера 1.3x при наведении мыши. Масштабирование работает, но при этом игнорирует границы родителя.Как предотвратить масштабирование изображения вне границ родителя?

Я захватил GIF, как он выглядит в действии.

Example of image scaling outside of parent's borders

Вот код, я работаю с.

.cleaningservices { 
 
    max-width: 250px; 
 
    max-height: 250px; 
 

 
} 
 

 
    /* Default state of the image */ 
 
    .hover01 img { 
 
     -webkit-transform: scale(1); 
 
     transform: scale(1); 
 
     -webkit-transition: .3s ease-in-out; 
 
     transition: .3s ease-in-out; 
 
    } 
 

 
    /* Scale the image to 1.3 it's size on mouse hover */ 
 
    .hover01:hover img { 
 
     -webkit-transform: scale(1.3); 
 
     transform: scale(1.3); 
 
    }
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet"/> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/css/bootstrap-select.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="row"> 
 
    <div class="cleaningservices"> 
 
    <div class="col-sm-6 col-md-4"> 
 
     <div class="thumbnail hover01"> 
 
     <img src="https://bosworthco.com/wp-content/uploads/2016/10/cleaning-268134_960_720.jpg" alt="deep house cleaning"> 
 
     <div class="caption"> 
 
      <h3>Deep Cleaning</h3> 
 
      <p>Usually, on our first visit we will most likely have to complete a deep cleaning. It is a far more intensive cleaning that our regular cleaning. After first deep cleaning we will continue with one of our regularly scheduled cleanings below.</p> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

Какие изменения я должен сделать, чтобы сделать изображение масштаба внутри границ родителя при наведении курсора мыши?

+2

'overflow: hidden;' на родительском? –

+0

Уменьшить коэффициент масштабирования. – connexo

+0

Дайте переполнение: скрыто; для родителя. –

ответ

1

вы можете добавить изображение в DIV и дать Див overflow:hidden;

.hover01 img { 
 
    -webkit-transform: scale(1); 
 
    transform: scale(1); 
 
    -webkit-transition: .3s ease-in-out; 
 
    transition: .3s ease-in-out; 
 
    width:100%; 
 
} 
 
.hover01:hover img { 
 
    -webkit-transform: scale(1.3); 
 
    transform: scale(1.3); 
 
} 
 

 
.img-parent{ 
 
    overflow:hidden; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet"/> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/css/bootstrap-select.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="row"> 
 
    <div class="cleaningservices"> 
 
     <div class="col-sm-6 col-md-4"> 
 
\t <div class="thumbnail hover01"> 
 
\t  <div class="img-parent"> 
 
\t   <img src="http://fiusms.fiu.edu/wp-content/uploads/Residential-Cleaning-Watauga-TX.jpg" alt="deep house cleaning"> 
 
      </div> 
 
\t  <div class="caption"> 
 
\t \t <h3>Deep Cleaning</h3> 
 
\t \t <p>Usually, on our first visit we will most likely have to complete a deep cleaning. It is a far more intensive cleaning that our regular cleaning. After first deep cleaning we will continue with one of our regularly scheduled cleanings below.</p> 
 
\t  </div> 
 
\t </div> 
 
     </div> 
 
    </div> 
 
</div>

+0

Это, вероятно, самый чистый способ сделать это, так как он также избегает масштабирования над последующим текстом. Я бы назвал класс '.noverflow'. – connexo

+0

yes..you нужен другой div, чтобы содержать изображение – Chiller

+0

Спасибо за ваш ответ, это действительно помогло мне достичь того, что я хотел. – raimond

1

Создайте контейнер img, на котором вы установили overflow: hidden;. Я добавил фоновый цвет на body, поэтому вы видите, что он работает.

body { 
 
    background-color: #f0f0f0 !important; 
 
    padding: 50px; 
 
} 
 
.noverflow { 
 
    overflow: hidden; 
 
} 
 
.thumbnail { 
 
    background-color: #fff; 
 
} 
 
.hover01 img { 
 
    -webkit-transform: scale(1); 
 
    transform: scale(1); 
 
    -webkit-transition: .3s ease-in-out; 
 
    transition: .3s ease-in-out; 
 
} 
 
.hover01:hover img { 
 
    -webkit-transform: scale(1.1); 
 
    transform: scale(1.1); 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet" /> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/css/bootstrap-select.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="row"> 
 
    <div class="cleaningservices"> 
 
    <div class="col-sm-6 col-md-4"> 
 
     <div class="thumbnail hover01"> 
 
     <div class="noverflow"><img src="http://fiusms.fiu.edu/wp-content/uploads/Residential-Cleaning-Watauga-TX.jpg" alt="deep house cleaning"></div> 
 
     <div class="caption"> 
 
      <h3>Deep Cleaning</h3> 
 
      <p>Usually, on our first visit we will most likely have to complete a deep cleaning. It is a far more intensive cleaning that our regular cleaning. After first deep cleaning we will continue with one of our regularly scheduled cleanings below.</p> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

Это действительно работает, спасибо за ваш ответ. – raimond

1

просто использовать overflow: hidden;

.hover01 img { 
    -webkit-transform: scale(1); 
    transform: scale(1); 
    -webkit-transition: .3s ease-in-out; 
    transition: .3s ease-in-out; 
    overflow: hidden; 
}