text-overflow:ellipsis;
solo funciona cuando se cumple lo siguiente:
- El ancho del elemento debe estar restringido en
px
(píxeles). El ancho en %
(porcentaje) no funcionará.
- El elemento debe tener
overflow:hidden
y white-space:nowrap
establecer.
La razón por la que está teniendo problemas aquí es porque el width
de su a
elemento no está limitado. Tiene una width
configuración, pero debido a que el elemento está configurado en display:inline
(es decir, el valor predeterminado) lo ignora, y nada más limita su ancho tampoco.
Puede solucionar esto haciendo uno de los siguientes:
- Establezca el elemento en
display:inline-block
o display:block
(probablemente el primero, pero depende de sus necesidades de diseño).
- Establezca uno de sus elementos contenedor
display:block
y asigne a ese elemento un valor fijo width
o max-width
.
- Establezca el elemento en
float:left
o float:right
(probablemente el primero, pero de nuevo, cualquiera debería tener el mismo efecto en lo que respecta a los puntos suspensivos).
Sugeriría display:inline-block
, ya que esto tendrá el mínimo impacto colateral en su diseño; funciona de manera muy similar al display:inline
que está usando actualmente en lo que respecta al diseño, pero siéntase libre de experimentar también con los otros puntos; He tratado de darle la mayor cantidad de información posible para ayudarlo a comprender cómo interactúan estas cosas juntas; Una gran parte de la comprensión de CSS se trata de comprender cómo funcionan varios estilos juntos.
Aquí hay un fragmento con su código, con un display:inline-block
agregado, para mostrar qué tan cerca estaba.
.app a {
height: 18px;
width: 140px;
padding: 0;
overflow: hidden;
position: relative;
display: inline-block;
margin: 0 5px 0 5px;
text-align: center;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
color: #000;
}
<div class="app">
<a href="">Test Test Test Test Test Test</a>
</div>
Referencias útiles: