По какой причине граничные правила коллапса были представлены в CSS?

Примечание редактора :
- >(…) замена процесса , который является нестандартная функция оболочки из [1 121] [приблизительно 1 121] совместимые с POSIX оболочки: bash, ksh, zsh.
- Этот ответ случайно отправляет, вывод обрабатывают вывод замены через конвейер также : echo 123 | tee >(tr 1 a) | tr 1 b.
- Вывод от замен процесса будет непредсказуемо чередован, и, кроме zsh, конвейер может завершиться, прежде чем команды в >(…) делают.

В Unix (или на Mac), используйте tee команда :

$ echo 123 | tee >(tr 1 a) >(tr 1 b) >/dev/null
b23
a23

Обычно Вы использовали бы tee для перенаправления вывода в несколько файлов, но использующий> (...) можно перенаправить к другому процессу. Так, в целом,

$ proc1 | tee >(proc2) ... >(procN-1) >(procN) >/dev/null

сделает то, что Вы хотите.

окна Under, я не думаю, что встроенная оболочка имеет эквивалент. Microsoft Windows PowerShell имеет tee команда все же.

19
задан actual 17 September 2009 в 12:17
поделиться

3 ответа

Это одна из ситуаций, когда это не имеет смысла, пока вы не поймете, что альтернативы не имеют смысла.

Как вы, вероятно, знаете, поля определяют расстояние между элементами, это а не «внешнее заполнение», окружающее каждый элемент. Если два элемента с полем 20 пикселей находятся рядом друг с другом, расстояние между ними составляет 20 пикселей, а не 40 пикселей.

Поскольку поле - это расстояние до другого элемента, имеет смысл, что расстояние от элемента до окружающих элементов , а не до границы родительского элемента.

Если поле будет считаться до границы родительского элемента, размещение элементов в элементе div приведет к дополнительному интервалу между элементами, даже несмотря на то, что ] div не имеет полей или отступов.

17
ответ дан 30 November 2019 в 04:37
поделиться

Когда это может быть полезно?

Простейший пример: список абзацев и заголовков, каждый с верхним полем и нижним полем . Вам нужно поле сверху и снизу статьи, а также между различными элементами.

При свертывании полей вы можете обойтись без установки специальных полей для первого или последнего элемента (НЕ является частью исходной спецификации CSS!) Или набивка контейнера.

Но я согласен, в целом, это бессмысленная функция.

3
ответ дан 30 November 2019 в 04:37
поделиться

Рассмотрим основной текст, содержащий несколько абзацев. Вы хотите, чтобы каждый абзац был отделен 2em, и вы хотите, чтобы первый абзац был отделен от предыдущего содержимого на 2em, а последний абзац отделялся от следующего содержимого на 2em.

Это легко сделать с помощью следующего CSS, потому что верхнее и нижнее поля, разделяющие абзацы, сжимаются:

p {
    margin-top: 2em
    margin-bottom: 2em;
}

Если поля не сжимаются, это приведет к тому, что поля будут разделены пробелом 4em, а не 2em. Без сжатия полей единственный способ добиться желаемого эффекта - это установить некоторые дополнительные правила для первого и последнего абзацев,

3
ответ дан 30 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

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