J'essaie de créer exactement comme ce qui est montré dans l'image ci-dessous. J'ai aussi essayé d'autres méthodes en utilisant les méthodes de contour et offset, mais je ne savais pas comment faire pour continuer.
Voici le JSFiddle :
img {
border: 4px solid green;
}
<img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" alt="services_gas_oil" border="0">
Comment faire pour que cette bordure décalée recouvre l'image?
Enveloppez l'image avec un bloc en ligne et définissez un pseudo-élément à positionner absolument comme bordure:
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>
Une méthode plus simple consisterait à utiliser une combinaison de bordure, contour et un négatif contour-offset . Voici un exemple :
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">
Cela empêche l'utilisation d'un élément parent et d'un pseudo-élément.
Une autre possibilité consisterait à envelopper l'image dans un élément div
ayant une bordure et à déplacer l'image à l'intérieur du conteneur vers la gauche et vers le bas.
A partir de Documentation :
Un élément relative position est un élément dont la valeur calculée
position
estrelative
. Les propriétéstop
etbottom
spécifient le décalage vertical par rapport à sa position normale; les propriétésleft
etright
spécifient le décalage horizontal.
Nous devrons insérer img
dans un élément tel que div
c'est-à-dire:
<div class="image-holder">
<img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" >
</div>
Nous appliquerons border
au conteneur et déplacerons l'image de sa position normale avec le code CSS suivant:
.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>
Alternativement, nous pouvons également utiliser CSS3 translate()
.
.image-holder img {
transform: translate(40px, 40px);
position: relative;
z-index: -1;
}
.image-holder {
border: 7px solid #76af46;
display: inline-block;
vertical-align: top;
}
.image-holder img {
transform: translate(40px, 40px);
position: relative;
z-index: -1;
}
<div class="image-holder">
<img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" alt="services_gas_oil" border="0">
</div>