Расположить элементы в столбец
Нужно расположить 2 diva (один из которых пустой) в 1 колонку, используя flex, и указывая ширину\высоту в %. Т.е чтоб это было адаптивным. Можно ли это сделать на flex? Или только на grid? В итоге должно получиться
.container < display:flex; >.a < width:100%; background-color:red; >.b
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eget sodales neque, quis blandit risus. Etiam ultrices convallis ipsum a viverra. In est felis, dapibus sit amet est in, aliquet ullamcorper urna.
Отслеживать
задан 24 авг 2019 в 19:05
1 1 1 серебряный знак 2 2 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Чтобы расположить два блока друг под другом через Flexbox, достаточно для родителя указать flex-direction: column .
Но вот задать высоту дочерних элементов в процентах не получится.
В CSS существуют проблемы с определением высоты элемента относительно родителя в процентах, так как Вы загоняете алгоритм отрисовки в цикличность и тупик.
Ведь высота родительского блока заранее неизвестна и определяется суммарной высотой содержимого. Но одновременно с этим, Вы хотите, чтобы высота содержимого определялась как половина от высоты родителя (которая заранее неизвестна). Нет точки отсчёта
Как выравнивать элементы в html?

Всем привет, только учусь писать странички и столкнулся с проблемой:
1. Как сделать так , чтобы ячейки формы выровнены вместе с кнопкой? Как это делать вообще для элементов?
2. Как сделать чтобы картинка была ровно посередине кнопки?
В данный момент это выглядит как-то так: Фрагмент кода:
Отслеживать
14.5k 6 6 золотых знаков 33 33 серебряных знака 71 71 бронзовый знак
задан 17 мар 2018 в 11:22
70 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков
дайте html и css Вашей страницы (в редакторе: Фрагмент кода)
17 мар 2018 в 11:29
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
- Самый простой вариант вертикального выравнивания. Можно отцентрировать элементы по вертикали относительно друг друга, поставив им всем значение vertical-align: middle; p *
Насчет вариантов вертикального выравнивания есть целая статья https://habrahabr.ru/company/netcracker/blog/277433/
Дальше как выровнять картинку на кнопке если указать фиксированные размеры.
- Если задать фиксированные размеры кнопке, то у неё внутри ещё есть граница и отступы и картинка вставится после них (к примеру у меня в браузере 2 пикселя границы и 6px отступы слева и справа). Поэтому проще всего позиционировать картинку относительно кнопки с помощью position:absolute . Если кнопка гораздо больше картинки или у нее не заданы размеры, то картинка итак спозиционируется по центру. Еще можно уменьшить внутренние отступы кнопки указав padding:0 .
- Так как позиционирование относительно кнопки работает не от угла кнопки, а от угла границы, то стоит сделать обертку вокруг кнопки . и позиционировать относительно нее. Теперь будет неважно какие размеры границы задал браузер кнопке.
p * < vertical-align: middle; >.mybutton < position: relative; width: 20px; height: 20px; >.mybutton svg < position: absolute; top: -2px; left: -2px; >.wrap < position: relative; >.wrap button < width: 20px; height: 20px; >.wrap button svg
Отслеживать
4,542 3 3 золотых знака 16 16 серебряных знаков 53 53 бронзовых знака
Поменять местами элементы в CSS
Есть список из элементов, первые два занимают по 25% ширины, а каждый третий 50%.
Размещены по три в строке, сколько будет элементов неизвестно, это посты блога которые выводятся циклом вордпресса. Сложность в том чтобы каждый 6й элемент с его стилями стал на начало строки, поменялся местами с 4м и 5м и так далее Пробовал применять свойство order:-1 для каждого 6го элемента — не помогло, так как он улетает в начало списка
.parent < display: flex; max-width: 400px; flex-wrap:wrap; >.child < display: block; height: 20px; width: 24%; background-color: #CCCCCC; margin: 2px; >.child:nth-child(3n) < width: 48%; >.child:nth-child(6n)
![картинка[1]](https://i.stack.imgur.com/p8r8X.png)
Отслеживать
122k 24 24 золотых знака 124 124 серебряных знака 299 299 бронзовых знаков
задан 20 дек 2019 в 9:34
Михаил Аралов Михаил Аралов
71 6 6 бронзовых знаков
Как работает transform в CSS на примерах
CSS свойство transform позволяет манипулировать элементами на вашей веб-странице, изменяя их форму, размер и положение.
В общем виде свойство transform записывается так: transform: функция(значение); , где функция — это тип преобразования, который вы хотите применить, а значение — параметры этого преобразования.
Свойство transform может принимать следующие значения:
- none — никакого преобразования не применяется.
- rotate(angle) — вращает элемент на заданный угол.
- scale(x,y) — масштабирует элемент по осям X и Y.
- translate(x,y) — перемещает элемент на заданные координаты.
- skew(x-angle,y-angle) — наклоняет элемент на заданные углы по осям X и Y.
Есть некоторые другие варианты преобразований, например, на основе матриц — смотрите их в спецификации. Но они для математиков всяких 🙂
Примеры использования
Вращение элемента — rotate
Свойство rotate вращает элемент вокруг его центра.
В этом примере элемент повернётся на 20 градусов по часовой стрелке (оси вы не увидите).
Масштабирование элемента — scale
Свойство scale изменяет размер элемента.
Обратите внимание, при масштабировании изменяются все параметры элемента — например, рамка становится в полтора раза толще.
Перемещение элемента — translate
Свойство translate позволяет вам перемещать элемент по экрану.
Наклон элемента — skew
Свойство skew позволяет вам наклонять элемент по осям X и Y — как если бы вы нажимали на его углы.
Анимация превращений
Логично, что такую красоту используют для анимаций. transform легко анимируется с помощью свойства transition или ключевых кадров ( @keyframes ).
Анимация с помощью transition
Свойство transition позволяет анимировать плавное изменение свойств CSS от одного состояния к другому за определённое время. Вот пример анимации сдвига элемента при наведении курсора.
div < transition: transform 2s; >div:hover
В этом примере, когда вы наводите курсор на , он очень по-дизайнерски изгибается. Смотрите:
Анимация с помощью @keyframes
Свойство @keyframes позволяет вам создавать более сложные анимации из нескольких частей. Вот пример анимации, где элемент сначала увеличивается в размере, затем вращается и сдвигается:
@keyframes example < 0% < transform: scale(1); >50% < transform: scale(1.2); >70% < transform: rotate(30deg); >100% < transform: skew(20deg, 10deg);>> div
Выходит, с помощью transform вы можете вращать, масштабировать, перемещать и наклонять элементы, а также применять более сложные преобразования с помощью матриц. Свойство transition помогает анимировать эти эффекты. Главное — не переборщить.
transform не должен использоваться для изменения основной структуры веб-страницы. Он нужен для создания эффектов и анимаций, а не для основного макета страницы
Например, если вы захотите расставить элементы на странице с помощью translate , то лучше не надо. Для этого лучше использовать другие CSS свойства, такие как flexbox или grid .
- CSS свойство transform позволяет применять 2D и 3D преобразования к элементам.
- С помощью transform можно вращать, масштабировать, перемещать и наклонять элементы.
- Не все CSS свойства могут быть преобразованы с помощью transform .
- Вместе с transition получаются неплохие анимации. Главное — знать меру.
Материалы по теме
- Плавные трансформации на чистом CSS — свойство transition
- Состояния элементов, чтобы анимировать не только при наведении курсора
- Как анимация портит ваши сайты — помните, что иногда анимаций бывает слишком много
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Читать дальше

Новое в 2023 — text-wrap: balance
В 2023 в CSS появилось любопытное свойство text-wrap со значением balance . Оно «уравновешивает» текстовые элементы, чтобы они приятнее выравнивались внутри блока.
Ограничение — текст не длиннее 6 строк, иначе браузеру придётся непросто, и лучше не применять это свойство к body .
Вот пример заголовка c text-wrap: balance и без него.
На момент написания заметки свойство поддерживается во всех больших браузерах, кроме Safari, а на мобильных — только в Chrome, но то ли ещё будет.
- 13 ноября 2023

Знакомство с CSS
После того как мы разобрались с базовой структурой веб-страницы с помощью HTML, пришло время привнести в неё стиль и красоту. В этом нам поможет CSS, что означает Cascading Style Sheets, или «каскадные таблицы стилей».
Что такое CSS?
CSS используется для оформления HTML-страниц. Если HTML — это скелет сайта, то CSS — его одежда. С помощью CSS мы можем задавать цвета, шрифты, отступы, добавлять анимации и многое другое.
Как подключить CSS к HTML
Есть несколько способов использования CSS внутри HTML:
Внутренний CSS: внутри раздела HTML-документа, в теге :
Внешний CSS: создание отдельного CSS-файла и его подключение с помощью элемента :
Инлайновые стили: непосредственно в HTML-элементе, через атрибут style . Но это не очень хороший способ, лучше его не использовать, и вот почему.
Этот текст будет красного цвета.
Основы синтаксиса CSS
CSS состоит из селекторов и объявлений. Селектор указывает, к какому элементу HTML применяется стиль, а объявление состоит из свойства и его значения.
/* Селектор */ p < /* Свойство : Значение; */ color: green; font-size: 14px; >
Работа с цветом и фоном
Одни из самых основных свойств в CSS — это цвет и фон элементов.
color меняет цвет текста:
background-color меняет фоновый цвет элемента:
Типографика и шрифты
CSS позволяет нам контролировать шрифты на странице:
- font-family задаёт шрифт текста, даже если он нестандартный.
- font-size определяет размер текста.
- font-weight устанавливает жирность шрифта.
Блочная модель
Важной концепцией в CSS является блочная модель, которая включает в себя margin , border , padding , и content .
Внутренние и внешние отступы одной картинкой:
Позиционирование и Flexbox
Чтобы разместить элементы на странице, мы используем различные стратегии позиционирования, включая флексбоксы, которые позволяют нам упростить многие задачи.
.container < display: flex; /* Применяем Flexbox */ justify-content: center; /* Центрирование содержимого по горизонтали */ align-items: center; /* Центрирование содержимого по вертикали */ >
Адаптивный дизайн
С помощью медиа-запросов мы можем создавать адаптивный дизайн, чтобы наш сайт хорошо выглядел на разных устройствах.
@media (max-width: 600px) < .container < flex-direction: column; >>
Это только начало пути в мир CSS, но зная эти основы, вы уже можете начать экспериментировать и применять стили к вашим веб-страницам. В следующей статье мы разберём JavaScript и увидим, как добавить интерактивность нашим веб-страницам. Удачи в творчестве и до новых встреч в коде!
- 1 ноября 2023

Увеличение ссылки при наведении
Задача: плавно увеличить ссылку при наведении.
Решение:
a < display: inline-block; transition: transform 0.3s ease; >a:hover
Первые два свойства просто немного меняют вид ссылки. Свойство color: maroon; меняет цвет текста в тегах на темно-красный, а свойство text-decoration : none; убирает подчеркивание.
Но наша задача — плавно увеличить размер ссылки, а не просто её перекрасить. Поэтому используем свойство transform: scale(1.2) , которое срабатывает при наведении курсора и увеличивает размер ссылки в 1.2 раза по сравнению с её начальным размером.
- 13 октября 2023

WOFF больше не нужен
Я купил и скачал шрифты для недавнего проекта, распаковал папку, где были только WOFF2-файлы, и сначала не поверил, что такое бывает.
Потом мне стало интересно: они что, забыли WOFF? А он вообще ещё нужен? Ну, всё-таки, веб — это место, где постоянно всё меняется и улучшается, поэтому я пошёл и спросил людей в Mastodon. Ответ был единодушным: нужен только WOFF2!
Я хорошо помню пост от Зака в конце 2016, после которого я отказался от исчерпывающего синтаксиса @font-face , включавшего, вдобавок, TTF, EOT и SVG-шрифты, и перешёл только на WOFF2 и WOFF.
Похоже, с тех пор мир веб-шрифтов изменился ещё разок, и вот актуальная версия @font-face :
@font-face
Остался всего один формат. Просто, скажите?
Как писал Зак, «так как в вебе, когда шрифт не найден, всё равно подгружаются системные шрифты, мы можем идти в ногу со временем». Итак, какие браузеры отправятся в тёмные века системных шрифтов с этим синтаксисом?
- IE 11, 10, 9, 8, 7, …
- Chrome 4–35
- Edge 12 и 13
- Safari 3–9.1
- Firefox 2–38
- Opera 22 и ниже
- Android 4.4.4 KitKat и ниже (а это
- Safari на iOS 3.2–9.3
Caniuse.com показывает, что почти у 95% пользователей есть браузер с поддержкой WOFF2. А в относительной статистике (Date Relative — прим. перев.) заметно, что массовый переход на WOFF2 случился в 2015 и 2016. К концу 2016 во всех последних версиях больших браузеров появилась поддержка WOFF2.3
А спустя 7 лет поддержка расширилась настолько, что можно уже не добавлять в проект WOFF-файлы — ну, кроме случая, когда вы точно знаете, что много ваших пользователей используют старые устройства и браузеры.
С другой стороны, нет смысла и удалять WOFF из старых проектов. Если вы подключали WOFF2 раньше WOFF внутри @font-face — и порядок здесь важен — то браузер просто скачает и подключит WOFF2-версию.
И если однажды вы, как и я, обнаружите себя перед папкой, полной файлов WOFF2, знайте, что WOFF — уже всё.
- 23 сентября 2023

Трясём пароль с помощью CSS
Знаете момент, когда всё на сайте уже сделано, и хочется добавить какую-нибудь маленькую незаметную фишку? Мы тоже знаем, поэтому давайте просто потрясём поле пароля, когда пользователь ввёл неверный пароль. Как на Маке.
Вот что получится в итоге:
- 7 сентября 2023

Как сделать тёмную тему на сайте
Без лишних слов создадим простой переключатель для светлой и темной темы с использованием HTML, CSS и JavaScript. Нам понадобятся три файла — index.html , styles.css и script.js .
HTML
Основная разметка страницы — заголовок, абзац текста, список и текст в рамке.
CSS (styles.css):
Здесь задаём цвета для светлой и тёмной темы, а ещё минимальную стилизацию текста и блока с рамкой.
body < font-family: Arial, sans-serif; transition: background-color 0.3s ease; >body.light-theme < background-color: #ffffff; color: #000000; >body.dark-theme < background-color: #121212; color: #ffffff; >.boxed-text
JavaScript (script.js)
Этот код нужен, чтобы переключать тему при нажатии на кнопку:
document.getElementById('themeToggle').addEventListener('click', function() < const currentTheme = document.body.className; if (currentTheme === 'light-theme') < document.body.className = 'dark-theme'; >else < document.body.className = 'light-theme'; >>);
При загрузке страницы по умолчанию будет установлена светлая тема. При нажатии на кнопку «Переключить тему» будет происходить переключение между светлой и темной темой.
- 29 августа 2023

4 способа центрировать текст в CSS
Центрирование элементов на веб-странице — это одна из наиболее распространенных задач, с которой мы сталкиваемся при работе с макетами. И хотя центрирование текста по горизонтали довольно простое ( text-align: center; и делов-то), вертикальное центрирование может быть немного сложнее. Давайте рассмотрим несколько методов.
Метод 1: Flexbox
Flexbox — это один из самых простых и эффективных способов центрирования.
Заворачиваем текст в с классом center-both :
Центрированный текст
.center-both
Метод 2: CSS Grid
HTML такой же, как в предыдущем примере. В CSS включаем гриды и используем свойство place-items со значением center :
.center-both
Метод 3: позиционирование и Transform
Этот метод немного старомодный и работает не идеально. Здесь у div устанавливается relative позиция. А
внутри дива мы сдвигаем с помощью абсолютного позиционирования. Не слишком элегантно:
.center-both < position: relative; >.center-both p
HTML остается таким же. Вот что получается:
Плохой метод: использование line-height
Если у вас однострочный текст, вы можете установить line-height , равный высоте родительского элемента.
.center-both < line-height: 200px; /* Пример высоты */ text-align: center; >
Этот метод не подойдет для многострочного текста. Да и вообще мы очень не рекомендуем так делать, это прям совсем для любителей острых ощущений. Потому что вот:
Если вам интересно узнать больше о каждом из этих методов, рекомендуем посмотреть документацию по Flexbox на MDN или документацию по CSS Grid на MDN, а ещё пройти курсы в HTML Academy.
- 28 августа 2023

Как скруглить рамку. CSS-свойство border-radius
CSS-свойство border-radius помогает скруглить углы элемента. Оно особенно полезно для стилизации кнопок, форм, карточек товаров и других элементов сайта.
- 28 июля 2023

CSS-свойство contain
Представьте, что у вас есть контейнер. Внутри него находятся разные элементы: текст, изображения или что-то другое. Свойство contain говорит браузеру, как именно элементы должны взаимодействовать. Например, они могут быть ограничены, влиять на расположение друг друга или менять свои размеры.
Также свойство помогает повысить производительность страницы. Например, браузер понимает, когда при изменении свойств элемента нужно перерисовать страницу, а когда нет.
⭐ CSS-свойство contain определяет, как элемент должен взаимодействовать с другими элементами внутри контейнера.
Синтаксис
.container
- 14 июля 2023

Как задать позицию и размер элемента. CSS-свойство inset
CSS-свойство inset задаёт позицию и размер элемента на странице. Это комбинация четырёх отдельных свойств: top , right , bottom и left , которые определяют отступы от верхнего, правого, нижнего и левого края элемента.
Синтаксис
.element
- 13 июля 2023
