div > text (2019)
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 13.04.19 22:12
Оценка:
Андрей, привет,

Есть такой простой код.
Назначение — убедиться, что для отображения текста в div, автоматически вставляется inline элемент text.

<html>
    <head>
        <style>
            div
            {
                width: *; height: *;
                border: 1px solid gray;
            }
            
            div > text { border: 1px solid blue; }
        </style>
    </head>
    <body>
        <div>
            html
            <div>head</div>
            <div>body
                <div>div</div>
            </div>
        </div>
    </body>
</html>


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

Уверен, это поведение имеет под собой какое-то обоснование и где-то документировано. Можешь показать, где?

Спасибо.
Хорошо там, где мы есть! :)
sciter block inline text
Re: div > text (2019)
От: c-smile Канада http://terrainformatica.com
Дата: 16.04.19 22:18
Оценка: 5 (1)
Здравствуйте, ShaggyOwl, Вы писали:

Implicit <text> это то что известно как anonymous paragraph в CSS.

Вот иллюстрация с MDN:

Разметка:

<div>Some inline text <p>followed by a paragraph</p> followed by more inline text.</div>


Модель:


Единственная разница лишь в том что в Sciter эти anonymous paragraphs/boxes можно стилировать.

По умолчанию div { flow:default; }

Что разворачивается либо в flow:text (если текст и inlines), либо в flow:vertical (если есть блоки). Вот в последнем случае все inline runs оборачиваются в <text>.
Re[2]: div > text (2019)
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 17.04.19 20:49
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>Единственная разница лишь в том что в Sciter эти anonymous paragraphs/boxes можно стилировать.

О том собственно и вопрос
Почему у text в первом div есть border, а во втором нет?

<html>
<head>
<style>
    text { border: 1px solid gray; }
</style>
</head>

<body>
<div>Some inline text <p>followed by a paragraph</p> followed by more inline text.</div>
<div>Some inline text followed by more inline text.</div>
</body>
</html>
Хорошо там, где мы есть! :)
Re[3]: div > text (2019)
От: c-smile Канада http://terrainformatica.com
Дата: 18.04.19 02:19
Оценка: 10 (1)
Здравствуйте, ShaggyOwl, Вы писали:

Ну я же сказал, div { flow:default; } т.е. в зависимости от содержимого он будет или flow:text или flow:vertical

Но вот если же ты явно напишешь

div { flow:vertical; }



То для того чтобы эти inline там разместить будет создан <text> — anonymous text container.


flow:vertical; может содержать только display:block элементы. <text> и есть такой элемент: text { display:block; flow:text; }
Re[4]: html > text
От: stasoid  
Дата: 16.04.21 06:45
Оценка:
А почему тогда рамка отображается в этом случае:

<html>
    <head>
        <style>
            html > text { border: 1px solid blue; }
        </style>
    </head>
    aaa
</html>

В <html> нет никаких блоковых элементов (я посмотрел в инспекторе), и html { flow:text; } не помогает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.