Подробное объяснение свойств позиционирования CSS

внешний интерфейс HTML CSS

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

1. Введение

1. Документооборот

Прежде чем вводить пост, необходимо разобраться с документооборотом.

Проще говоря, это процесс определения расположения элементов в соответствии с их позиционным порядком в HTML. Механизм компоновки HTML основан на модели потока документов, то есть блочный элемент (block) имеет собственную строку, а строчный элемент (inline) не занимает отдельной строки.

Как правило, поле используется для разделения пространства между элементами и элементами, а заполнение используется для разделения пространства между элементами и содержимым. Поля используются для макета, чтобы отделить элементы, чтобы элементы не были связаны друг с другом; отступы используются для промежутка между элементами и содержимым, чтобы было «расстояние» между содержимым (текстом) и (обтеканием) элементами.

Пока они не выложены в плавающем и абсолютном позиционировании, все они находятся в потоке документов.

Производительность выглядит следующим образом:

    <div style="border:1px solid black">div1</div>
    <div style="border:1px solid red">div2</div>
    这是一张图片
    <img src="test.png">

2. Знакомство с атрибутом position

  • статический, значение по умолчанию. Элемент, позиция которого установлена ​​как статическая, всегда будет находиться в позиции, заданной потоком документа.
  • inherit указывает, что значение свойства position должно быть унаследовано от родительского элемента. Но любая версия Internet Explorer (включая IE8) не поддерживает значение свойства «наследовать».
  • fixed, генерирует абсолютно позиционированные элементы. По умолчанию может располагаться по адресуотносительно окна браузерауказанные координаты. Положение элемента задается свойствами «слева», «сверху», «справа» и «снизу». Элемент остается в этом положении независимо от того, прокручивается окно или нет. Но когда элемент-предок имеет атрибут преобразования и не равен нулю, он будетотносительно элемента-предкаУкажите координаты, а не окно браузера.
  • absolute, который генерирует абсолютно позиционированный элемент,относительно ближайшего предка элементанайти. Положение этого элемента можно указать с помощью свойств «слева», «сверху», «справа» и «снизу».
  • относительный, генерирует относительно позиционированный элемент,Расположите элемент относительно его исходного положения в документе. Используйте свойства «left», «top», «right» и «bottom», чтобы установить смещение этого элемента относительно его собственного положения.

Независимо от того, какое позиционирование, должна быть ссылка. Найти нужный референс — половина дела.

2. Относительное расположение

relativeСоздает относительно позиционированный элемент, расположенный относительно его нормального положения.

Процесс относительного позиционирования выглядит следующим образом:

  • Элемент генерируется по умолчанию (статический) (и элемент плавает, как слой).
  • Относительно предыдущего движения позиции направление и величина движения определяются свойствами left, right, top, bottom, а позиция до смещения остается неизменной.

пример

<style type="text/css">
        #box1 {
            margin: 20px;
            width: 200px;
            height: 200px;
            background-color: yellow;
        }
        #box2 {
            margin: 20px;
            width: 200px;
            height: 200px;
            background-color: red;
            /*position: relative;
            left: 100px;
            top: 100px;*/
        }
    </style>

    <div id="box1"></div>
    <div id="box2"></div>

Прежде чем код комментария в блоке 2 вступит в силу, он сортируется и представляется в соответствии с потоком документов.


Однако когда код комментария раскомментирован, он перемещается относительно того места, где он должен отображаться в потоке документа.

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

3. Абсолютное позиционирование

Большая разница между абсолютным позиционированием и относительным позиционированием заключается в том, что когда мы устанавливаем для элемента абсолютное позиционирование, тоЭтот элемент будет изъят из документооборота, другие элементы будут считать, что элемент не существует в потоке документов, и займут его исходное положение. Абсолютно позиционированный элемент перемещает свою позицию в соответствии со своей ссылкой, которая определяется в соответствии с настройками позиционирования его предков.

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

пример

Используйте рисунок выше, чтобы продемонстрировать свойства абсолютного позиционирования. Видно, что самый внутренний слой — это два ящика, а снаружи вложены два слоя элементов-предков.

1. Элемент-предок не позиционирован

Используйте absolute, когда элемент-предок не позиционирован.

#box1 {
            width: 150px;
            height: 150px;
            margin-left: 20px;
            margin-bottom: 20px;
            background-color: yellow;
            position: absolute;
            top: 30px;
            left: 30px;
        }


В данном случае ссылкой является тело.

2. Элементы-предки имеют позиционирование

Пока для элемента-предка установлено значение, отличное от position:static, он считается позиционированным, и ближайший элемент-предок будет установлен как ссылка на абсолютно позиционированный элемент.

#orange {
            width: 400px;
            height: 400px;
            background-color: orange;
            position: absolute;


        }
        #box1 {
            width: 150px;
            height: 150px;
            margin-left: 20px;
            margin-bottom: 20px;
            background-color: yellow;
            position: absolute;
            top: 30px;
            left: 220px;
        }


В этом случае ссылкой является ближайший элемент-предок.

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

3. Левый/правый, верхний/нижний не заданы

При отсутствии слева/справа, сверху/снизу позиция абсолютного элемента является позицией элемента в потоке документов

#box1 {
            width: 150px;
            height: 150px;
            margin-left: 20px;
            margin-bottom: 20px;
            background-color: yellow;
            position: absolute;
        }


На приведенном выше рисунке видно, что два поля перекрываются, потому что: абсолютный элемент позиционируется в соответствии с позицией, в которой он должен появиться в потоке документа, потому что левое/правое и верхнее/нижнее не установлены, в то время как абсолютный элемент элемент отделяется от потока документа, а красный элемент Box, не зная о существовании абсолютного элемента, продолжает размещаться в этой позиции, а абсолютный элемент перезаписывает элемент в обычном потоке документа.

4. Резюме

В основном он представляет относительное позиционирование и абсолютное позиционирование.Другие методы позиционирования относительно просты, и вы узнаете об этом после того, как попробуете. Кроме того, применение относительного позиционирования и абсолютного позиционирования также является более гибким и подходит для различных сценариев.