Фактически, однако, как и в следующем фрагменте кода, обработка не остановится с бесконечным циклом.Почему это?Как браузер (спецификация) избегает бесконечных циклов?
Не существует бесконечного цикла, и правило состоит в том, чтобы не возвращаться назад.В общем, браузер выполняет только одну итерацию бесконечного цикла .
В основном в вашем случае вы использовали width:200%
, поэтому нам нужна ссылка на содержащий блок (.text
), чтобы вычислить это, но мы не определили ширину там, так что браузер как-то проигнорирует эту ширину, которая даст нам этот вывод
.row {
display: flex;
flex-wrap: wrap;
width: 500px;
background: #faf;
height: 120px;
}
.text {
background: #ffa;
}
img {
/*width: 200%;*/
}
<div class="row post">
<a href="#" class="text">
<img src="https://placeimg.com/150/50/animals">
</a>
</div>
Теперь, когда у нас есть ширина для нашего содержащего блока, мы будем использовать его как ссылку на изображение, чтобы сделать его в два раза больше ширины .test
, чтотакже его начальная ширина.
.row {
display: flex;
flex-wrap: wrap;
width: 500px;
background: #faf;
height: 120px;
}
.text {
background: #ffa;
}
img {
width: 200%;
}
<div class="row post">
<a href="#" class="text">
<img src="https://placeimg.com/150/50/animals">
</a>
</div>
Теперь тривиально, что если вы используете width:100%
, ничего не произойдет, так как все ширины останутся неизменными.
Это не относится к flexbox и может произойти в другой ситуации.
Вот еще один пример с inline-block
:
.text {
background: #ffa;
display: inline-block;
height:200px;
}
img {
width: 200%;
}
<a href="#" class="text">
<img src="https://placeimg.com/150/50/animals">
</a>
Здесь происходит та же логика: inline-block
использует изображение для определения его ширины, затем мы перемещаемся к изображению и больше не возвращаемся.
Другой пример без изображения:
.text {
background: #ffa;
float:left;
height:100px;
}
.img {
width: 50%;
background:red;
}
<a href="#" class="text">
<div class="img"> some text here</div>
</a>
Вот часть спецификации, объясняющая это: https://www.w3.org/TR/css-sizing-3/#percentage-sizing
Некоторые соответствующие цитаты:
.. Иногда размер блока, содержащего блок в процентах, зависит от вклада внутреннего размера самого блока, , создавая циклическую зависимость .При расчете размера содержащего блока процент ведет себя как авто .
.. Размер содержащего блока равен не разрешается повторно в зависимости от полученного размера поля ;таким образом, содержимое может переполниться или опуститься содержащий блок.