Me gustaría crear un div con un tamaño arbitrario, luego mostrar algo encima de ese div. ¿Cuál es la mejor manera de posicionar y dimensionar la superposición exactamente como la siguiente div en css?¿Cómo se puede crear una superposición en css?
Respuesta
Puede utilizar position:absolute
para posicionar una capa interior de su div y luego se extienden en todas las direcciones, así:
CSSactualizan *
.overlay {
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background-color:rgba(0, 0, 0, 0.85);
background: url(data:;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAATSURBVBhXY2RgYNgHxGAAYuwDAA78AjwwRoQYAAAAAElFTkSuQmCC) repeat scroll transparent\9; /* ie fallback png background image */
z-index:9999;
color:white;
}
Sólo tiene que asegurarse que su div principal tiene la propiedad position:relative
agregada y una z-index
inferior.
Hice una demostración que debería funcionar en todos los navegadores, incluido IE7 +, para un comentarista a continuación.
quitado la propiedad opacity
de la CSS y en su lugar utiliza un color RGBA para dar el fondo, y sólo el fondo, un nivel de opacidad. De esta forma, el contenido que porta la superposición no se verá afectado. Como IE no es compatible con rGBA, utilicé un hack IE para darle una imagen de fondo PNG codificada en base64 que llena el div de superposición, de esta manera podemos evadir el problema de opacidad de IEs donde también aplica la opacidad a los elementos hijos.
respuesta rápida sin ver ejemplos de su HTML y CSS actual es utilizar z-index
css:
#div1 {
position: relative;
z-index: 1;
}
#div2 {
position: relative;
z-index: 2;
}
Dónde div2 es la superposición
También puede usar position: absolute; dependiendo de cómo se ubique tu div padre –
se recomienda usar los atributos de CSS hacer esto. Puede usar position: absolute para colocar un elemento encima de otro.
Por ejemplo:
<div id="container">
<div id="on-top">Top!</div>
<div id="on-bottom">Bottom!</div>
</div>
y CSS
#container {position:relative;}
#on-top {position:absolute; z-index:5;}
#on-bottom {position:absolute; z-index:4;}
Me gustaría echar un vistazo a este consejo: http://www.w3schools.com/cssref/pr_class_position.asp
Y finalmente aquí es un jsFiddle para mostrarle mi ejemplo
CSS:
#box{
border:1px solid black;
position:relative;
}
#overlay{
position:absolute;
top:0px;
left:0px;
bottom:0px;
right:0px;
background-color:rgba(255,255,0,0.5);
}
llego tarde a la fiesta, pero si usted quiere hacer esto a un elemento arbitrario usando sólo CSS, sin jugar un poco con el posicionamiento, divs superposición etc. ., puede utilizar una caja de inserción sombra:
box-shadow: inset 0px 0px 0 2000px rgba(0,0,0,0.5);
Esto funcionará en cualquier elemento menor que 4000 píxeles largo o ancho.
ejemplo: http://jsfiddle.net/jTwPc/
Si no le importa jugar con z-index, pero desea evitar añadir div extra por superposición, puede utilizar el método siguiente
/* make sure ::before is positioned relative to .foo */
.foo { position: relative; }
/* overlay */
.foo::before {
content: '';
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
z-index: 0;
}
/* make sure all elements inside .foo placed above overlay element */
.foo > * { z-index: 1; }
Aquí es una superponer usando un pseudo-elemento (por ejemplo: no es necesario añadir más marcadores para hacerlo)
.box {
background: 0 0 url(http://ianfarb.com/wp-content/uploads/2013/10/nicholas-hodag.jpg);
width: 300px;
height: 200px;
}
.box:after {
content: "";
display: block;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.4);
}
<div class="box"></div>
Estaba jugando con un problema similar en el codepen, esto es lo que hice para crear una superposición usando un simple markup css. Creé un elemento div con la clase .box aplicada. Dentro de este div creé dos divs, uno con la clase .inner aplicada y el otro con la clase .notext aplicada a él. Ambas clases dentro de .box div están inicialmente configuradas para mostrar: ninguna, pero cuando .box está sobrevolada, estas se hacen visibles.
.box{
height:450px;
width:450px;
border:1px solid black;
margin-top:50px;
display:inline-block;
margin-left:50px;
transition: width 2s, height 2s;
position:relative;
text-align: center;
background:url('https://upload.wikimedia.org/wikipedia/commons/c/cd/Panda_Cub_from_Wolong,_Sichuan,_China.JPG');
background-size:cover;
background-position:center;
}
.box:hover{
width:490px;
height:490px;
}
.inner{
border:1px solid red;
position:relative;
width:100%;
height:100%;
top:0px;
left:0px;
display:none;
color:white;
font-size:xx-large;
z-index:10;
}
.box:hover > .inner{
display:inline-block;
}
.notext{
height:30px;
width:30px;
border:1px solid blue;
position:absolute;
top:0px;
left:0px;
width:100%;
height:100%;
display:none;
}
.box:hover > .notext{
background-color:black;
opacity:0.5;
display:inline-block;
}
<div class="box">
<div class="inner">
<p>Panda!</p>
</div>
<div class="notext"></div>
</div>
Espero que esto ayude! :) Cualquier sugerencia es bienvenida.
- 1. CSS superposición flecha
- 2. superposición CSS div
- 3. Imágenes de superposición en CSS
- 4. CSS flotante con superposición
- 5. Cómo crear una superposición en la cuadrícula avanzada en Flex
- 6. superposición en la región en la que se puede hacer clic - CSS
- 7. ¿Cómo crear una ventana de superposición en Java?
- 8. Superposición de márgenes CSS Problema
- 9. Android: ¿Cómo crear una superposición de "rueda" de progreso modal?
- 10. Tinte de imagen usando CSS sin superposición
- 11. ¿Cómo se puede crear una animación 'ampliar, bajar' en QML?
- 12. ¿Cómo se puede crear una vista materializada en sqlite?
- 13. Crear fondo de superposición click-through-able
- 14. ¿Cómo se puede eliminar una propiedad importante de CSS?
- 15. Crear vista de superposición de clics ver
- 16. No se puede crear una instancia javax.servlet.ServletException
- 17. ¿Cómo crear una barra lateral fija/adhesiva en CSS/JS?
- 18. ¿Cómo se puede crear una aplicación ASP.Net MVC con EF?
- 19. T-SQL: ¿Cómo se puede crear una tabla con SELECT?
- 20. ¿Cómo se puede crear más de una alarma?
- 21. HTML/CSS - crear máscara alfa sobre imagen
- 22. Cómo agregar una superposición personalizada uiimagepickerview
- 23. ¿Cómo se puede crear este aspecto acampanado con CSS o, si es necesario, con SVG?
- 24. ¿No se puede crear una matriz de LinkedLists en Java ...?
- 25. Cómo crear una superposición transparente en toda la pantalla, que incluye un teclado activa
- 26. ¿Cómo dibujar una superposición 2D en una escena Java 3D?
- 27. CSS: ¿Cómo conseguir que esta superposición se extienda al 100% con desplazamiento?
- 28. No se puede crear PoolableConnectionFactory
- 29. ¿Cómo detectar la superposición de elementos (superposición) usando JavaScript?
- 30. ¿Cómo crear una superposición de texto en Google Maps API v3 que no funciona?
No sabía posición: pariente aplicado también a todos los niños: O. Muchas gracias –
¿Podría hacer que sea más compatible con varios navegadores? – Greg
@Greg Dado que el soporte de opacidad de IE es muy escaso, y se filtra en los nodos secundarios del div no se puede obtener una opacidad limpia en el div, pero se puede evitar utilizando una imagen png con un poco de opacidad añadida, aquí hay una demostración que debería funcionar en todos los navegadores (incluido IE7 +): http://jsfiddle.net/andresilich/g5jEr/ –