Блоки с товарами, 2 фото, при наведении скрываем первое фото и показываем второе, проблема с адаптацией, как решить?
Сделал блоки с товарами, так же сделал фишку простую, при наведении на фото, первая фотка скрывается и показывается вторая. Вторая фотка прячется под первую.
О проблеме, как сделать чтобы фото резиновое было, у блока под классом imgss, где две фотки, вторая под первой прячется, присваивается размер, width: 100%; height: 270px;, я как только не пробовал и height: 100%; и height: auto; но так фото не видно. Видно фото если прописан размер блока у класса imgss, но так не адаптивно, как быть?
Фото резиновое если поставить width: 100%, но без height: 270px оно не видно будет, и выходит так, что у блока с классом imgss где фото, height фиксирован и мешает адаптации, вообщем чтоб понять смотрите пример.
Можно через грид, но я пока не использую грид, может не везде работать.
.alltov{
margin: 40px 0 -30px -40px;
}
.tov > div{
-webkit-box-flex: 0;
-ms-flex: 0 0 calc(25% - 40px);
flex: 0 0 calc(25% - 40px);
margin: 0 0 30px 40px;
display: block;
text-align: center;
position:relative;
}
.tov img {
width: 100%;
}
.tov h2 {
height: 60px;
margin: 0 0 15px 0;
padding: 0 20px 0 20px;
line-height:16px;
font-weight: 600;
hyphens: manual !important;
color: #282725;
}
.tov p {
color: #282725;
position: absolute;
bottom:0;
left:0;
right:0;
}
.tov p b{
font-size: 16px;
font-weight: 600;
color: #7b7f88;
}
.tov span{
font-size: 14px;
font-weight: 400;
}
.imgss {
position: relative;
width: 100%;
height: 270px;
display: block
}
.imgss img{
position: absolute;
left:0;
}
.imgss img,
.imgss img:last-child:hover {
-webkit-transition: opacity 1s ease-in-out;
-moz-transition: opacity 1s ease-in-out;
-o-transition: opacity 1s ease-in-out;
transition: opacity 1s ease-in-out;
}
.imgss img:last-child:hover {
opacity: 0;
}
.wr{
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.alltov,
.tov h2{
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.tov h2{
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
/* нормализтор */
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;}
html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}
audio,canvas,video{display:inline-block;}
audio:not([controls]){display:none;height:0;}
[hidden]{display:none;}
a{outline:none; text-decoration: none;}
abbr[title]{border-bottom:1px dotted;}
pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
sub,sup{font-size:75%;line-height:0;position:relative;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em;}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}
button,input{line-height:normal;}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
button[disabled],input[disabled]{cursor:default;}
input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;}
input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box;}
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
textarea{overflow:auto;vertical-align:top;}
input:focus,button:focus,select:focus,textarea:focus{outline:none;}
table{border-collapse:collapse;border-spacing:0;}
:focus::-webkit-input-placeholder {color: transparent;}
:focus::-moz-placeholder {color: transparent;}
:focus:-moz-placeholder {color: transparent;}
:focus:-ms-input-placeholder {color: transparent;}
select{cursor:pointer;}
img {
vertical-align:bottom;
}
*{
padding: 0;
margin: 0;
}
.cl:after {
content: "";
display: table;
clear: both;
}
html{height:100%;}
* html body{height:100%;}
<div class="alltov tov wr">
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
</div>
Ответы (2 шт):
Вообщем искал и нашел на одном сайте решение, выдернул его и переделал, без js и без грида.
.alltov{
margin: 40px 0 -30px -40px;
}
.tov > div{
-webkit-box-flex: 0;
-ms-flex: 0 0 calc(25% - 40px);
flex: 0 0 calc(25% - 40px);
margin: 0 0 30px 40px;
display: block;
text-align: center;
position:relative;
}
.tov img {
width: 100%;
}
.tov h2 {
height: 60px;
margin: 0 0 15px 0;
padding: 0 20px 0 20px;
line-height:16px;
font-weight: 600;
hyphens: manual !important;
color: #282725;
}
.tov p {
color: #282725;
position: absolute;
bottom:0;
left:0;
right:0;
}
.tov p b{
font-size: 16px;
font-weight: 600;
color: #7b7f88;
}
.tov span{
font-size: 14px;
font-weight: 400;
}
.imgss {
display: block;
position: relative;
}
.imgss img {
display: block;
width: 100%;
}
.imgss img:first-child {
display: block;
position: relative;
z-index: 1;
}
.imgss img:last-child {
display: block;
position: absolute;
z-index: 5;
opacity: 0;
-webkit-transition: opacity 0.3s;
-o-transition: opacity 0.3s;
transition: opacity 0.3s;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.imgss:hover img:last-child {
opacity: 1;
}
.wr{
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.alltov,
.tov h2{
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.tov h2{
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
/* нормализтор */
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;}
html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}
audio,canvas,video{display:inline-block;}
audio:not([controls]){display:none;height:0;}
[hidden]{display:none;}
a{outline:none; text-decoration: none;}
abbr[title]{border-bottom:1px dotted;}
pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
sub,sup{font-size:75%;line-height:0;position:relative;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em;}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}
button,input{line-height:normal;}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}
button[disabled],input[disabled]{cursor:default;}
input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;}
input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box;}
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
textarea{overflow:auto;vertical-align:top;}
input:focus,button:focus,select:focus,textarea:focus{outline:none;}
table{border-collapse:collapse;border-spacing:0;}
:focus::-webkit-input-placeholder {color: transparent;}
:focus::-moz-placeholder {color: transparent;}
:focus:-moz-placeholder {color: transparent;}
:focus:-ms-input-placeholder {color: transparent;}
select{cursor:pointer;}
img {
vertical-align:bottom;
}
*{
padding: 0;
margin: 0;
}
.cl:after {
content: "";
display: table;
clear: both;
}
html{height:100%;}
* html body{height:100%;}
<div class="alltov tov wr">
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
<div class="blocktov">
<a href="" title="" class="imgss">
<img src="https://pbs.twimg.com/media/DJvKWXmUIAA8BX1.jpg" />
<img src="https://i.pinimg.com/736x/68/64/d3/6864d31169a3fd759934c9a2d9a4c208.jpg" />
</a>
<h2>Название товара, товар двадва</h2>
<p>
<b>1500<span>,00</span></b> ₽
</p>
</div>
</div>
Что вы имеете в виду под адаптивностью?
Резиновое фото делается через CSS: { object-fit: cover; }.
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
ul {
display: flex;
list-style-type: none;
padding: 0;
margin: 0;
width: 100vw;
height: 100vh;
gap: 20px;
flex-flow: row wrap;
align-items: center;
justify-content: center;
}
li {
width: calc(25vw - 30px);
height: calc(50vh - 30px);
border: 1px solid #000;
padding: 10px;
overflow: hidden;
}
img {
width: 100%;
height: 100%;
object-fit: cover;
position: relative;
display: block;
transition: all 200ms;
}
img:nth-child(2) {
transform: translate(0, -100%);
}
li:hover img:nth-child(2) {
opacity: 0;
}
<ul>
<li>
<img src="https://images.unsplash.com/photo-1634247028962-74ee8b43a834?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
<img src="https://images.unsplash.com/photo-1634247036010-922a3a307336?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1627883408276-bc4cca6441a8?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
<img src="https://images.unsplash.com/photo-1619158401201-8fa932695178?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1633949698015-0f8a8b261c07?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=2070&q=80" />
<img src="https://images.unsplash.com/photo-1612975757677-6109869f1f09?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1613169251614-4ed9d5d478c5?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=987&q=80" />
<img src="https://images.unsplash.com/photo-1629213429098-855c6bae92e8?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1634247028962-74ee8b43a834?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
<img src="https://images.unsplash.com/photo-1634247036010-922a3a307336?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1627883408276-bc4cca6441a8?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
<img src="https://images.unsplash.com/photo-1619158401201-8fa932695178?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1633949698015-0f8a8b261c07?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=2070&q=80" />
<img src="https://images.unsplash.com/photo-1612975757677-6109869f1f09?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1613169251614-4ed9d5d478c5?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=987&q=80" />
<img src="https://images.unsplash.com/photo-1629213429098-855c6bae92e8?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=987&q=80" />
</li>
</ul>