Así es como vemos un titulo cuando tiene aplicado un padding sin mas
Y asi es como queremos que se vea
No voy a explicar toda la lógica que hay detrás de esto. Vayamos a la solución.
Este es el html. en div.titulo tenemos el background y en .highlight el background del texto, el padding que queremos que tenga y el hack mediante la propiedad box-shadow que es la que nos termina agregando los pedacitos de padding que nos falta entre lineas.
<div class="titulo">
<span class="highlight">Títulos multi linea con padding por cada linea</span>
</div>
.titulo {
padding-top: 32px;
width: 700px;
height: 200px;
text-align: center;
font-family: arial, helvetica, sans-serif;
background: url('fondo.jpg') no-repeat 50% 50%;
}
.highlight {
font-size: 50px;
text-transform: uppercase;
text-align: center;
color: #fff;
/*Esto es lo importante*/
display: inline; /* Aseguramos que el elemento sea inline */
background: black; /* Color de fondo del texto */
line-height: 1.6em; /* Espaciado entre lineas */
padding: 7px 0; /* padding deseado */
box-shadow: 14px 0 0 black, -14px 0 0 black;
}
Del CSS que puse solo hagan caso a las lineas que tienen “/*Esto es lo importante*/“. El resto es decoración.
No comenté el box-shadow porque prefiero hacerlo aquí: La magia se da en box-shadow. Solo tienes que tocar dos parámetros. El color cámbialo de black al que hayas puesto en la propiedad background, y los valores 14px y -14px ajustalos para arriba o para abajo hasta que te guste el padding lateral que hay en cada una de las lineas.
Listo!
Artículo original: css-tricks.com