курси програмування для дітей безкоштовно

9 Position y CSS

Robot 2.0

На цьому заннятті ми створимо власного робота і навчимося визначати position для елементів на сторінці.

Поговоримо про роботів

Як вам ідея такого маленького помічника ? А про яких роботів ви ще чули ? Що вміють робити сучасні роботи ?

Трошки про position

position:static;

Це позиція за замовчуванням у CSS, застосовна до всіх елементів HTML. Ця позиція розміщує елементи HTML один за одним. Властивості top/right/bottom/left не можуть бути застосовані до елементів.

Примітка. Прокручування сторінки впливає на цю позицію.

<body>
    <div class="p1">
    </div>
    <div class="p2">
    </div>
</body>
.p1 {
       width:50px;
       height:50px;
       background-color:cornflowerblue;
       position:static;
       }
.p2 {
     width:50px;
     height:50px;
     background-color:sandybrown;
     }

position:relative;

Це положення розміщує елемент відносно його нормального положення.Тут до елементів можна застосувати властивості top/right/bottom/left.

Примітка. Прокручування сторінки впливає на цю позицію. Якщо положення застосовується лише без властивостей top/right/bottom/left, воно діятиме як статичне положення.

<body>
    <div class="p1">
    </div>
    <div class="p2">
    </div>
</body>


.p1 {
    width:50px;
    height:50px;
    background-color:sandybrown;
}
.p2 {
    width:50px;
    height:50px;
    background-color:lightgreen;
    position:relative;
    left:60px;
    top:20px;
}

position:absolute;

Ця позиція поміщає елемент у точне вказане положення. Це положення відносно:

  • тіла документа, тобто відступ зліва і зверху від початку екрану.
  • батьківського елемента, коли позиція батьківського елемента є відносною/абсолютною.

Примітка. Прокручування сторінки впливає на цю позицію. Цей елемент позиції повністю видаляється зі звичайного потоку документів.

<body>
    <div class="p1">
    </div>
    <div class="p2">
    </div>
    <div class="p3">
    </div>
</body>
.p1 {
    width:50px;
    height:50px;
    background-color:cornflowerblue;
    }

.p2 {
    width:50px;
    height:50px;
    background-color:sandybrown;
    }

.p3 {
    width:50px;
    height:50px;
    background-color:lightgreen;
    position:absolute;
    left:60px;
    top:20px;
    }

position:fixed;

Ця позиція розміщує елемент у фіксованому місці відносно вікна перегляду. Прокрутка сторінки не впливає на це положення.

Примітка. Цей елемент позиції повністю видалено зі звичайного потоку документів.

<body>
    <div class="p1">
    </div>
</body> 
.p1 {
    width:50px;
    height:50px;
    background-color:lightgreen;
    position:fixed;
    left:40px;
    top:40px;
    }

Практика! Конструюємо робота

1: Сьогодні ми будемо збирати власного робота. Для цього вам знадобиться цей проєкт. Зробіть з нього Fork. Посилання тут

Для нашої роботи будуть потрібні картинки. Вони вже є в проєкті, але якщо ви програмуєте не в replit, то їх також можна скачати тут:

https://www.dropbox.com/scl/fo/vzvzrweiozp6ayb82h8p7/h?rlkey=cd3bdbernds6hlqk0a5b0nv7v&dl=0

або використати ці посилання:

https://i.ibb.co/XyW8c3T/bird.png
https://i.ibb.co/yB41jDF/bowtie.png
https://i.ibb.co/2Z5TtRV/crown.png
https://i.ibb.co/YLj9P0q/ears1.png
https://i.ibb.co/808Yp07/ears2.png
https://i.ibb.co/8s6KkGB/eyes1.png
https://i.ibb.co/MVJVKVG/eyes2.png
https://i.ibb.co/2nhhmMp/eyes3.png
https://i.ibb.co/jVrNyZV/face.png
https://i.ibb.co/bbxcPpn/hair1.png
https://i.ibb.co/qxxvvYS/hair2.png
https://i.ibb.co/GVkYrNw/hair3.png
https://i.ibb.co/xXdzK2Y/hair4.png
https://i.ibb.co/r0JQGns/hat.png
https://i.ibb.co/qBwgQcv/headphones.png
https://i.ibb.co/px1PSj8/moustache.png
https://i.ibb.co/q0FFBqt/mouth1.png
https://i.ibb.co/4ZXvgqP/mouth2.png
https://i.ibb.co/3SkDDw5/mouth3.png
https://i.ibb.co/kJMVQ4K/necklace.png
https://i.ibb.co/v48BhY6/nose1.png
https://i.ibb.co/48W3Wbq/nose2.png
https://i.ibb.co/mFYkfdp/nose3.png
https://i.ibb.co/WH6Q3XW/sunglasses.png
https://i.ibb.co/9nbjDLk/Screenshot-1.png
https://i.ibb.co/fnP8pZB/antenna.png

Якщо ви використовуєте такі картинки, то посилання в коді на них треба буде оновити!

2: Додайте html-код для опису обличчя, шапки, очей і носа

<div class = 'face'>
    <div class = 'hat'></div>
    <div class = 'left-eye'></div>
    <div class = 'right-eye'></div>
    <div class = 'nose'></div>
</div>

3: Це заготовка з пістих div, тому сторінка і досі пуста. Але нам не вистачає стилів, щоб робот почав оживати. Додайте CSS-код:

.face{
    width: 300px;
    height: 480px;
    background-image: url(images/face.png);
    background-size: contain;
    margin-top: 20px;
    background-repeat: no-repeat;
    position: absolute;
}

.hat{
    width: 100px;
    height: 200px;
    background-image: url(images/hat.png);
    background-size: contain;
    background-repeat: no-repeat;
    position: absolute;
    top: -40px;
    left: 42px;
}

Налаштуйте ширину і висоту шапочки так, щоб вона якраз опинилася на голові

  • background-size – визначає як буде вести себе картинка на тлі (її розмір)
    • contain -робить зображення якомога більшим в межах контейнера без обрізання або розтягування зображення. Якщо контейнер більший за зображення, це призведе до мозаїки зображення, якщо для властивості background-repeat не встановлено значення no-repeat.
    • cover – робить зображення якомога меншим в межах контейнера (зберігаючи його співвідношення) Тобто: його висота та ширина повністю покривають контейнер, не залишаючи порожнього простору. Якщо пропорції фону відрізняються від елемента, зображення обрізається вертикально або горизонтально.
  • background-repeat – чи буде картинка повторяться на тлі
  • position – міняти розташування об’єкта на сторінці (НЕ дивлячись на те де тег знаходиться в html-DOM)
  • top, left – відступ по висоті і по ширині від лівого верхнього кута елемента з властивістю position: absolute

4: Додаємо стилі для очей (картинку оберіть одну з троьх в папці). Додайте праве око .right-eye, змініть для нього відповідні стилі, щоб воно розтащувалося де треба

.left-eye{
    width: 50px;
    height: 50px;
    background-image: url(images/eyes1.png);
    background-size: cover;
    background-repeat: no-repeat;
    position: absolute;
    top: 135px;
    left: 80px;
}

5: Додайте стилі для того, щоб коли наводиш курсор на обличчя, очі змінювались.

.face:hover .left-eye {
    background-image: url(images/eyes2.png);
}

6: Зробіть те саме для іншого ока

: hover – означає, що на елемент навели курсор.

7: Додайте такий код. Подивись як він працює.

.face:hover .hat{
    display: none;
}

8: Додайте ніс роботу. Які зміни треба зробити в HTML? Що додати в CSS?

9 (Додаткове): Додайте картинку на сторінку. Зробіть так, щоб картинка змінювалася на іншу, коли на неї наводиш мишку

домашка з програмування

Домашнє завдання

  1. Доробіть робота: додай ніс, рот, вуха, метелика на шию
  2. Змініть рот робота, якщо навести на нього курсор
  3. Додайте окуляри для сонця, або навушники, або кольє, або вуса, або корону
  4. Якщо навести курсор на всього робота – ховати шапку і показувати волосся і пташку на волоссі.

Підказка по домашці:

 Завдання 1 : Ніс: В html файлі перевірте, що є відповідний клас <div class = ‘nose’></div> , а потім додайте стилі для носа. 

Можна взяти скопіювати з одного з очей і поміняти на ніс:

.nose{
  width: 50px;
    height: 50px;
    background-image: url(images/eyes1.png);
    background-size: cover;
    background-repeat: no-repeat;
    position: absolute;
    top: 135px;
    left: 80px;
}

Картинка для носа буде images/nose.png, для ротика і вух теж можна знайти картинки за назвами англійською
Щоб ніс встав на своє місце, треба погратися зі значеннями останніх властивостей : top та left.
Щоб додати рот і вуха, треба щей в новий рядок в HTML-документі. Бо для носа є <div class = ‘nose’></div>, а для рота немає.

домашка з програмування

Level Up!

1: Додайте:

  • Назву робота (обведіть назву в рамку)
  • Характеристики. Наприклад : рік виробництва, потужність, ціна (можете придумати інші). Характеристики виділіть якимось кольором

2: За допомогою paint або іншого редактора намалюйте свою картинку для двох частин тіла робота (око, обличчя або щось інше….) Додайте картинки в проєкт і використайте їх у своєму роботі.

Не забудьте, що картинку треба зберегти як png, щоб не було видно фону.

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *