Можно ли использовать CSS для выравнивания неупорядоченного списка относительно заданного символа? [Дубликат]

, если у вас есть список строковых массивов, затем конвертируется в Int

let arrayList = list.map { Int($0)!} 
     arrayList.description

, он даст вам строковое значение

6
задан Chris 31 March 2014 в 14:41
поделиться

6 ответов

Один из способов достижения этого - разместить spans вокруг слов слева и справа от дефиса. Затем вы можете добавить к ним минимальную ширину, чтобы сделать их равной шириной, которая поместит дефис в центр.

Fiddle

.progress-ww {
  font-size: 0.8rem;
  line-height:0.8rem;
  text-align:center;


}
.progress-ww span {
    display:inline-block;
    width:100px;
    text-align:left;
}
.progress-ww span:first-of-type {
    text-align:right
}
<section>
    <div class="progress-ww">
        <div>
            <div><span>lopen</span> - <span>ik loop</span></div>
            <div><span>klimmen</span> - <span>ik klim</span></div>
            <div><span>geven</span> - <span>ik geef</span></div>
            <div><span>schreeuwen</span> - <span>ik schreeuw</span></div>
            <div><span>blozen</span> - <span>ik bloos</span></div>
        </div>
    </div>
</section>

4
ответ дан Natalie Hedström 22 August 2018 в 07:46
поделиться
  • 1
    так как это единственное решение, которое мне нравится больше всего :) +1, причина, элементы остаются в потоке. – G-Cyr 31 March 2014 в 15:25
  • 2
    Спасибо, это показалось, что трюк просто прекрасен :). – Chris 1 April 2014 в 08:17

вы можете обернуть свой текст в поле inline-block и установить width, сбросить text-align и дать отрицательный margin, чтобы уменьшить фактически его размер до нуля: http://jsfiddle.net / seLvC / 2 /

.progress-ww {
  font-size: 0.8rem;
  line-height:0.8rem;
  text-align:center;
}
.progress-ww span {
    display:inline-block;
    width:100px;/* give it a width */
    margin:0 -100px 0 0;/* 0 space needed on right side */
    text-align:left;
}
.progress-ww span:first-of-type {
    margin:0 0 0 -100px;/* 0 space needed on left side */
    text-align:right
}

visual [/g1]

Это заслуживает того, чтобы быть помеченным внутри списка <dl> <dt> <dd> , так как он похож на словарь. :)

1
ответ дан G-Cyr 22 August 2018 в 07:46
поделиться

im, предполагая, что вы не подключены к этой структуре html. поэтому я бы не только использовал элементы списка, чтобы отображать эту серию элементов, но я бы также обернул каждый раздел из них в теги span. Перк для этого решения заключается в том, что вы не заблокированы в произвольной ширине для левого и правого секций (вам просто нужно беспокоиться о ширине дефиса)

js fiddle: http: // jsfiddle .net / seLvC / 8 /

HTML

<section>
    <div class="progress-ww">
        <ul>
            <li>
                <span>lopen</span>
                -
                <span>ik loop</span>
            </li>
            <li>
                <span>klimmen</span>
                -
                <span>ik klim</span>
            </li>
            <li>
                <span>geven</span>
                -
                <span>ik geef</span>
            </li>
            <li>
                <span>schreeuwen</span>
                -
                <span>ik schreeuw</span>
            </li>
            <li>
                <span>blozen</span>
                -
                <span>ik bloos</span>
            </li>
        </ul>
    </div>
</section>

CSS

*,
*:before,
*:after{
  -webkit-box-sizing:border-box;
  -moz-box-sizing:border-box;
  box-sizing:border-box;
}
.progress-ww {
  font-size: 0.8rem;
  line-height:0.8rem;
  text-align:center;
}
ul{
    list-style-type:none;
}
    ul li{
        width:100%;
        position: relative;
    }
        ul li span{
            position: absolute;
            right:0;
            left:50%;
            text-align:left;
            padding-left:5px;
            display:inline-block;
        }
        ul li span:first-child{
            position: absolute;
            left:0;
            right:50%;
            text-align:right;
            padding-right:5px;
            display:inline-block;
        }
.hyphen{
    display:inline-block;
    width:10px;
}

EDIT: удалить класс дефиса и скорректировать порядок css для Совместимость IE8 - благодаря GCyrillus для предложения

2
ответ дан haxxxton 22 August 2018 в 07:46
поделиться
  • 1
    нет необходимости в последнем ребенке и не переносить дефис в коробке, просто переписывайте правила span с помощью span: first-child в этом peticular случае, поэтому не беспокойтесь за IE8 :) – G-Cyr 31 March 2014 в 15:24
  • 2
    я полагаю, вы могли бы полностью полагаться на padding-left / right на первом и последнем шагах, когда вы правы. Я поправлю свой ответ – haxxxton 31 March 2014 в 15:27

Нет, нет простого способа выровнять конкретный символ и на самом деле никак не с данной разметкой HTML.

Разметка лучше всего заменяется на таблицу, потому что это, безусловно, самое надежный способ достижения желаемого внешнего вида (даже когда CSS отключен). Это также самый логичный подход, поскольку данные структурно являются таблицей соответствий. Использование dl не будет ошибкой, если мы примем принцип HTML5 dl как список описания (а не как список определений, как изначально определено). Но это не дает особых преимуществ и вызывает некоторые осложнения.

Пример:

<table class="progress-ww">
    <tr> <td>lopen <td>- ik loop
    <tr> <td>klimmen <td>- ik klim
    <tr> <td>geven <td>- ik geef<
    <tr> <td>schreeuwen <td>- ik schreeuw>
    <tr> <td>blozen <td>- ik bloos
</table>

Затем вы можете легко стилизовать таблицу по своему желанию. Я не уверен, что такое центрирование, но вы можете центрировать таблицу в целом (например, в CSS с table {margin: 0 auto}), или вы можете выравнивать первый столбец (td:first-child { text-align: right }).

Разметка была бы еще более логичной без дефисов в контенте. Вы можете опустить их и сгенерировать их в CSS с псевдоэлементом :before, если это вам подходит.

(я бы не использовал дефис «-» здесь, человеческие языки обычно не используют Дефис в этом случае. Я бы использовал en dash «-» или, возможно, двоеточие «:», которое часто используется для разделения форматов слов в парадигме.)

0
ответ дан Jukka K. Korpela 22 August 2018 в 07:46
поделиться

Демо-скрипт

Если вы хотите использовать некоторый jQuery (например, если вы не можете изменить свой HTML), другой альтернативой может быть:

HTML

<div class="progress-ww">
    <div>lopen - ik loop</div>
    <div>klimmen - ik klim</div>
    <div>geven - ik geef</div>
    <div>schreeuwen - ik schreeuw</div>
    <div>blozen - ik bloos</div>
</div>

CSS

.progress-ww {
    font-size: 0.8rem;
    line-height:0.8rem;
    text-align:center;
}
.left {
    text-align:left;
}
.right {
    text-align:right;
}
.right:after {
    content:' -';
    margin-right:5px;
}
.left, .right {
    display:inline-block;
    width:50%;
}

jQuery

$('.progress-ww div').each(function () {
    var part = $(this).text().split(' - ')
    $(this).replaceWith("<div class='right'>" + part[0] + "</div><div class='left'>" + part[1] + "</div>");
});
0
ответ дан SW4 22 August 2018 в 07:46
поделиться
1
ответ дан G-Cyr 5 November 2018 в 05:23
поделиться
Другие вопросы по тегам:

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