Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 31.05.2016
Сообщений: 15

Обрезать текст

31.05.2016, 01:49. Показов 4416. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть условие, если ширина двух блоков (.d2 и .d3) будет больше ширины блока .d1 то нужно обрезать текст.
Как обрезать какое-то количество символов я знаю, например
JavaScript
1
$(".d3").text('... ' + $(".d3").text().slice(-5));
и текст обрежется, оставив 4 символа в конце строки
Но нужно обрезать текст в .d3 на столько, чтобы он уместился по всей ширине этого блока и не съезжал на другую строку.
Помогите плиз, как можно это сделать средствами jQuery

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<style type="text/css">
.wrapper {width:190px;}
.d2 {float:left; padding: 0 10px; background-color:#0F0;}
.d3 {float:left; padding: 0 10px; background-color:#FF0;}
</style>
 
<div class="wrapper"> 
  <div class="d1">
     <div class="d2">>>>></div>
     <div class="d3">Этот текст, увеличил ширину блока и блок съехал на другую строку.</div>
  </div>
</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
<script>
$(document).ready(function(){
var d1 = $('.d1').outerWidth(),
    d2 = $('.d2').outerWidth(),
    d3 = $('.d3').outerWidth(),
    d23 = (d2 + d3);
 if(d1 <= d23) {
  // как обрезать текст в начале строки  в .d3 на столько, чтобы он уместился по всей ширине этого блока и не съезжал на другую строку?
 }
});
</script>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2016, 01:49
Ответы с готовыми решениями:

Обрезать текст
Вывожу текст из БД MySql include('../connect_db.php'); db_connect(); $quatity=1; $limit=3; if(!is_numeric($page)) $page=1; ...

Как обрезать текст в select
Привет, подскажите разметка ввиде select и вариантами выбора, то есть вариант выбора доложен быть нормальным, а что выбрал должно влезть в...

Обрезать строку
Есть строка вида var str = 'слово, слово2, слово3, слово4, слово5, слово6, слово7'; Как обрезать строку до 4 запятой, чтобы получить...

12
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
31.05.2016, 17:33
пропиши в стайл у д3:
overflow:hidden;
text-overflow: ellipsis;
и браузер будет сам обрезать и троеточие вставлять

Добавлено через 47 секунд
если он должен в одну строку быть добавь еще white-space: nowrap;
0
1 / 1 / 0
Регистрация: 31.05.2016
Сообщений: 15
31.05.2016, 21:49  [ТС]
Уф, прежде чем обратиться за помощью, я конечно пробовал overflow:hidden; white-space... - див d3, если текст большой, уходит на другую строку... За ответ спасибо. Но без js не обойтись.
В условии if, нужно обрезать текст ровно на столько символов, чтобы суммарная ширина дивов .d2 и .d3 не превысила ширину дива .d1
Как это сделать, я не знаю
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
31.05.2016, 21:56
rodiony, Я пользуюсь библиатекой dotdotdot. Он обрезает построчно, удобно когда нужно, чтоб не обрезалось по середине слова.
0
1 / 1 / 0
Регистрация: 31.05.2016
Сообщений: 15
31.05.2016, 22:44  [ТС]
sad67man, я уже рассматривал эту библиотеку, она не сделает то, о чем я здесь пишу
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
31.05.2016, 22:46
rodiony, А что зафиксировать ширину блока, чтоб он не растягивался нельзя?
0
1 / 1 / 0
Регистрация: 31.05.2016
Сообщений: 15
31.05.2016, 23:24  [ТС]
sad67man, нет, указывать ширину нельзя
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
01.06.2016, 00:39
rodiony, Т.е. у вас у d2 ширина неизвестна. и нужно подогнать d3, чтоб d2 и d3 вмещались в d1? Я правильно задачу понимаю? А высота у этих блоков одинаковая? Высота известна?

Добавлено через 1 час 6 минут
rodiony, Я думаю, что эту задачу можно решить через css.
https://jsfiddle.net/oLcybqgj/1/
0
1 / 1 / 0
Регистрация: 31.05.2016
Сообщений: 15
01.06.2016, 00:52  [ТС]
sad67man,
ширина есть у .wrapper (190px)
у d1 нет float:left и поэтому он также растягивается на 190px
У d2 и d3 явной ширины и высоты нет, ширина будет зависеть от длинны текста
В d2 будет стабильный текст, например Кнопка. А вот в d3 длинна текста будет разная, его и нужно обрезать..
смотрел разные форумы, готовых решений не нашел, но понял что обрезать нужно по одному символу и сравнивать
как-то так:
JavaScript
1
(0, str.length - 1)
Цитата Сообщение от sad67man Посмотреть сообщение
Я думаю, что эту задачу можно решить через css.
Разметку html я привел условную, для лучшего понимания задачи. Например, .wrapper - это ширина страницы, и делать ее 50% нельзя
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
01.06.2016, 01:03
rodiony, 50% я указал для примера, чтоб можно было подергать размер фрейма и посмотреть, как себя ведут блоки. Можете поставить и фиксированную ширину, это ни на что не влияет.
Есть куча способов решения вашей задачи. Но тут все индивидуально, зависит от ситуации. Я привел лишь несколько примеров. И если вы обрезаете текст до одной строчки, значит высота в принципе будет всегда одинаковая, и ее можно указать явно, как во втором примере.

Добавлено через 1 минуту
rodiony, Ну конечно можете и в цикле удалять по символу, но мне не кажется что это оптимальный вариант.
0
1 / 1 / 0
Регистрация: 31.05.2016
Сообщений: 15
01.06.2016, 01:29  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
rodiony, Ну конечно можете и в цикле удалять по символу
sad67man, я не знаю как, поможете?
0
1 / 1 / 0
Регистрация: 31.05.2016
Сообщений: 15
13.06.2016, 14:23  [ТС]
Сделал сам. Теперь текст обрезается. Но как мне кажется, текст обрезается медленно. Как оптимизировать код?
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<style type="text/css">
.wrapper {width:190px; height: 50px; border: 1px solid black;}
.d2 {float:left; padding: 0 10px; background-color:#0F0;}
.d3 {float:left; padding: 0 10px; background-color:#FF0;}
</style>
 
<div class="wrapper"> 
  <div class="d1">
     <div class="d2">>>>></div>
     <div class="d3">Этот текст больше ширины дива wrapper и поэтому его нужно обрезать.</div>
  </div>
</div>
JavaScript
1
2
3
4
5
6
7
8
<script>
$(document).ready(function(){
    var nameTrim = $(".d3").outerWidth() - 1;
    for (; $(".d3").outerWidth() >= ($(".d1").outerWidth() - $(".d2").outerWidth()); --nameTrim) {
        $(".d3").text('...' + $(".d3").text().slice(-nameTrim));
    }
});    
</script>
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
13.06.2016, 14:32
rodiony, можно посчитать разницу в ширине, поделить на среднюю ширину символа и обрезать на полученное количество символов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2016, 14:32
Помогаю со студенческими работами здесь

Обрезать строку jquery
Доброго времени суток! Хотел спросить. Как на jquery обрезать строку. Например у меня есть строка var a = 'abcdrkfrld', как мне вывести...

обрезать строку в таблице
Добрый день! Подскажите пожалуйста. Вывожу таблицу с бд. И хочу сократить столбец до 100 символов. Но обрезается только одно поле((...

Обрезать строку по регулярному выражению
Всем доброго ) Мне нужно обрезать строки типа 10х2 156х10 итд Суть в том что надо именно вот &quot;х2, х10&quot;, короче то что...

Обрезать/изменить данные полученные из ссылки якоря
С Новым годом, Форумчане Есть переменная var id, которая имеет данные получаемые из ссылки $(this).attr('href') вида #url11. ...

Требуется обрезать текст по размеру ячейки. По клику по этой ячейке, вывести текст полностью.
Доброй ночи! Прошу помочь с такой задачей.. Нужно вывести текст из бд в таблицу, это как бы не проблема.. но загвоздка в том, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru