У меня есть такой код:
figure {
background-color: #FFFFFF;
text-align: center;
}
figcaption {
font-style: italic;
font-weight: bold;
}
figure em {
font-weight: bold;
}
figure:hover,
figure:focus {
background-color: rgba(255, 224, 224, 0.5);
border: 15px inset #CCCCCC;
}<figure>
<figcaption>Indesit IWSND</figcaption>
<img src = "obrazky/indesit-IWSND.jpg" width = "220" height = "220" alt = "Indesit">
<p>6 kg, 1200 ot/min.,A++</p>
<p><em>229.00 €</em></p>
</figure>
<figure>
<figcaption>Rowenta RO5396OA</figcaption>
<img src = "obrazky/rowenta-RO5396OA.jpg" width = "220" height = "220" alt = "Rowenta">
<p>1,5 L, B, 950 watt</p>
<p><em>108.00 €</em></p>
</figure>
<figure>
<figcaption>ETA 050490000</figcaption>
<img src = "obrazky/eta-05049000.jpg" width = "220" height = "220" alt = "ETA">
<p>O10 meter, 350 watt, C</p>
<p><em>79.90 €</em></p>
</figure>И моя проблема в том, что когда я перемещаю мышь по этим элементам, они немного сдвигаются. Как убрать их смещение?






Я думаю, что единственное решение, которое вы можете сделать, - это установить высоту для тега рисунка, например
figure {
background-color: #FFFFFF;
text-align: center;
height: 150px;
}
figcaption {
font-style: italic;
font-weight: bold;
}
figure em {
font-weight: bold;
}
figure:hover, figure:focus {
background-color: rgba(255, 224, 224, 0.5);
border: 15px inset #CCCCCC;
}<figure>
<figcaption>Indesit IWSND</figcaption>
<img src = "obrazky/indesit-IWSND.jpg" width = "220" height = "220" alt = "Indesit">
<p>6 kg, 1200 ot/min.,A++</p>
<p><em>229.00 €</em></p>
</figure>
<figure>
<figcaption>Rowenta RO5396OA</figcaption>
<img src = "obrazky/rowenta-RO5396OA.jpg" width = "220" height = "220" alt = "Rowenta">
<p>1,5 L, B, 950 watt</p>
<p><em>108.00 €</em></p>
</figure>
<figure>
<figcaption>ETA 050490000</figcaption>
<img src = "obrazky/eta-05049000.jpg" width = "220" height = "220" alt = "ETA">
<p>O10 meter, 350 watt, C</p>
<p><em>79.90 €</em></p>
</figure>Ваша граница добавляет 15px с каждой стороны, таким образом сдвигая содержимое <figure>.
Если ваши элементы <figure>началось с заполнением 15px (выполняя padding: 15px), вы можете затем заменить это заполнение рамкой вставки 15px при наведении курсора, чтобы контент оставался на месте.
figure {
background-color: #FFFFFF;
text-align: center;
padding: 15px; /* Start with 15px of padding */
}
figcaption {
font-style: italic;
font-weight: bold;
}
figure em {
font-weight: bold;
}
figure:hover,
figure:focus {
background-color: rgba(255, 224, 224, 0.5);
border: 15px inset #CCCCCC;
padding: 0px; /* Replace padding with border */
}<figure>
<figcaption>Indesit IWSND</figcaption>
<img src = "obrazky/indesit-IWSND.jpg" width = "220" height = "220" alt = "Indesit">
<p>6 kg, 1200 ot/min.,A++</p>
<p><em>229.00 €</em></p>
</figure>
<figure>
<figcaption>Rowenta RO5396OA</figcaption>
<img src = "obrazky/rowenta-RO5396OA.jpg" width = "220" height = "220" alt = "Rowenta">
<p>1,5 L, B, 950 watt</p>
<p><em>108.00 €</em></p>
</figure>
<figure>
<figcaption>ETA 050490000</figcaption>
<img src = "obrazky/eta-05049000.jpg" width = "220" height = "220" alt = "ETA">
<p>O10 meter, 350 watt, C</p>
<p><em>79.90 €</em></p>
</figure>Сдвиг, который вы видите, является результатом перехода от границы без рамки к границе 15 пикселей (которая сдвигает область на 15 пикселей). Самый простой способ исправить это - добавить белую рамку к стилю .figure. Он есть, но вы этого не заметите. Когда отображаются стили наведения / фокуса, местоположение .figure должно оставаться там, где оно было.
figure {
background-color: #FFFFFF;
text-align: center;
border: 15px inset #FFFFFF;
}
figure:hover, figure:focus {
background-color: rgba(255, 224, 224, 0.5);
border: 15px inset #CCCCCC;
}
Решение: добавлена граница: 15px solid #fff; на фигуре состояние нормальное.
figure {
background-color: #FFFFFF;
text-align: center;
border: 15px solid #fff;
}
figcaption {
font-style: italic;
font-weight: bold;
}
figure em {
font-weight: bold;
}
figure:hover,
figure:focus {
background-color: rgba(255, 224, 224, 0.5);
border: 15px inset #CCCCCC;
}<figure>
<figcaption>Indesit IWSND</figcaption>
<img src = "obrazky/indesit-IWSND.jpg" width = "220" height = "220" alt = "Indesit">
<p>6 kg, 1200 ot/min.,A++</p>
<p><em>229.00 €</em></p>
</figure>
<figure>
<figcaption>Rowenta RO5396OA</figcaption>
<img src = "obrazky/rowenta-RO5396OA.jpg" width = "220" height = "220" alt = "Rowenta">
<p>1,5 L, B, 950 watt</p>
<p><em>108.00 €</em></p>
</figure>
<figure>
<figcaption>ETA 050490000</figcaption>
<img src = "obrazky/eta-05049000.jpg" width = "220" height = "220" alt = "ETA">
<p>O10 meter, 350 watt, C</p>
<p><em>79.90 €</em></p>
</figure>
Это хорошая техника, но могу ли я предложить использовать
border: 15px inset transparentвместо белого. Использование белого будет работать только на белом фоне, тогда какtransparent(или дажеrgba(...)с0alpha) будет работать на фоне любой.