Подтвердить что ты не робот

Смещение границы над изображением

Я пытаюсь создать точно так же, как показано на рисунке ниже. Я пробовал другие методы, используя метод outline и offset, но я не мог понять, как это сделать.

изображение со смещением границы

Здесь JSFiddle:

img {
  border: 4px solid green;
}
<img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" alt="services_gas_oil" border="0">
4b9b3361

Ответ 1

Оберните изображение встроенным блоком и установите абсолютно позиционированный псевдоэлемент в качестве границы:

body {
  padding: 50px 0 0 80px;
}

.imageContainer {
  display: inline-block;
  position: relative;
}

.imageContainer::before {
  position: absolute;
  top: -5%;
  left: -15%;
  width: 100%;
  height: 100%;
  border: 4px solid #77B244;
  content: '';
}
<div class="imageContainer">
  <img src="https://cdn.pixabay.com/photo/2013/07/31/12/25/cat-169095_960_720.jpg" alt="services_gas_oil" border="0">
</div>

Ответ 2

Проще было бы использовать комбинацию границы, контура и отрицательного outline-offset. Вот пример:

img{
  outline:4px solid #77B244;
  outline-offset:-100px;
  border:50px solid transparent;
  border-width:150px 50px 50px 150px;
  margin:-75px 0 0 -75px;
}
<img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" alt="services_gas_oil" border="0">

Ответ 3

Другая возможность - обернуть изображение внутри элемента div, имеющего границу, и перемещать изображение внутри контейнера влево и вправо.

Как от Документация:

A относительно позиционированный элемент - это элемент, вычисляемое значение position relative. Свойства top и bottom определяют вертикальное смещение от его нормального положения; свойства left и right задают горизонтальное смещение.

Нам нужно обернуть img внутри элемента типа div i.e:

<div class="image-holder">
  <img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" >
</div>

Мы применим border к контейнеру и переместим изображение из его нормального положения со следующим CSS:

.image-holder img {
  position: relative;
  z-index: -1;
  left: 40px;
  top: 40px;
}

.image-holder {
  border: 7px solid #76af46;
  display: inline-block;
  vertical-align: top;
}

.image-holder img {
  position: relative;
  z-index: -1;
  left: 40px;
  top: 40px;
}
<div class="image-holder">
  <img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" alt="services_gas_oil" border="0">
</div>