Интеллектуальное усечение имени файла в CSS

#css #overflow

#css #переполнение

Вопрос:

Я пытаюсь создать пользовательское усечение текста, представляющего имя файла, которое всегда показывает расширение файла, но скрывает часть имени, если места недостаточно. Например, имя testtesttest.xml файла . Если недостаточно места, я хочу, чтобы оно отображало что-то вроде tes...xml

Я играл text-overflow: ellipsis , но не получил никакого результата. Он либо усекает всю строку, либо не усекает вообще.

 export default function FilenameTruncate(props) {
    const [name, extension] = props.filename.split('.')
    return (
        <div className="filename-container">
            <div className="filename-text">
                <span>{name}</span>
            </div>
            <div className="filename-ext">
                <span>.{extension}</span>
            </div>
        </div>
    )
}
  
 .filename-container {
    display: flex;
    flex-direction: row;
    overflow: hidden;
}

.filename-text {
    white-space: nowrap;
    text-overflow: ellipsis;
}

.filename-ext {
    white-space: nowrap;
}

  

Ответ №1:

Вам нужно добавить overflow свойство и width или max-width :

 .filename-container {
    display: flex;
    flex-direction: row;
    overflow: hidden;
}

.filename-text {
    text-overflow: ellipsis;
    max-width: 3em;
    white-space: nowrap; 
    overflow: hidden;
}

.filename-ext {
    white-space: nowrap;
}  
 <div class="filename-container">
    <div class="filename-text">
        <span>longfilename</span>
    </div>
    <div class="filename-ext">
        <span>.ext</span>
    </div>
</div>