Таким образом, если требование заключается в том, что когда вы нажимаете на изображение, вам нужно показать ✓
в левом верхнем углу изображения, и вы также хотите показать некоторую рамку вокруг изображения, тогда то, что вы сделали, абсолютно верно.
Если вас беспокоит перемещение изображения на n
пиксель, имейте в виду, что border
занимает некоторое место в отличие от outline
, которое не требует места.Outline
берет n
пикселей вокруг объекта и применяет эффект типа границы.
Таким образом, есть 2 решения -
- , что @lalji предложило выше.когда вы загружаете страницу, примените границу к изображению с цветом, как
transparent
, чтобы зарезервировать место для вашей рамки, и фактически вы не увидите никакой границы вокруг нее, а при нажатии (выборе изображения) просто измените цвет рамки.
Скрипка для границы прозрачная
label img {
height: 100%;
width: 100%;
border: 1px solid transparent;
}
другое будет, когда вы щелкнете по нему, примените контур вместо границы.
Скрипка для контура
:checked + label img {
z-index: -1;
outline: 1px solid red;
}
UPADTE , если мы хотим показать некоторое изображение / текст также, когда изображение выбрано.если вы видите здесь, я добавил еще один узел с надписью
details
, который будет отображаться только при выбранном изображении и будет выровнен по центру изображения.
Fiddle
Это правило css ниже, чтобы изначально скрывать детали и делать их по центру и т. Д.
label img + .details
{
color:white;
position:absolute;
top:0px;
width:100%;
display:none;
margin-top:50%;
transform: translatey(-50%);
text-align:center;
}
Теперь мы покажем секцию details
, если выбрано изображение.
:checked + label img + .details
{
display:block;
}