| |||
| div al 100% entre dos divs Hola a todo el mundo. Lo primero de todo es dar las gracias de antemano a todos aquellos que me ayuden. El problema es el siguiente. Necesito maquetar una hoja de precios de la siguiente forma: un texto con el producto, que puede ocupar una linea o varias; una linea de puntos al final del producto que vaya hasta el precio, y al final el precio. Algo asi: Producto destacado para una seccion en concreto..........25€ Y tengo que hacerlo con CSS. Consegui hacerlo en una sola línea usando posiciones absolutas. Colocaba un div con border-bottom en la capa contenedora, y por encima colocaba otros dos divs, uno a cada lado, con color de fondo de forma que pisaran la línea. Para productos de una sola línea queda perfecto. Incluso para los de dos líneas, solo hay que cambiar la ubicación de la capa de la línea de puntos. Pero esta solución no me vale porque nunca se si el producto va a tener una linea o dos. Después intente con 3 capas. de esta forma
Código:
Pero la línea de va al 100% del contenedor. No hay forma de que esa capa del medio sea al 100%, pero del espacio que le dejan las otras.<div id="contenedor" style="position:relative; display:block; width:200px"> <div id="texto" style="float:left; position:relative;">texto</div> <div id="puntos "style="float:left; position:relative; border-bottom:1px dotted #666; width=100%"></div> <div style="float:right; position:relative;">precio</div> </div> Muchas gracias de nuevo por la ayuda a todos. Última edición por alex_taboada; 16/01/2012 a las 10:34 |
| ||||
| Respuesta: div al 100% entre dos divs Hola A ver que te parece esto:
Código HTML:
Ver originalCopiar
Código CSS:
Ver originalCopiar Aquí lo podés ver en funcionamiento. Aclaración: solo funcionara con navegadores modernos, eso quiere decir IE9 en adelante, debido a la propiedad display: table. Esto se puede mejorar mucho, por supuesto, si utilizamos eso de display:table más eficientemente, lo cual me hace pensar si en realidad no deberías usar una tabla real. Pero en base a tu ejemplo, y pensando en la estructura: producto (float:left) - puntos (al 100% del resto) - precio(float:right) se soluciona cambiando el orden en el html, es decir primero los dos con float (producto y precio) y luego "puntos (sin float)" para que de esta forma pueda acomodarse entre ambos. El table-cell es para poder aplicar vertical-align:bottom de manera que al tener dos lineas quede bien, porque sino quedan los puntos y el precio más arriba. saludos
__________________ El mundo nada puede contra un hombre que canta en la miseria. -- Ernesto Sábato-- Última edición por C2am; 16/01/2012 a las 11:40 |
| ||||
| Respuesta: div al 100% entre dos divs Por supuesto que debería ![]() Si los datos son esos, una descripción y su precio (incluso una imagen), es más que correcto. Parece que la frase "no hay que maquetar con tablas", está teniendo más significado del que realmente representa. Saludos
__________________ La voz de las antenas va, sustituyendo a Dios. Cuando finalice la mutación, nueva edad media habrá S.R. |
| ||||
| Respuesta: div al 100% entre dos divs Exacto emprear, pobres tablas, tan despreciadas. jajaja. De todas formas, el hacerlo así, con css, más allá de que supone poner un div vacio con el solo objeto de mostrar un borde, me ha resultado muy interesante. Saludos
__________________ El mundo nada puede contra un hombre que canta en la miseria. -- Ernesto Sábato-- |
| |||
| Respuesta: div al 100% entre dos divs Efectivamente se ve bien, disculpa. Pero no es lo que necesito por el siguiente motivo. En el ejemplo que me pones, el texto tiene un <br> que fuerza el salto de línea. En mi caso, yo recibo una linea de texto directamente desde el servidor, de forma que nunca se si está en un línea o en dos. Es decir, no tengo ningún <br> que me de el salto de línea. La ídea es que todas las capas se coloquen una detras de la otra, para que en el caso de que el texto tenga una sola línea se muestre bien, y si tiene dos, se muestre igual pero en al segunda línea. Espero haber podido explicarme mejor. Es por eso que una tabla no me vale. En la tabla, yo podría poner en cada columna una cosa:texto, puntos y precio. Pero el texto tiene que ir en una línea o en dos, según el propio texto entre o no en la caja, y a continuación la línea de puntos y el precio. Muchas gracias por las respuestas. |
| |||
| Respuesta: div al 100% entre dos divs El ejemplo que quiero es algo asi, pero la linea de puntos autoajustable sin tener que especificar el width. Código HTML: <html> <head> <style> #contenedor { float:left; width:300px; display:inline} .oferta { float:left; width:100%; padding:2px; position:relative; margin:5px; } .oferta p { padding:0; margin:0; display:inline} .oferta .texto { float:left; display:inline;} .oferta .precio { float:right; display:inline;} .oferta .linea-puntos { float:right; border-bottom: 1px dotted #666; display:inline; width:168px; height:15px} </style> </head> <body> <div id="contenedor"> <div class="oferta"> <p>Esto es una oferta tipo de prueba para ver como queda en 2 lineas</p> <p class="precio">23€</p> <p class="linea-puntos"></p> </div> </div> </body> </html> |
| ||||
| Respuesta: div al 100% entre dos divs Cita: El br está para demostrar que aún con dos lineas el ejemplo funciona, con lo cual la verdad no importa que tiene o no tiene el texto "producto", ya que siempre se alineara en la parte inferior del div y dará la sensación que respeta la última linea, así sea una linea, dos o más.
Iniciado por alex_taboada En el ejemplo que me pones, el texto tiene un <br> que fuerza el salto de línea. En mi caso, yo recibo una linea de texto directamente desde el servidor, de forma que nunca se si está en un línea o en dos. Es decir, no tengo ningún <br> que me de el salto de línea. La ídea es que todas las capas se coloquen una detras de la otra, para que en el caso de que el texto tenga una sola línea se muestre bien, y si tiene dos, se muestre igual pero en la segunda línea. Te has explicado de maravilla, solo que ahora no logras, o no sabes como adaptar el ejemplo a tus necesidades. Cita: Mmm, me parece que estas haciendo un lio bárbaro con eso de la segunda linea.Si tienes un texto (no importa con cuantas lineas) dentro de una celda, simplemente la alineas verticalmente en la parte inferior de la celda, luego haces lo mismo con la celda de puntos y lo mismo con la de precio, en consecuencia te queda todos alineado en la parte inferior. Que como te darás cuenta es lo que trate de emular mediante css. Cita: Si te fijas bien no tiene ningún ancho definido.El ejemplo que quiero es algo asi, pero la linea de puntos autoajustable sin tener que especificar el width.
Código CSS:
Ver originalCopiar Evidentemente no estas leyendo ni tratando de entender este ejemplo, así que más no puedo hacer, solamente me queda pedirte como favor, que hagas una prueba con el ejemplo que puse, sin modificaciones, y que dentro del div "producto" pongas el texto que quieras, no importa cuantos br tenga. Saludos y espero que logres el resultado que estas buscando
__________________ El mundo nada puede contra un hombre que canta en la miseria. -- Ernesto Sábato-- Última edición por C2am; 17/01/2012 a las 12:48 |