html - attribute - Desplazar un borde sobre una imagen
title html attribute (3)
Envuelva la imagen con un bloque en línea y establezca un pseudoelemento posicionado absolutamente como borde:
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>
Estoy tratando de crear exactamente lo que se muestra en la imagen de abajo. También he intentado otros métodos utilizando el método de contorno y desplazamiento, pero no pude averiguar cómo seguir haciendo esto.
Aquí está el JSFiddle :
img {
border: 4px solid green;
}
<img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" alt="services_gas_oil" border="0">
¿Cómo hago para obtener este borde de desplazamiento sobre la imagen?
Otra posibilidad sería envolver la imagen dentro de un elemento div
con un borde y mover la imagen dentro del contenedor hacia la izquierda y hacia abajo.
A partir de la Documentation :
Un elemento relativamente posicionado es un elemento cuyo valor de
position
calculado esrelative
. Las propiedadestop
ebottom
especifican el desplazamiento vertical desde su posición normal; Las propiedadesleft
yright
especifican el desplazamiento horizontal.
Tendremos que envolver img
dentro de un elemento como div
es decir:
<div class="image-holder">
<img src="https://image.ibb.co/cxwWPa/services_gas_oil.jpg" >
</div>
Aplicaremos un border
al contenedor y moveremos la imagen desde su posición normal con el siguiente 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>
Alternativamente, podemos usar CSS3 translate()
también.
.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>
Una forma más sencilla sería utilizar una combinación de borde, contorno y un outline-offset negativo del outline-offset . Aquí hay un ejemplo :
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">
Esto evita el uso de un elemento padre y un pseudo elemento.