css - texto - div id html
¿Cómo diseñar un div para que sea un cuadrado sensible? (6)
Es tan fácil como especificar un fondo de relleno del mismo tamaño que el ancho en porcentaje. Entonces, si tienes un ancho del 50%, solo usa este ejemplo a continuación
id or class{
width: 50%;
padding-bottom: 50%;
}
Aquí hay un jsfiddle http://jsfiddle.net/kJL3u/2/
Versión editada con texto sensible : http://jsfiddle.net/kJL3u/394
Esta pregunta ya tiene una respuesta aquí:
- Mantener la relación de aspecto de un div con CSS 18 respuestas
Quiero que mi div adapte su altura para que siempre sea igual a su ancho. El ancho es porcentual. Cuando el ancho de los padres disminuye, la caja debe disminuir manteniendo su relación de aspecto.
¿Cómo hacer esto es CSS?
Esto es lo que se me ocurrió. Aquí hay un violín .
Primero, necesito tres elementos de envoltura para una forma cuadrada y un texto centrado.
<div><div><div>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat
volutpat.</div></div></div>
Esta es la hoja de estilo. Hace uso de dos técnicas, una para formas cuadradas y otra para texto centrado .
body > div {
position:relative;
height:0;
width:50%; padding-bottom:50%;
}
body > div > div {
position:absolute; top:0;
height:100%; width:100%;
display:table;
border:1px solid #000;
margin:1em;
}
body > div > div > div{
display:table-cell;
vertical-align:middle; text-align:center;
padding:1em;
}
Funciona en casi todos los navegadores.
Puedes intentar dar padding-bottom
como un porcentaje.
<div style="height:0;width:20%;padding-bottom:20%;background-color:red">
<div>
Content goes here
</div>
</div>
El div externo está haciendo un cuadrado e interior div contiene el contenido. Esta solución funcionó para mí muchas veces.
Aquí hay un jsfiddle
HTML
<div class=''square-box''>
<div class=''square-content''>
<h3>test</h3>
</div>
</div>
CSS
.square-box{
position: relative;
width: 50%;
overflow: hidden;
background: #4679BD;
}
.square-box:before{
content: "";
display: block;
padding-top: 100%;
}
.square-content{
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
color: white;
text-align: center;
}
Otra forma es usar un 1x1.png transparente con width: 100%
, height: auto
en un div
y contenido absolutamente posicionado dentro de él:
html:
<div>
<img src="1x1px.png">
<h1>FOO</h1>
</div>
css:
div {
position: relative;
width: 50%;
}
img {
width: 100%;
height: auto;
}
h1 {
position: absolute;
top: 10px;
left: 10px;
}
Para lograr lo que está buscando, puede usar la longitud de porcentaje de ventana vw
.
Aquí hay un ejemplo rápido que hice en jsfiddle .
HTML:
<div class="square">
<h1>This is a Square</h1>
</div>
CSS:
.square {
background: #000;
width: 50vw;
height: 50vw;
}
.square h1 {
color: #fff;
}
Estoy seguro de que hay muchas otras formas de hacerlo, pero esta vez me pareció lo mejor.