Cuando ponemos cualquier enlace dentro de una tarjeta de arranque, funciona bien hasta que usamos card-img-overlay para poner una imagen como fondo de esa tarjeta.
- Tarjeta Bootstrap: una tarjeta en BootStrap 4 es un contenedor de contenido flexible y extensible. Incluye opciones para encabezados, pies de página, contenido, colores, enlaces, etc.
- Superposiciones de imagen de tarjeta: card-img-overlay se usa para configurar la imagen como imagen de fondo de la tarjeta y agregar texto sobre la imagen.
Sintaxis: para superposición de tarjetas<div class="card"> <img src="..."/> <div class="card-img-overlay"> <p class="text">....</p> </div> </div>
Enfoque: todos los enlaces ubicados dentro de la clase card-img-overlay funcionan, pero los enlaces ubicados fuera de esta clase no funcionan. Para que estos enlaces funcionen, establezca la posición de estos enlaces como ‘relativa’.
Código CSS: Colóquelo dentro de la etiqueta <style>.
.card-link { position:relative; }
El siguiente ejemplo ilustra el enfoque:
Ejemplo 1: este ejemplo ilustra la tarjeta card-img-overlay, en la primera tarjeta no estamos usando card-img-overlay pero cuando usamos card-img-overlay los enlaces no funcionan, incluso el texto no responde como texto . Se comporta totalmente como una imagen.
- Programa:
<!DOCTYPE html>
<
html
lang
=
"en"
>
<
head
>
<
title
>Bootstrap Card</
title
>
<
meta
charset
=
"utf-8"
>
<
meta
name
=
"viewport"
content
=
"width=device-width, initial-scale=1"
>
<
link
rel
=
"stylesheet"
href
=
<
script
src
=
</
script
>
<
script
src
=
</
script
>
<
script
src
=
</
script
>
<
style
>
.card {
width: 250px;
height: 300px;
border: 2px solid black;
padding: 5px;
}
h1 {
color: green;
text-align: center;
}
img {
height: 120px;
}
.left {
float: left;
}
.right {
float: right;
}
.container {
margin-top: 50px;
width: 600px;
height: auto;
}
</
style
>
</
head
>
<
body
>
<
div
class
=
"container"
>
<
h1
>GeeksforGeeks</
h1
>
<
div
class
=
"card left"
>
<
img
class
=
"card-img-top"
src
=
<
div
class
=
"card-inverse"
>
<
h3
class
=
"text-stroke"
>GeeksforGeeks</
h3
>
</
div
>
<
div
class
=
"card-block"
>
<
a
href
=
"#"
class
=
"card-link"
>Card link</
a
>
<
p
class
=
"card-text"
>A Computer Science Portal</
p
>
</
div
>
<
div
class
=
"card-footer"
>
<
small
class
=
"text-muted"
>Card link is working</
small
>
</
div
>
</
div
>
<
div
class
=
"card right"
>
<
img
class
=
"card-img-top"
src
=
<
div
class
=
"card-img-overlay card-inverse"
>
<
h3
class
=
"text-stroke"
>GeeksforGeeks</
h3
>
</
div
>
<
div
class
=
"card-block"
>
<
a
href
=
"#"
class
=
"card-link"
>Card link</
a
>
<
p
class
=
"card-text"
>A Computer Science Portal</
p
>
</
div
>
<
div
class
=
"card-footer"
>
<
small
class
=
"text-muted"
>Card link is not working</
small
>
</
div
>
</
div
>
</
div
>
</
body
>
</
html
>
- Producción:
Ejemplo 2: Este ejemplo ilustra la tarjeta card-img-overlay, en la primera tarjeta no estamos usando card-img-overlay pero cuando usamos card-img-overlay los enlaces funcionan y el texto también se comporta como texto.
- Programa:
<!DOCTYPE html>
<
html
lang
=
"en"
>
<
head
>
<
title
>Bootstrap Card</
title
>
<
meta
charset
=
"utf-8"
>
<
meta
name
=
"viewport"
content
=
"width=device-width, initial-scale=1"
>
<
link
rel
=
"stylesheet"
href
=
<
script
src
=
</
script
>
<
script
src
=
</
script
>
<
script
src
=
</
script
>
<
style
>
.card-link{
position:relative;
}
.card {
width: 250px;
height: 300px;
border: 2px solid black;
padding: 5px;
}
h1 {
color: green;
text-align: center;
}
img {
height: 120px;
}
.left {
float: left;
}
.right {
float: right;
}
.container {
margin-top: 50px;
width: 600px;
height: auto;
}
</
style
>
</
head
>
<
body
>
<
div
class
=
"container"
>
<
h1
>GeeksforGeeks</
h1
>
<
div
class
=
"card left"
>
<
img
class
=
"card-img-top"
src
=
<
div
class
=
"card-inverse"
>
<
h3
class
=
"text-stroke"
>GeeksforGeeks</
h3
>
</
div
>
<
div
class
=
"card-block"
>
<
a
href
=
"#"
class
=
"card-link"
>Card link</
a
>
<
p
class
=
"card-text"
>A Computer Science Portal</
p
>
</
div
>
<
div
class
=
"card-footer"
>
<
small
class
=
"text-muted"
>Card link is working</
small
>
</
div
>
</
div
>
<
div
class
=
"card right"
>
<
img
class
=
"card-img-top"
src
=
<
div
class
=
"card-img-overlay card-inverse"
>
<
h3
class
=
"text-stroke"
>GeeksforGeeks</
h3
>
<
div
class
=
"card-block"
>
<
a
href
=
"#"
class
=
"card-link text-white"
>Card link</
a
>
<
p
class
=
"card-text"
>A Computer Science Portal</
p
>
</
div
>
</
div
>
<
a
href
=
"#"
class
=
"card-link "
>Card link</
a
>
<
div
class
=
"card-footer"
>
<
small
>Card link is working</
small
>
</
div
>
</
div
>
</
div
>
</
body
>
</
html
>
- Producción:
Nota: En el segundo ejemplo, el texto silenciado no se comporta como texto porque está fuera del div card-link.