Необходимо использовать правильное переполнение текста, когда для направления установлено значение rtl.

Мне нужно поставить "..." перед текстом и показать только последнюю его часть, когда она заполняет div.

И ничего не делать, когда это нормально

<span class="file-upload-status" style="max-width:200px">
    C:\fakepath\996571_1398802860346752_2094565473_n.jpg
</span>
<br/>
<span class="file-upload-status" style="max-width:200px">
    C:\fakepath\1.jpg
</span>

Вот что у меня есть: http://jsfiddle.net/CBUH4/5/

Вот что мне нужно: введите здесь описание изображения

Возможно ли это сделать с помощью Css, не используя JavaScript или jQuery.


person Sahak Sahakyan    schedule 30.08.2013    source источник
comment
Простой text-overflow: ellipsis; будет работать в Firefox, но я не думаю, что какой-либо другой браузер делает это так, как вы упомянули.   -  person Harry    schedule 30.08.2013
comment
Я пробовал text-overflow: ellipsis;, но это повреждает direction: rtl;   -  person Sahak Sahakyan    schedule 30.08.2013
comment
Я не думаю, что это возможно с CSS, но если у вас все в порядке с JS, я могу дать решение.   -  person Harry    schedule 30.08.2013
comment
@SahakSahakyan, что вы подразумеваете под «но это наносит ущерб direction: rtl;»? Разве заголовок вопроса не означает, что вам нужна направленность справа налево?   -  person Jukka K. Korpela    schedule 30.08.2013
comment
Я попытаюсь запустить этот скрипт при изменении значения. Но решение CSS будет отличным.   -  person Sahak Sahakyan    schedule 30.08.2013
comment
Да @Юкка К. Корпела. Мне не нужно показывать 'C:\fakepath\...'   -  person Sahak Sahakyan    schedule 30.08.2013
comment
Дубликат многоточие переполнения текста слева. но я не закрываю этот пост, потому что связанный пост не имеет идеального решения css.   -  person Mr_Green    schedule 30.08.2013


Ответы (2)


Может быть, что-то вроде этого: http://jsfiddle.net/CBUH4/8/

    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
person Slavenko Miljic    schedule 30.08.2013
comment
Всего одно очко, дружище. В Firefox, когда применяется текст One Two Three и ellipsis, он становится ... Two Three. Но в других браузерах становится... Раз Два-ть. Пользователь хочет первого. - person Harry; 30.08.2013
comment
@Mr_Green: Это странно. Я использую Chrome версии 31.0.1612.2 dev-m. Если работает нормально, то отлично :) - person Harry; 30.08.2013
comment
@ Гарри, я использую Chrome версии 29. - person Mr_Green; 30.08.2013
comment
@Mr_Green: Хорошо, вы используете последнюю стабильную версию, а я использую версию для разработки. Если в стабильной версии работает, то будем надеяться, что не изменится :) - person Harry; 30.08.2013
comment
Я использую crome версии 29.0.1547.57 и его внешний вид [ссылка]lh6.ggph. /а> - person Sahak Sahakyan; 30.08.2013
comment
@SahakSahakyan да, это то, что я вижу отсюда. Это не идеально, но близко к тому, что вы хотите. - person Mr_Green; 30.08.2013
comment
@Mr_Green: я думаю, проблема именно в этом. Кажется, пользователю не нужен ..C:\fakep, он скорее хочет ...\fakepath. - person Harry; 30.08.2013
comment
Извините, @Mr_Green, но это не так близко. У меня есть большая форма, в которой загрузка файлов изменена с помощью jQuery, нет никаких отображений <input type="file" />. И я хочу, чтобы пользователь видел последние символы выбранного файла, когда его имя больше 200 пикселей, чтобы различать их, потому что всегда есть «C:\fakepath» или тот же путь к папке перед именем файла. - person Sahak Sahakyan; 30.08.2013
comment
@SlavenkoMiljic, который объединяет оба элемента :after в один. а затем вы позиционируете элемент, для которого требуется многоточие. (Честно говоря, вы потратили мое время, чтобы понять, какую магию вы там сделали). :D - person Mr_Green; 30.08.2013
comment
@SlavenkoMiljic это решение не работает, когда последний символ является таким символом, как «@». Протестировано в Chrome и IE11. Буду очень признателен за помощь в решении этой ошибки. я не знаю что делать :( - person robsonrosa; 28.04.2015

Это самое близкое решение, которое я мог бы получить, используя только css. Тем не менее, у него есть недостаток, заключающийся в том, что нам нужно использовать несколько ., которые примерно равны ширине элемента span.

Скрипка

HTML

<span class="file-upload-status ellipsis" style="max-width:200px">
    C:\fakepath\996571_1398802860346752_2094565473_n.jpg
</span>

<br/>
<span class="file-upload-status" style="max-width:200px">
    C:\fakepath\1.jpg
</span>

CSS

.file-upload-status {
    font-weight: bold;
    font-size: 16px;
    color: #888;
    background: #fff;
    border-radius: 7px;
    height: 27px;
    border: 1px solid #ccc;
    padding-left: 5px;
    padding-right: 5px;
    white-space: nowrap;
    overflow: hidden;
    direction: rtl;
    display:inline-block;
    width: 200px;
    position: relative;
}
.file-upload-status:after {
    content:".................................";
    color: white;
    position: relative;
    background-color: white;
    z-index: 2;
}
.file-upload-status:before {
    content:"...";
    position:absolute;
    background-color: white;
    left: 0px;
    top: 0px;
    z-index: 1;
}

Предложение: дайте как можно больше точек :D

person Mr_Green    schedule 30.08.2013
comment
Взглянув на изображение, показанное в OP, я просто немного изменил его (то есть применил rtl только для div с многоточием). Вот скрипка. Не стесняйтесь добавлять его к ответу, если вас это устраивает :) +1 за образец. - person Harry; 30.08.2013
comment
Хорошо. Но я должен использовать Javascript, чтобы добавить класс ellipsis для охвата, когда значение в нем длинное :) - person Sahak Sahakyan; 30.08.2013
comment
@SahakSahakyan, похоже, да.. Я все еще пытаюсь.. но не повезло :( - person Mr_Green; 30.08.2013
comment
@SahakSahakyan Я обновил свой пост. Теперь он ближе :) - person Mr_Green; 30.08.2013
comment
@ Гарри, я обновил свой пост. (пинговал вас, предполагая, что вас может заинтересовать решение). - person Mr_Green; 30.08.2013
comment
@Mr_Green: Да, я слежу за этим приятелем. У меня он тоже есть в списке любимых :) - person Harry; 30.08.2013
comment
Всем спасибо за внимание к моей проблеме. В моем браузере по-прежнему никаких изменений :) Я решил оставить все как есть. - person Sahak Sahakyan; 31.08.2013
comment
@SahakSahakyan, какой это браузер? а какая версия? - person Mr_Green; 01.09.2013
comment
Google Chrome Версия 29.0.1547,62 м - person Sahak Sahakyan; 01.09.2013