Подтвердить что ты не робот

Скрыть строки и разделители текста текста

два решения ниже: один с чистым css, второй с jQuery, позволяющий любому типу/изображению быть разделителем

pre: Сложно сформулировать и найти такие вопросы/решения, поэтому я сожалею, если дублирую.

У меня есть многострочный, обоснованный блок со случайными (не полностью) текстовыми гиперссылками (теги/категории/и т.д.) без фиксированной ширины, разделенные символом "|" символ и пробелы вокруг. Выглядит очень похоже на облако тегов, но с фиксированным размером шрифта, размером и другим форматированием может содержать более одного слова в элементе гиперссылки. Проблема возникает, когда разделитель помещается непосредственно перед концом строки или в начале строки, на самом деле это происходит всегда так или иначе, когда я устанавливаю nowrap для ссылки на элементы, поэтому это выглядит действительно уродливо. Поиск решения для удаления разделителей в начале и конце строк.

Для лучшего понимания я попытаюсь привести пример здесь.

C++ | PHP | CSS | ASP |
JavaScript | jQuery
| HTML 5 | StackOverflow

Что-то вроде этого, конечно, с обоснованием и гораздо большим количеством строк подряд. И еще один рисунок того, чего я хочу достичь.

C++ | PHP | CSS | ASP
JavaScript | jQuery
HTML 5 | StackOverflow

Так что фиксированное количество элементов в строке не является опцией, фиксированная ширина также не является опцией.

Единственное решение, с которым я столкнулся, заключается в том, чтобы установить шрифт в моноширину и подсчитать символы и печатать прагматично по очереди с серверными сценариями, конечно же, недостатком является моноширинный шрифт. Поиск лучшего решения, такого как чистый html/css (будет идеально), форматирование JavaScript/jQuery после вывода.

Заранее благодарю вас!

РЕДАКТИРОВАТЬ: ответ на комментарий ниже, разметка может быть любой, что вы пожелаете, в основном что-то вроде:

<div><a href="#">tag 1</a> | <a href="#">tag 2</a> | <a href="#">tag 3</a></div>
4b9b3361

Ответ 1

Вот идея: http://jsfiddle.net/WyeSz/
(обратите внимание, что демон jsfiddle использует CSS reset, вам может понадобиться немного больше CSS, чем это, в стили стилей reset и т.д.)

В основном, вы устанавливаете border-left в элементах списка, затем размещаете весь список -1px слева в контейнере с overflow:hidden, который отключает левые границы.

<div>
    <ul>
        <li>C++</li>
        <li>PHP</li>
        <li>CSS</li>
        <li>ASP</li>
        <li>JavaScript</li>
        <li>jQuery</li>
        <li>HTML 5</li>
        <li>StackOverflow</li>
    </ul>
</div>
ul {
    width:200px;  
    margin-left:-1px;/* hide the left borders */
}
li {
    float:left;   
    padding:2px 10px;
    border-left:1px solid #000;
}
div {
   overflow:hidden;/* hide the left borders */  
}

Ответ 2

Да, вы можете это сделать, но вам нужно поместить | в тег. Посмотрите на этот пример

HTML:

<div id="tags">
    <a href="#">C++</a>
    <span>|</span>
    <a href="#">PHP</a>
    <span>|</span>
    <a href="#">ASP</a>
    <span>|</span>
    <a href="#">JavaScript</a>
    <span>|</span>
    <a href="#">jQuery</a>
    <span>|</span>
    <a href="#">HTML 5</a>
    <span>|</span>
    <a href="#">StackOverflow</a>
</div>

CSS

#tags {
    width: 170px;
}
#tags a {
    white-space: nowrap;
}

JavaScript (jQuery):

var iTop;
$("#tags a").each(function() {
    if (iTop < $(this).offset().top) {
        $(this).prev("span").remove();
    }
    iTop = $(this).offset().top;
});

Ответ 3

Попробуйте следующее:

JQuery

$('document').ready(function() {
    $('div').find('a').not(':last-child').after(' | ');
});

HTML:

<div><a href="#">tag 1</a><a href="#">tag 2</a><a href="#">tag 3</a></div>
<div><a href="#">tag 1</a><a href="#">tag 2</a><a href="#">tag 3</a></div>
<div><a href="#">tag 1</a><a href="#">tag 2</a><a href="#">tag 3</a></div>

Таким образом, ваш разделитель содержимого может быть любым содержимым HTML.