Часть 1. Узнайте, как использовать позиционирование CSS и flexbox

В этой статье мы собираемся создать плавающую кнопку действия (FAB) с помощью чистого CSS. Мы будем использовать различные варианты позиционирования CSS для создания этого FAB, такие как fixed и absolute.

Во-первых, мы добавляем ‹div› с несколькими словами внутри него. Мы также вставляем CDN fontawesome.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css"
integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
<body>
<div>some text</div>
</body>
</html>

Добавьте большую кнопку

Теперь нам нужно создать большую кнопку внизу справа. Итак, мы добавляем следующие ‹div›.

Под предыдущим ‹div›. мы добавляем ‹div class="fab-container"›, который будет обертывать все кнопки. Мы хотим расположить все эти вещи в правом нижнем углу страницы.

<body>
<div>some text</div>
<div class="fab-container">
<div class="button iconbutton">
<i class="fa-solid fa-plus"></i>
</div>
</div>
</body>

потрясающий контейнер

Итак, мы добавляем правила CSS, устанавливаем фиксированное положение, 50 пикселей снизу и 50 пикселей справа. Добавьте курсор: указатель, чтобы он выглядел как кнопка.

.fab-container{
position:fixed;
bottom:50px;
right:50px;
cursor:pointer;
}

кнопка со значком

Затем мы добавляем ‹div class="button iconbutton"›, чтобы обернуть иконку шрифтового плюса.

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

button заключается в создании кнопки большего размера, чтобы позже пользователь мог активировать все параметры, нажав на эту большую кнопку «+».

.iconbutton{
width:50px;
height:50px;
border-radius: 100%;
background: #FF4F79;
box-shadow: 10px 10px 5px #aaaaaa;
}
.button{
width:60px;
height:60px;
background:#A11692;
}

Отцентрируйте значок

Вы можете видеть, что большая кнопка создана правильно, но символ «+» находится не в центре. Нам нужно отцентрировать его, добавив следующие правила CSS. Мы также устанавливаем цвет текста как белый.

.iconbutton i{
display:flex;
align-items:center;
justify-content:center;
height: 100%;
color:white;
}

Добавить список опций

Под большой кнопкой добавляем список опций. Мы снова используем ‹div› с классом «iconbutton», чтобы обернуть все значки. Мы также добавляем метки рядом с каждой кнопкой.

<ul class="options">
<li>
<span class="btn-label">telegram</span>
<div class="iconbutton">
<i class="fa-brands fa-telegram"></i>
</div>
</li>
<li>
<span class="btn-label">instagram</span>
<div class="iconbutton">
<i class="fa-brands fa-instagram"></i>
</div>
</li>
<li>
<span class="btn-label">twitter</span>
<div class="iconbutton">
<i class="fab fa-twitter"></i>
</div>
</li>
<li>
<span class="btn-label">facebook</span>
<div class="iconbutton">
<i class="fab fa-facebook"></i>
</div>
</li>
</ul>

Сделайте большую кнопку внизу

Чтобы сделать большую кнопку внизу, мы можем убрать список опций из обычного потока, добавив position:absolute .

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

list-style-type: none;
position:absolute;
bottom:70px;

Этикетки

Вы можете видеть метки над каждой кнопкой со значком. Мы хотим расположить их рядом и поместить все элементы в конец каждого ряда.

Итак, мы добавляем следующий стиль

.options li{
display:flex;
justify-content:flex-end;
padding:5px;
}

flex-end: элементы упаковываются ближе к концу flex-направления

Теперь метки и кнопки расположены рядом. Однако список скудный с правой стороны, и часть его уже вышла за пределы экрана.

Итак, нам нужно перейти к добавлению правила в разделе параметров в файле CSS.

.options{
list-style-type: none;
position:absolute;
bottom:70px;
right:0;
}

Установите правый край позиционированного элемента ‹div› на 0 пикселей слева от правого края его ближайшего позиционированного предка.

Теперь список опций находится в правильном месте.

Стиль ярлыка

Мы можем продолжить стиль этикетки. Добавьте 2 пикселя по вертикали и 5 пикселей по горизонтали. Добавьте отступ в 10 пикселей справа, чтобы между кнопкой и меткой оставалось пространство.

Выровняйте себя по центру, чтобы он был выровнен вертикально по центру кнопки. Сделайте user-select равным none, чтобы текст нельзя было скопировать.

Установите черный цвет фона и белый цвет текста. Установите радиус границы на 3 пикселя и добавьте немного тени под ней.

.btn-label{
padding:2px 5px;
margin-right:10px;
align-self: center;
user-select:none;
background-color: black;
color:white;
border-radius: 3px;
box-shadow: 10px 10px 5px #aaaaaa;
}

Дополнительные материалы на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.