Вам следует обратить внимание, потому что вы рассматриваете свойство, определенное в черновой спецификации: https://drafts.csswg.org/css-align-3/#propdef-justify-self
Эта спецификация еще не поддерживается, поэтому justify-self
не окажет влияния на элемент, который неэлементы сетки, как в данном случае, так как вы создали элемент position:absolute
, который теперь будет иметь видовой экран как содержащий блок и больше не будет контейнером сетки.Та же логика для position: fixed
justify-self
на самом деле работает только для сетки CSS, как определено в спецификации:
https://www.w3.org/TR/css-grid-1/
Также обратите вниманието, что MDN предоставляет поддержку браузера для Flexbox на этом конце, что является ошибочным, поскольку в Flexbox нет justify-self
, как описано в спецификации:
Это свойство не применяется к элементам flex, потому чтона главной оси находится более одного элемента.См. Flex для растяжения и justify-content для выравнивания по главной оси.[CSS-FLEXBOX-1] ref
И в MDN вы также можете прочитать:
В макетах flexboxэто свойство игнорируется (подробнее о выравнивании во Flexbox)
Из спецификации сетки CSS вы можете прочитать, что:
Абсолютно позиционированный потомокконтейнер сетки находится вне потока и не является элементом сетки , и поэтому не влияет на размещение других элементов или размер сетки.
Статическая позиция [CSS21] изАбсолютно расположенный дочерний элемент контейнера сетки определяется так, как если бы он был единственным элементом сетки в области сетки, края которой совпадают с краями заполнения контейнера сетки.
В вашем случае применяется статическая позиция, поскольку вы не определили верх / лево / право / низ и, как вы можете видеть, это просто поле заполнения контейнера сетки.
Добавьте некоторые отступы, и вы заметите, что элемент будет смещен этим заполнением:
body {
display: grid;
width: 100vw;
height: 100vh;
margin: 0;
padding: 50px;
}
#absolute {
position: absolute;
align-self: end;
justify-self: end;
}
<div id="absolute">
<p>This element is absolutely positioned at the container's end.</p>
</div>
Однако, если родительский контейнер контейнера сетки также является генератором абсолютно позиционированного элемента, содержащего блок , вместо этого используйте сеткуобласть, определенная в §9.1, с контейнером сетки в качестве содержащего блока.
Если контейнер сетки является содержащим блоком (как в ответе Micheal_B), то положение будет другим.
Смежный вопрос о статическом положении и абсолютных позиционных элементах:
Почему мои абсолютно позиционированные элементы не находятся там, где я ожидаю?
Кросс-браузерные проблемы с фиксированной позицией flexbox и VW