Elementor Header #8

38. Позиционирование

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

Основные методы позиционирования

  1. Статическое позиционирование (static)
  2. Относительное позиционирование (relative)
  3. Абсолютное позиционирование (absolute)
  4. Фиксированное позиционирование (fixed)
  5. Зависимое позиционирование (sticky)
1. Статическое позиционирование

По умолчанию все элементы имеют статическое позиционирование. Это означает, что элементы отображаются в порядке их появления в HTML-документе, без возможности управления их положением с помощью свойств top, right, bottom и left.

Пример:

				
					.static-box {
    background-color: lightblue;
    width: 100px;
    height: 100px;
}

				
			

HTML:

				
					<div class="static-box">Статическое</div>

				
			
2. Относительное позиционирование

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

Пример:

				
					.relative-box {
    position: relative;
    top: 20px;
    left: 30px;
    background-color: lightcoral;
    width: 100px;
    height: 100px;
}

				
			

HTML:

				
					<div class="relative-box">Относительное</div>

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

Элементы с абсолютным позиционированием размещаются относительно ближайшего предка, у которого установлено позиционирование (не static). Если таких предков нет, элемент позиционируется относительно html документа.

Пример:

				
					.absolute-box {
    position: absolute;
    top: 50px;
    right: 50px;
    background-color: lightgreen;
    width: 100px;
    height: 100px;
}

				
			

HTML:

				
					<div class="relative-box">
    <div class="absolute-box">Абсолютное</div>
</div>

				
			
4. Фиксированное позиционирование

Элементы с фиксированным позиционированием остаются на месте относительно окна просмотра (viewport) и не перемещаются при прокрутке страницы.

Пример:

				
					.fixed-box {
    position: fixed;
    bottom: 10px;
    right: 10px;
    background-color: lightgoldenrodyellow;
    width: 100px;
    height: 100px;
}

				
			

HTML:

				
					<div class="fixed-box">Фиксированное</div>

				
			
5. Зависимое позиционирование

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

Пример:

				
					.sticky-box {
    position: sticky;
    top: 0;
    background-color: lightpink;
    width: 100px;
    height: 100px;
}

				
			

HTML:

				
					<div class="sticky-box">Зависимое</div>

				
			

Практическое применение

Создание фиксированного навигационного меню

				
					.navbar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background-color: #333;
    color: white;
    padding: 10px;
    text-align: center;
}

				
			

HTML:

				
					<div class="navbar">
    Навигационное меню
</div>

				
			

Использование относительного и абсолютного позиционирования для создания всплывающего окна

				
					.popup-container {
    position: relative;
    width: 200px;
    height: 200px;
    background-color: lightblue;
}

.popup {
    position: absolute;
    top: 20px;
    right: 20px;
    background-color: lightcoral;
    padding: 10px;
    width: 150px;
}

				
			

HTML:

				
					<div class="popup-container">
    <div class="popup">
        Всплывающее окно
    </div>
</div>

				
			

Распространённые ошибки

  1. Игнорирование контекста позиционирования: Если элементы с абсолютным позиционированием не отображаются, проверьте, что у их предков установлено позиционирование (отличное от static).

  2. Конфликты между фиксированным и относительным позиционированием: Убедитесь, что использование фиксированного позиционирования не перекрывает другие элементы, если это не предусмотрено.

  3. Проблемы с sticky позиционированием: position: sticky может не работать в некоторых старых браузерах или при неправильной настройке контейнера. Проверьте совместимость и настройки.

Заключение

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

Тестовое задание

  1. Создайте HTML-документ с элементами, применяя различные методы позиционирования: статическое, относительное, абсолютное, фиксированное и зависимое.
  2. Создайте фиксированное навигационное меню, которое будет оставаться вверху страницы при прокрутке.
  3. Создайте всплывающее окно внутри контейнера, используя относительное и абсолютное позиционирование.
  4. Используйте зависимое позиционирование для создания элемента, который остается в пределах видимой области, но перемещается при прокрутке страницы.

HTML-документ:

				
					<!DOCTYPE html>
<html>
<head>
    <style>
        .static-box {
            background-color: lightblue;
            width: 100px;
            height: 100px;
        }

        .relative-box {
            position: relative;
            top: 20px;
            left: 30px;
            background-color: lightcoral;
            width: 100px;
            height: 100px;
        }

        .absolute-box {
            position: absolute;
            top: 50px;
            right: 50px;
            background-color: lightgreen;
            width: 100px;
            height: 100px;
        }

        .fixed-box {
            position: fixed;
            bottom: 10px;
            right: 10px;
            background-color: lightgoldenrodyellow;
            width: 100px;
            height: 100px;
        }

        .sticky-box {
            position: sticky;
            top: 0;
            background-color: lightpink;
            width: 100px;
            height: 100px;
        }

        .navbar {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            background-color: #333;
            color: white;
            padding: 10px;
            text-align: center;
        }

        .popup-container {
            position: relative;
            width: 200px;
            height: 200px;
            background-color: lightblue;
            margin-top: 50px;
        }

        .popup {
            position: absolute;
            top: 20px;
            right: 20px;
            background-color: lightcoral;
            padding: 10px;
            width: 150px;
        }
    </style>
</head>
<body>
    <div class="navbar">Навигационное меню</div>
    <div class="static-box">Статическое</div>
    <div class="relative-box">Относительное</div>
    <div class="popup-container">
        <div class="popup">Всплывающее окно</div>
    </div>
    <div class="fixed-box">Фиксированное</div>
    <div class="sticky-box">Зависимое</div>
<script>"use strict";function wprRemoveCPCSS(){var preload_stylesheets=document.querySelectorAll('link[data-rocket-async="style"][rel="preload"]');if(preload_stylesheets&&0<preload_stylesheets.length)for(var stylesheet_index=0;stylesheet_index<preload_stylesheets.length;stylesheet_index++){var media=preload_stylesheets[stylesheet_index].getAttribute("media")||"all";if(window.matchMedia(media).matches)return void setTimeout(wprRemoveCPCSS,200)}var elem=document.getElementById("rocket-critical-css");elem&&"remove"in elem&&elem.remove()}window.addEventListener?window.addEventListener("load",wprRemoveCPCSS):window.attachEvent&&window.attachEvent("onload",wprRemoveCPCSS);</script><script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode-wpr",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script><noscript><link rel='stylesheet' id='hello-elementor-theme-style-css' href='https://codefor.tech/wp-content/themes/hello-elementor/theme.min.css?ver=3.0.2' media='all' /><link data-minify="1" rel='stylesheet' id='jet-menu-hello-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/jet-menu/integration/themes/hello-elementor/assets/css/style.css?ver=1724486282' media='all' /><link rel='stylesheet' id='sweetalert2-css' href='https://codefor.tech/wp-content/plugins/user-registration/assets/css/sweetalert2/sweetalert2.min.css?ver=10.16.7' media='all' /><link data-minify="1" rel='stylesheet' id='user-registration-general-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/user-registration/assets/css/user-registration.css?ver=1724486282' media='all' /><link data-minify="1" rel='stylesheet' id='user-registration-smallscreen-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/user-registration/assets/css/user-registration-smallscreen.css?ver=1724486282' media='only screen and (max-width: 768px)' /><link data-minify="1" rel='stylesheet' id='user-registration-my-account-layout-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/user-registration/assets/css/my-account-layout.css?ver=1724486282' media='all' /><link data-minify="1" rel='stylesheet' id='dashicons-css' href='https://codefor.tech/wp-content/cache/min/1/wp-includes/css/dashicons.min.css?ver=1724486282' media='all' /><link rel='stylesheet' id='hello-elementor-css' href='https://codefor.tech/wp-content/themes/hello-elementor/style.min.css?ver=3.0.2' media='all' /><link rel='stylesheet' id='hello-elementor-header-footer-css' href='https://codefor.tech/wp-content/themes/hello-elementor/header-footer.min.css?ver=3.0.2' media='all' /><link rel='stylesheet' id='elementor-frontend-css' href='https://codefor.tech/wp-content/plugins/elementor/assets/css/frontend-lite.min.css?ver=3.21.8' media='all' /><link rel='stylesheet' id='elementor-post-6-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-6.css?ver=1718118435' media='all' /><link data-minify="1" rel='stylesheet' id='font-awesome-all-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/jet-menu/assets/public/lib/font-awesome/css/all.min.css?ver=1724486282' media='all' /><link rel='stylesheet' id='font-awesome-v4-shims-css' href='https://codefor.tech/wp-content/plugins/jet-menu/assets/public/lib/font-awesome/css/v4-shims.min.css?ver=5.12.0' media='all' /><link data-minify="1" rel='stylesheet' id='jet-menu-public-styles-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/jet-menu/assets/public/css/public.css?ver=1724486282' media='all' /><link data-minify="1" rel='stylesheet' id='swiper-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver=1724486282' media='all' /><link rel='stylesheet' id='elementor-pro-css' href='https://codefor.tech/wp-content/plugins/elementor-pro/assets/css/frontend-lite.min.css?ver=3.21.3' media='all' /><link rel='stylesheet' id='elementor-global-css' href='https://codefor.tech/wp-content/uploads/elementor/css/global.css?ver=1718118436' media='all' /><link rel='stylesheet' id='elementor-post-1997-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-1997.css?ver=1722992768' media='all' /><link rel='stylesheet' id='elementor-post-8-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-8.css?ver=1719760051' media='all' /><link rel='stylesheet' id='elementor-post-42-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-42.css?ver=1718469014' media='all' /><link rel='stylesheet' id='jquery-chosen-css' href='https://codefor.tech/wp-content/plugins/jet-search/assets/lib/chosen/chosen.min.css?ver=1.8.7' media='all' /><link data-minify="1" rel='stylesheet' id='jet-search-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/jet-search/assets/css/jet-search.css?ver=1724486282' media='all' /><link rel='stylesheet' id='google-fonts-1-css' href='https://fonts.googleapis.com/css?family=Roboto%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%7CRoboto+Slab%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C400%2C400italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic&#038;display=swap&#038;subset=cyrillic&#038;ver=6.6.2' media='all' /><link rel="stylesheet" href="https://codefor.tech/wp-content/plugins/elementor-pro/assets/css/widget-theme-elements.min.css"><link rel="stylesheet" href="https://codefor.tech/wp-content/plugins/elementor/assets/css/widget-icon-list.min.css"><link rel='stylesheet' id='elementor-post-416-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-416.css?ver=1724268811' media='all' /><link rel='stylesheet' id='elementor-post-471-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-471.css?ver=1722847712' media='all' /><link rel='stylesheet' id='prismjs_style-css' href='https://codefor.tech/wp-content/plugins/elementor-pro/assets/css/modules/code-highlight.min.css?ver=1.23.0' media='' /><link data-minify="1" rel='stylesheet' id='mailpoet_public-css' href='https://codefor.tech/wp-content/cache/min/1/wp-content/plugins/mailpoet/assets/dist/css/mailpoet-public.c7ad0042.css?ver=1724486282' media='all' /><link rel='stylesheet' id='mailpoet_custom_fonts_0-css' href='https://fonts.googleapis.com/css?family=Abril+FatFace%3A400%2C400i%2C700%2C700i%7CAlegreya%3A400%2C400i%2C700%2C700i%7CAlegreya+Sans%3A400%2C400i%2C700%2C700i%7CAmatic+SC%3A400%2C400i%2C700%2C700i%7CAnonymous+Pro%3A400%2C400i%2C700%2C700i%7CArchitects+Daughter%3A400%2C400i%2C700%2C700i%7CArchivo%3A400%2C400i%2C700%2C700i%7CArchivo+Narrow%3A400%2C400i%2C700%2C700i%7CAsap%3A400%2C400i%2C700%2C700i%7CBarlow%3A400%2C400i%2C700%2C700i%7CBioRhyme%3A400%2C400i%2C700%2C700i%7CBonbon%3A400%2C400i%2C700%2C700i%7CCabin%3A400%2C400i%2C700%2C700i%7CCairo%3A400%2C400i%2C700%2C700i%7CCardo%3A400%2C400i%2C700%2C700i%7CChivo%3A400%2C400i%2C700%2C700i%7CConcert+One%3A400%2C400i%2C700%2C700i%7CCormorant%3A400%2C400i%2C700%2C700i%7CCrimson+Text%3A400%2C400i%2C700%2C700i%7CEczar%3A400%2C400i%2C700%2C700i%7CExo+2%3A400%2C400i%2C700%2C700i%7CFira+Sans%3A400%2C400i%2C700%2C700i%7CFjalla+One%3A400%2C400i%2C700%2C700i%7CFrank+Ruhl+Libre%3A400%2C400i%2C700%2C700i%7CGreat+Vibes%3A400%2C400i%2C700%2C700i&#038;ver=6.6.2' media='all' /><link rel='stylesheet' id='mailpoet_custom_fonts_1-css' href='https://fonts.googleapis.com/css?family=Heebo%3A400%2C400i%2C700%2C700i%7CIBM+Plex%3A400%2C400i%2C700%2C700i%7CInconsolata%3A400%2C400i%2C700%2C700i%7CIndie+Flower%3A400%2C400i%2C700%2C700i%7CInknut+Antiqua%3A400%2C400i%2C700%2C700i%7CInter%3A400%2C400i%2C700%2C700i%7CKarla%3A400%2C400i%2C700%2C700i%7CLibre+Baskerville%3A400%2C400i%2C700%2C700i%7CLibre+Franklin%3A400%2C400i%2C700%2C700i%7CMontserrat%3A400%2C400i%2C700%2C700i%7CNeuton%3A400%2C400i%2C700%2C700i%7CNotable%3A400%2C400i%2C700%2C700i%7CNothing+You+Could+Do%3A400%2C400i%2C700%2C700i%7CNoto+Sans%3A400%2C400i%2C700%2C700i%7CNunito%3A400%2C400i%2C700%2C700i%7COld+Standard+TT%3A400%2C400i%2C700%2C700i%7COxygen%3A400%2C400i%2C700%2C700i%7CPacifico%3A400%2C400i%2C700%2C700i%7CPoppins%3A400%2C400i%2C700%2C700i%7CProza+Libre%3A400%2C400i%2C700%2C700i%7CPT+Sans%3A400%2C400i%2C700%2C700i%7CPT+Serif%3A400%2C400i%2C700%2C700i%7CRakkas%3A400%2C400i%2C700%2C700i%7CReenie+Beanie%3A400%2C400i%2C700%2C700i%7CRoboto+Slab%3A400%2C400i%2C700%2C700i&#038;ver=6.6.2' media='all' /><link rel='stylesheet' id='mailpoet_custom_fonts_2-css' href='https://fonts.googleapis.com/css?family=Ropa+Sans%3A400%2C400i%2C700%2C700i%7CRubik%3A400%2C400i%2C700%2C700i%7CShadows+Into+Light%3A400%2C400i%2C700%2C700i%7CSpace+Mono%3A400%2C400i%2C700%2C700i%7CSpectral%3A400%2C400i%2C700%2C700i%7CSue+Ellen+Francisco%3A400%2C400i%2C700%2C700i%7CTitillium+Web%3A400%2C400i%2C700%2C700i%7CUbuntu%3A400%2C400i%2C700%2C700i%7CVarela%3A400%2C400i%2C700%2C700i%7CVollkorn%3A400%2C400i%2C700%2C700i%7CWork+Sans%3A400%2C400i%2C700%2C700i%7CYatra+One%3A400%2C400i%2C700%2C700i&#038;ver=6.6.2' media='all' /><link rel='stylesheet' id='elementor-post-487-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-487.css?ver=1719159596' media='all' /><link rel='stylesheet' id='elementor-post-497-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-497.css?ver=1724485504' media='all' /><link rel='stylesheet' id='elementor-post-503-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-503.css?ver=1718466482' media='all' /><link rel='stylesheet' id='elementor-post-329-css' href='https://codefor.tech/wp-content/uploads/elementor/css/post-329.css?ver=1718467092' media='all' /></noscript></body>
</html>

				
			
Этот урок поможет вам освоить методы позиционирования в CSS и научиться применять их для управления расположением элементов на веб-странице.
logo