Как задать координаты текста в html
Перейти к содержимому

Как задать координаты текста в html

  • автор:

22 CSS-свойства для позиционирования

Maria Hladka

В статье пойдет речь о нескольких редко упоминаемых в технической литературе свойствах CSS. Тем не менее их использование повлечет за собой повышение скорости и качества разработки веб-интерфейсов.

Экспериментальные свойства также рассматриваются в статье, но большинство функционала все-таки доступно во всех современных браузерах. Однако следует уточнить перед запуском производственного решения, какие браузеры поддерживают каждое из используемых вами свойств.

Итак, вы готовы к небольшому путешествию в удивительный и почти безграничный мир CSS?

Свойства display: grid и place-items

CSS-свойства grid и place-items позволяют удобно выравнивать элементы по горизонтали и вертикали с помощью всего двух строк кода:

Свойство place-items похоже на сокращенную для удобства версию свойств justify-items и align-items .

Его можно применять к одной или нескольким (дочерним) ячейкам одновременно.

Свойства display: flex и margin: auto

Еще один современный способ выравнивания элементов по горизонтали и вертикали — комбинирование свойства display: flex с margin: auto :

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

Свойства display: flex и gap

Раз уж статья затрагивает использование Flexbox, то стоит упомянуть: наконец-то реализована возможность устанавливать промежутки между элементами flex с помощью свойства gap (очень полезный функционал):

Свойство display: inline-flex

Использование свойства display: inline-flex позволяет создавать строчные элементы ( inline ), которые ведут себя с окружающими их элементами похоже на свойство Flexbox. Вместо тысячи слов — один пример!

  • HTML-файл:
  • CSS-файл:

Свойства column-count, column-gap и column-rule для создания колонок таблицы

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

  • column-count задает количество колонок;
  • column-gap указывает размер промежутка между колонками;
  • column-rule отвечает за стиль отображения вертикальной линии между колонками.

Существует также сокращенное свойство columns , заменяющее column-count и column-width .

  • HTML-файл:
  • CSS-файл:

Свойство background-repeat

Свойство background-repeat задает порядок заполнения фона указанным изображением. Значение round равномерно распределяет изображения по всей ширине контейнера, а значение space добавляет небольшие отступы между изображениями.

  • HTML-файл:
  • CSS-файл:

Свойство background-blend-mode

Свойство background-blend-mode задает порядок, в котором фоновое изображение и цвет (или несколько фоновых изображений/цветов) должны смешиваться друг с другом.

Данному свойству можно задать следующие значения:

  • color
  • color-burn
  • color-dodge
  • darken
  • difference
  • exclusion
  • hard-light
  • hue
  • lighten
  • luminosity
  • multiply
  • overlay
  • saturation
  • screen
  • soft-light

Вы когда-нибудь работали с Photoshop? Тогда, скорее всего, вы поймёте, о чем сейчас пойдёт речь.

Предположим, что в вашем распоряжении находится черно-белое изображение, подобранное вами для фона. Но в то же время вы хотите, чтобы изображение было цветным. Как же вам этого добиться?

  • HTML-файл:
  • CSS-файл:

Свойство background-clip

Свойство background-clip определяет, насколько фоновый цвет или фоновое изображение может выйти за пределы padding элемента. Одним из самых интересных значений данного свойства можно назвать text , как в следующем примере.

  • HTML-файл:
  • CSS-файл:

Свойство filter

Данное свойство позволяет применять к элементам некоторые визуальные эффекты.

Функции из следующего списка доступны в качестве возможных значений свойства filter :

  • url()
  • blur()
  • brightness()
  • contrast()
  • drop-shadow()
  • grayscale()
  • hue-rotate()
  • invert()
  • opacity()
  • saturate()
  • sepia()

Теперь ознакомимся с примером реализации функционала изменения цветовых тем (или схем) на сайте для тех, кто ленится.

  • HTML-файл:
  • CSS-файл:

На сайте CSSgram вы найдете пример использования CSS-свойства filter для создания фильтров, очень похожих на те, что есть в Instagram.

Свойство filter со значением drop-shadow

Свойство filter с установленным значением drop-shadow() , в отличие от box-shadow , которое аналогично по применяемому эффекту, позволяет добавить тень к самому изображению (в формате PNG), а не к блочному элементу, который её обрамляет.

  • HTML-файл:
  • CSS-файл:

Свойство object-fit

Свойство object-fit управляет соотношением сторон заменяемых элементов, таких как img и video , если они имеют ширину или высоту, а также руководит процессом масштабирования.

Например, значение scale-down позволяет сохранить соотношение сторон изображения независимо от размера блока.

  • HTML-файл:
  • CSS-файл:

Свойство object-position используется для выравнивания содержимого в любом выбранном заменяемом элементе в пределах родительского блочного элемента.

Свойство cursor для настройки параметров отображения курсора

Знаете ли вы, что помимо значков курсора, по умолчанию предоставляемых браузером (например, cursor: pointer ), мы можем задавать собственные растровые и векторные изображения в формате SVG?

  • HTML-файл:
  • CSS-файл:

Свойство scroll-behavior

Свойство scroll-behavior с установленным для него значением smooth , позволяет легко реализовать плавную прокрутку между подразделами страницы.

  • HTML-файл:
  • CSS-файл:

Свойство text-overflow

Свойство text-overflow со значением, установленным как ellipsis , позволяет добавить символ троеточия в конец текста, но только в том случае, если текст начинает выходить за пределы контейнера.

  • CSS-файл:

Свойство caret-color

Свойство caret-color задает цвет для каретки текста. Это такой видимый маркер (символ |), явно указывающий, куда прямо сейчас вставляется следующий набранный пользователем символ.

  • CSS-файл:

CSS-правило @supports

Правило @supports позволит вам выполнить проверку используемого свойства или комбинации свойства со значением на поддерживаемость конкретным браузером пользователя.

  • CSS-файл:

Функция var()

Функция var() позволяет использовать значения пользовательских переменных в качестве значений для свойств CSS. Вторым необязательным параметром этой функции передается резервное значение.

Функция calc()

Функция calc() используется для указания уже посчитанного значения тем свойствам, которые применяют в качестве значений показатель размера, угла, времени или числа. Это позволяет основывать эти значения на результате операций сложения или вычитания различных единиц измерения.

Обычно абсолютно позиционированный элемент выравнивается по горизонтали и вертикали следующим образом.

  • CSS-файл:

Когда нам известны размеры элемента, можно сделать следующее.

  • CSS-файл:

Функция attr()

С помощью функции attr() можно получить значение атрибута выбранного элемента и использовать его в стилях CSS.

Всплывающие подсказки реализуются с помощью CSS следующим образом.

  • HTML-файл:
  • CSS-файл:

Псевдокласс :target

С помощью псевдокласса :target создаются модальные окна, которые работают без использования JavaScript.

  • HTML-файл
  • CSS-файл

Псевдокласс ::marker

Ранее было весьма распространено удаление маркеров списка с помощью свойства list-style: none , а также добавление собственных изображений для маркеров с помощью псевдоэлементов ::before или ::after . Теперь есть более простой способ настройки маркеров списка — можно использовать псевдоэлемент ::marker .

  • HTML-файл:
  • CSS-файл:

Псевдокласс ::selection

Псевдоэлемент ::selection позволяет настроить внешний вид для выделения текста.

Методы позиционирования элементов в CSS

Методы позиционирования элементов в CSS

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

Что это значит? Во-первых, вывод элементов на страницу браузер осуществляет в том порядке, в котором они следуют в HTML коде .

Вывод элементов на страницу браузер осуществляет в том порядке, в котором они следуют в HTML коде

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

Отображение вложенных друг в друга элементов, находящихся в базовом потоке

В-третьих, положение элемента в потоке зависит от значения свойства display .

Размещение элементов с блочным и строчным отображением в потоке

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

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

Элементы со строчным отображением ( display: inline ) выводятся иначе. Они в отличии от блочных элементов не размещаются каждый на новой строке, а следуют друг за другом слево направо. Если пространство справа закончилось, то они переносятся на следующую строку, а не на новую линию как элементы с блочным отображением.

Кроме block , inline есть и другие варианты отображения элементов, но все они располагаются в базовом потоке документа.

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

К этим свойствам относятся position и float .

CSS-свойство position

CSS свойство position — это одно из свойств с помощью которого можно изменить базовое поведение элементов в потоке. Другими словами, данное свойство позволяет «выдернуть» любой элемент из потока документа и разместить его в другом месте относительно окна браузера или других элементов на веб-странице.

Свойство position имеет 5 значений:

  • static (статичное позиционирование);
  • relative (относительное);
  • absolute (абсолютное);
  • fixed (фиксированное);
  • sticky (липкое).

static — это значение по умолчанию. Оно означает что элемент находится в базовом потоке.

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

Это, например, происходит при задании элементу position: absolute или position: fixed . В этом случае место не сохраняется за элементом. Другие элементы его «не видят» и располагаются, игнорируя его присутствие в коде.

Статичное позиционирование (static)

Свойство position со значением static элементам назначается по умолчанию . Это значение означает что элемент является не позиционированным , т.е. отображается как обычно (в потоке).

Явная установка элементу CSS-свойства position: static может понадобиться только в том случае, когда нужно переопределить другое значение position установленное элементу.

Установка CSS свойств для задания положения элемента left , top , right и bottom никакого влияния на него не оказывают, т.к. его местонахождение определяется потоком документа .

Пример выстраивания статично позиционированных элементов:

Статичное позиционирование блоков

Относительное позиционирование (relative)

Установка относительного позиционирования элементу осуществляется посредством задания ему CSS свойства position: relative .

Относительно позиционированный элемент ведёт себя как элемент в потоке за исключением того, что его текущее положение можно при помощи определённых CSS свойств сместить. К этим CSS свойствам относятся left , top , right и bottom .

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

Если одновременно установить top и bottom , то будет применено значение top , т.к. оно является более приоритетным, чем bottom :

Для сдвига элемента вправо или влево используется CSS свойство left или right :

Если одновременно установить left и right , то приоритетным будет значение, находящееся в left :

Для сдвига по двум осям нужно использовать top или bottom , и left или right :

Пример, в котором 2 элементу установим относительное позиционирование и сместим его на 20px вверх и влево относительно его исходного положения:

Пример, в котором показано как в CSS задать элементу относительное позиционирование

Если в некоторой области страницы оказываются несколько позиционированных элементов, то они перекрывают друг на друга в определённом порядке. При этом по умолчанию выше оказывается тот элемент, который ниже описан в коде. Но порядок перекрытия элементов (их положение перпендикулярное экрану, т.е. вдоль оси Z) можно изменить. Осуществляется в CSS это с помощью свойства z-index . z-index может принимать отрицательные и положительные целые число, auto и 0 . Но, хорошей практикой является использование в качестве z-index чисел из диапазона 0-9999 .

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

Абсолютное позиционирование (absolute)

Установка абсолютного позиционирования элементу осуществляется посредством задания ему position: absolute .

Этот тип позиционирования позволяет разместить элемент именно там, где вы хотите.

Позиционирование выполняется относительно ближайшего позиционированного предка.

Под позиционированным элементом понимается элемент с position , равным relative , absolute , fixed или sticky .

В этом примере позиционирование элемента #id-3 будет выполнять относительно #id-2 , т.к. он является позиционированным и является по отношению к нему более близким предком.

Если данный элемент не был бы позиционированным, то позиционирование #id-3 выполнялось бы относительно #id-1 :

Если среди предков у элемента с position: absolute нет позиционированного элемента, то в этом случае он будет позиционироваться относительно HTML страницы, т.е. элемента body .

Когда элементу устанавливаем position: absolute без указания CSS-свойств ( top , left , right и bottom ), определяющих его положение , он будет находиться в том месте, в котором он был бы расположен, если бы находился в потоке (при этом при вычислении его положения учитываются только элементы, расположенные до него в коде и находящиеся в потоке).

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

Пример, в котором показано как в CSS задать элементу абсолютное позиционирование

CSS-свойства для управления положением абсолютно позиционированного элемента работают по-другому чем с position: relative .

CSS-свойства top , bottom , left и right задают положение элемента относительно ближайшего позиционированного предка или body , если такого предка нет.

Установить ширину (высоту) абсолютно позиционированному можно с помощью установки ему двух координат top и bottom ( left и right ).

Если элементу одновременно установить top , bottom и height , то предпочтение будет отдано top и height .

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

Блок с абсолютным позиционированием

Фиксированное позиционирование (fixed)

Задание элементу фиксированного позиционирования осуществляется посредством установки ему position: fixed .

Фиксированное позиционирование похоже на абсолютное, но в отличии от него оно всегда привязывается к краям окна браузера (viewport), и остаётся в таком положении даже при скроллинге страницы.

Фиксированное позиционирование применяется для закрепления на странице навигационных меню, кнопки «вверх», панелей с социальными кнопками и многого другого.

Блок с фиксированным позиционированием

Совместное использование относительного и абсолютного позиционирования

Относительное позиционирование очень часто используется вместе с абсолютным позиционированием.

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

5: Позиционирование

Этот раздел посвящен размещению блочных элементов HTML-разметки в рабочей области браузера с точностью до пиксела. До появления спецификации CSS-P , которая вошла в спецификацию CSS2, ничего подобного делать на HTML-страницах было нельзя. Некоторые наиболее пристрастные читатели могут спросить: «А как насчет элемента разметки LAYER ?». Во-первых, LAYER был введен Netscape практически одновременно с появлением CSS-P, а во-вторых, он поддерживается только браузерами Netscape.

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

До появления CSS-P единственным средством относительно точного позиционирования были таблицы. Они позволяли точно расположить компоненты HTML-страницы относительно друг друга на плоскости. CSS-P позволяет точно разместить элемент разметки не только относительно других компонентов страницы, но и относительно границ страницы.

Кроме того, CSS-P добавляет странице еще одно измерение — элементы разметки могут «наезжать» друг на друга.

При этом можно менять порядок «наезда» — перекладывать слои . Чтобы в этом убедиться, достаточно воспользоваться ссылкой из приведенного примера.

Свойство position

Свойство position позволяет сдвигать элемент со своего обычного места. Цель этой главы – не только напомнить, как оно работает, но и разобрать ряд частых заблуждений и граблей.

position: static

Статическое позиционирование производится по умолчанию, в том случае, если свойство position не указано.

Его можно также явно указать через CSS-свойство:

Такая запись встречается редко и используется для переопределения других значений position .

Здесь и далее, для примеров мы будем использовать следующий документ:

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

Элемент с position: static ещё называют не позиционированным.

position: relative

Относительное позиционирование сдвигает элемент относительно его обычного положения.

Для того, чтобы применить относительное позиционирование, необходимо указать элементу CSS-свойство position: relative и координаты left/right/top/bottom .

Этот стиль сдвинет элемент на 10 пикселей относительно обычной позиции по вертикали:

Координаты

Для сдвига можно использовать координаты:

  • top – сдвиг от «обычной» верхней границы
  • bottom – сдвиг от нижней границы
  • left – сдвиг слева
  • right – сдвиг справа

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

Возможны отрицательные координаты и координаты, использующие другие единицы измерения. Например, left: 10% сдвинет элемент на 10% его ширины вправо, а left: -10% – влево. При этом часть элемента может оказаться за границей окна:

Свойства left/top не будут работать для position:static . Если их всё же поставить, браузер их проигнорирует. Эти свойства предназначены для работы только с позиционированными элементами.

position: absolute

Абсолютное позиционирование делает две вещи:

  1. Элемент исчезает с того места, где он должен быть и позиционируется заново. Остальные элементы, располагаются так, как будто этого элемента никогда не было.
  2. Координаты top/bottom/left/right для нового местоположения отсчитываются от ближайшего позиционированного родителя, т.е. родителя с позиционированием, отличным от static . Если такого родителя нет – то относительно документа.
  • Ширина элемента с position: absolute устанавливается по содержимому. Детали алгоритма вычисления ширины описаны в стандарте.
  • Элемент получает display:block , который перекрывает почти все возможные display (см. Relationships between „display“, „position“, and „float“).

Например, отпозиционируем заголовок в правом-верхнем углу документа:

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

Так как при position:absolute размер блока устанавливается по содержимому, то широкий Заголовок «съёжился» до прямоугольника в углу.

Иногда бывает нужно поменять элементу position на absolute , но так, чтобы элементы вокруг не сдвигались. Как правило, это делают, меняя соседей – добавляют margin/padding или вставляют в документ пустой элемент с такими же размерами.

В абсолютно позиционированном элементе можно одновременно задавать противоположные границы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *