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

Заполните пробелы между метками с точками или дефисами

У меня есть страница с метками, которые содержатся в div, метки имеют переменную с и я хочу заполнить пробелы между символами, точками или '-'.

Например.

Мой текст с надписью 1 ----------- Некоторые тексты здесь.

Мой текст 2 ----------------------- Другой текст.

Если вы заметили, что оба текста являются оправданными (или, по крайней мере, я пытаюсь), может быть проблемой подсчета символов, но символ может иметь разную ширину, любой знает, как это сделать программно в Asp.Net, css, jquery или что-нибудь еще?

Update

................

Кто-то, предложенный в ответах, выравнивает обе метки с помощью css, но я думаю, что у меня будет такая же проблема с персонажами в середине, что может быть другим ярлыком, конечно. Любые мысли?

Update

.................

Ответ от Patrick действительно близок к решению, но теперь дефисы не показаны в IE8, возможно, в одном из моих комментариев понимается ошибка, она должна работать на IE7, IE8 и Firefox, только эти браузеры.

Спасибо всем.

4b9b3361

Ответ 1

Попробуйте следующее: http://jsfiddle.net/FpRp2/4/ (обновлено, теперь работает в ie7)

Решение @Marcel дало использовать пунктирную границу вместо текстовых дефисов, решив последнюю проблему с IE7.

(Заметьте, я тестировал только в Safari, Firefox и Chrome.)

EDIT: работает IE8. Работа над исправлением для IE7.

HTML

<div class='outer'>
    <div class='container'>
        <div class='filler'></div>
        <span class='label'>some label</span>
        <span class='text'>some text</span>
    </div>
    <br>
    <div class='container'>
        <div class='filler'></div>
        <span class='label'>some other label</span>
        <span class='text'>some other text</span>
    </div>
</div>

CSS

.outer {
    display: inline-block;
    *display: inline;
    zoom: 1;
    position: relative;
    clip: auto;
    overflow: hidden;
}
.container {
    position: relative;
    text-align: right;
    white-space: nowrap;
}
.filler {
    position: absolute;
    left: 0;
    right: 0;
    border-bottom: 1px dashed #333;
    height: 50%;
}
.label {
    background: white;
    float: left;
    margin-right: 20px;
    padding-right: 4px;
    position: relative;
}
.text {
    background: white;
    padding-left: 4px;
    position: relative;
}

Ответ 2

Я реализовал это на таблице с чистым CSS и даже без использования какого-либо диапазона или div.

CSS:

.dot-table td {
    max-width:200px;
    overflow:hidden;
    white-space:nowrap;
}
.dot-table td:first-child:after {
    content:" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "
}

HTML

<table class="dot-table">
  <tr>
    <td>
       Coffee
    </td>
    <td>
       45 INR
    </td>
  </tr>
  <tr>
    <td>
       Tea
    </td>
    <td>
       36 INR
    </td>
   </tr>
</table>

Подробный вывод (с сайта, который я разработал) A detailed table with filling dots

Просмотреть его в прямом эфире здесь.

Ответ 3

Вам нужно использовать CSS для настройки макета двух частей контента. Либо раскройте ярлык на две метки, и примените классы css к каждому, либо оберните каждый бит текста внутри вашей метки тегом <span> и создайте их таким образом.

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

Ответ 4

  • Найдите первый экземпляр трех пробелов. Я предполагаю, что это минимальное число, необходимое для создания "разрыва"

  • После этого найдите первый непространственный символ.

  • Замените все пробелы между индексом в # 1 (+1) и индексом в # 2 (-1). Это даст вам результаты выше.

Проверьте другие ответы для более чистых способов сделать это с помощью CSS. Это был бы самый чистый способ отображения текста. Черты выглядят гетто.:)

Ответ 5

Решение с использованием flexbox, с поддержкой переполнения текста: эллипсис для сохранения содержимого в 1 строке:

http://codepen.io/anon/pen/jPZdgr

.item {
  display: flex;
  justify-content: space-between;
}
.descripcion {
  /*background-color: green;*/
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.descripcion:after {
  content: " ........................................................................................................................................................................................................................................................................................."
}
.precio {
  /*background-color: red;*/
  flex-shrink: 0;
}
<div class="item">
  <div class='descripcion'>Junta la trócola</div>
  <div class='precio'>0´33</div>
</div>
<div class="item">
  <div class='descripcion'>Gamusinos en oferta c/u</div>
  <div class='precio'>6´47</div>
</div>
<div class="item">
  <div class='descripcion'>Saco de rafia y linterna a pedales</div>
  <div class='precio'>12´663584153,351,5,154</div>
</div>
<div class="item">
  <div class='descripcion'>Jaula de bambú con led para gamusinos</div>
  <div class='precio'>21´99</div>
</div>
<div class="item">
  <div class='descripcion'>Otro concepto más repartido entre más de una, o de dosOtro concepto más repartido entre más de una, o de dosOtro concepto más repartido entre más de una, o de dosOtro concepto más repartido entre más de una, o de dosOtro concepto más repartido entre
    más de una, o de dosOtro concepto más repartido entre más de una, o de dos</div>
  <div class='precio'>1.694</div>
</div>
<div class="item">
  <div class='descripcion'>Chismes y achiperres surtidos</div>
  <div class='precio'>0´10</div>
</div>
<div class="item">
  <div class='descripcion'>Yugo, barzón, cavijal y mancera</div>
  <div class='precio'>33´7433333333333333333333</div>
</div>
<div class="item">
  <div class='descripcion'>Coyunda, sobeo, ramales y cordel</div>
  <div class='precio'>125´87</div>
</div>
<div class="item">
  <div class='descripcion'>Media, cuartilla, celemín y 1 envuelza</div>
  <div class='precio'>48´04</div>
</div>

Ответ 6

Простое решение, которое поддерживает разрывы строк и работает в IE 8+, FF и Chrome. IE ниже 8 поддерживается, когда точки помещаются непосредственно в div пробелов пробелов.

CSS

.spacefill,
.spacefill-dots {
  line-height: 18px;
  font-size: 16px;
}

.spacefill {
  position: relative;
  padding: 0;
  margin: 0;
  border: 0;
}

.spacefill-dots {
  z-index: -1;
  /* Push dots behind text */
  height: 18px;
  /* Same as line-height */
  border: 0;
  margin: 0;
  padding: 0;
  left: 0;
  right: 0;
  bottom: 0;
  position: absolute;
  overflow: hidden;
}

.spacefill-text {
  background: white;
  /* Very important. Choose backgroundcolor*/
  padding-right: 4px;
  /* Optional space before first point*/
}

.spacefill .spacefill-dots::after {
  content: "........................................................................................................................................................................................................................................................................................................................................................................................................................................"
}

HTML:

<div class="spacefill">
   <div class="spacefill-dots"></div>
   <span class="spacefill-text">Short title</span>
</div>

Вот простой пример для таблицы содержимого: https://jsfiddle.net/dua2tp11/