Vesmir
@Vesmir
HTML / CSS / Angular / Typescript / JS

Как перенести строку, если строка заканчивается на предлог или союз?

Массив значений + фильтр на уникальные готов.

let unionsAndPrepositions = ['так что', 'дабы', 'с тем чтобы','несмотря на то', 'хоть', 'пускай', 'хотя', 'если', 'если бы', 'коли', 'ежели', 'так как', 'потому что',
   'как будто', 'словно', 'точно', 'как', 'как бы', 'до такой степени', 'настолько', 'до того', 'такой', 'где', 'куда', 'откуда', 'когда', 'что', 'то есть',
    'а именно', 'и', 'да', 'не только', 'но и', 'также', 'тоже', 'и', 'ни', 'как', 'так', 'сколько', 'столько', 'или', 'либо', 'то', 'ли', 'не', 'то', 'а', 
    'зато', 'однако', 'же', 'все же', 'чтобы', 'чтоб', 'притом', 'причём', 'в', 'без', 'до', 'из', 'к', 'на', 'по', 'о', 'от', 'перед', 'при', 'через', 'с', 'у', 
    'и', 'нет', 'за', 'над', 'для', 'об', 'под', 'про'];

function uniqueArr(arr) {
    let uniqueUnions = [];
  
    for (let str of arr) {
      if (!unionsAndPrepositions.includes(str)) {
        unionsAndPrepositions.push(str);
      }
    }
  
    return unionsAndPrepositions;
  }


Как сделать поиск по всем DOM-елементам, чтобы строки переносились, если последнее слово строки одно из массива, возвращаемого функцией?
  • Вопрос задан
  • 276 просмотров
Решения вопроса 2
hzzzzl
@hzzzzl
"последнее слово строки" в элементе это в смысле как на экране отображается страница, в зависимости от респонсивности/разрешения браузера/итд? а то иначе это же просто будет последнее слово в элементе, что там куда переносить
Ответ написан
y0u
@y0u Куратор тега JavaScript
dev
TL;DR
Нужно найти все необходимые слова в строке + следующее за ним слово и обернуть каждое найденное слово в span, у которого будет свойство white-space: nowrap;.

Предположим, что в строке

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste nihil,
quod sed nesciunt corporis sit. Totam ex veniam, modi pariatur vitae deleniti.
Optio quibusdam recusandae illum culpa ea cumque pariatur?

нужно, чтобы слово Totam ex переносилось на новую строку, если оно стоит последним в строке.

Мы знаем, что если следующее слово, которое идет за нужным (в примере это veniam), окажется в конце строки, то как только ширина контейнера уменьшиться на такое значение, при котором это слово перенесется на новую строку — последним словом, оставшимся в первой строке будет наше нужное слово.

По скольку по условию мы не хотим, чтобы последним словом в строке было слово Totam ex мы должны перенести его в тот момент. когда переносится слово veniam. Для этого мы можем обернуть наше слово + следующее за ним в какой-то тег и добавить этому тегу свойство white-space: nowrap; Данное свойство не позволит перенести слово veniam отдельно от Totam ex, а это как раз то, что нам нужно.

Простой пример:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vesmir
@Vesmir Автор вопроса
HTML / CSS / Angular / Typescript / JS
Таким образом будет будут переносы каждый раз, когда вотчер наткнется на один из элементов массива, но не в конце каждой строки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы