- 0
Горизонтальное выравнивание блочных элементов
Что предпочитаете вы?
8 members have voted
-
Similar Content
-
By d0ublezer0
zebra-tara.ru
на главной странице есть блок с популярными товарами
чтобы его организовать, мне пришлось делить список на две части. отдельно в своём контейнере выводится большой первый элемент и далее - остальные, тоже в flex контейнере
можно добиться такого визуального представления как-то иначе (без разделения UL списка), когда первый элемент имеет большой размер?
мне это потребуется, чтобы на малых разрешениях навесить на этот список owl carousel, а получается, что первый элемент оторван..
Полагаю, это можно как-то решить с колонками, а не строками, но мне этот фокус не удался
-
By sasha_anto
Доброго времени суток. Возникла такая проблема, нужно сверстать страницу согласно макету, используя только flex и grid
Сразу появилась идея разбить страницу на три divа, первый это блок с породами кота, второй это блок с фотками и третий блок с рейтингом.
<body> <header>Бабуленькины котятки</header> <div class="global"> <div class="menu"> <a class="submenu" href="#" id="abis">Абиссинская</a> <a class="submenu" href="#" rel="brit"">Британская</a> <a class="submenu" href="#" rel="rus">Русская голубая</a> <a class="submenu" href="#" rel="siam">Сиамская</a> </div> <div class="cats"> <img src="http://murkote.com/wp-content/uploads/2014/03/abissinskaya-koshka-foto.jpg" alt="" class="abis"> <img src="http://murkote.com/wp-content/uploads/2015/06/australian-mist-5.jpg" alt="" class="cat"> <img src="http://murkote.com/wp-content/uploads/2015/05/American-Bobtail-Cat.jpg" alt="" class="abis"> <img src="http://murkote.com/wp-content/uploads/2015/06/american-curl-7.jpg" alt="" class="cat"> <img src="http://murkote.com/wp-content/uploads/2015/06/Anatolijskya-koshka-2.jpg" alt="" class="abis"> <img src="http://murkote.com/wp-content/uploads/2015/06/arabian-mau-1.jpg" alt="" class="cat"> <img src="http://murkote.com/wp-content/uploads/2014/03/leopardovaya-bengalskaya-koshka.jpg" alt="" class="cat"> <img src="http://murkote.com/wp-content/uploads/2015/06/Brazilian-Shorthair-cat-2.jpg" alt="" class="cat"> </div> <div class="rating"></div> </div> <footer>Подвал</footer> <style> a { color: #000 !important; text-decoration: none; } body { background-color: gainsboro; display: flex; flex-direction: column; } header { text-align: center; font-size: 40px; font-style: bold; } img { width: 250px; height: 200px; } .global { display: -webkit-flex; display: flex; justify-content: space-around; } footer { color: wheat; background: black; } div.menu { display: flex; width: 250px; flex-wrap: wrap; background: gray; align-content: flex-start; } .submenu { display:flex; justify-content: center; align-items: center; width: 100%; height: 50px; font-size: 25px; border-bottom: white 1px solid; } .cats { display: flex; flex-wrap: wrap; width: 800px; height: 900px; justify-content: space-around; } .cats img:nth-child(2){ width: 500px; } .cats img:nth-child(6) { width: 500px; } .cats img:nth-child(8) { width: 750px; } .rating { width: 250px; background: olive; } </style> Но возникла проблема, надо сделать так, чтобы при выборе категории, кошки данной породы меняли прозрачность. Так как у меня фото и породы в разных блоках, я не понимаю как это сделать. Был вариант не добавлять категории в отдельный блок, но тогда как разметить страницу? Прошу помощи, или хотя бы небольшой подсказки
-
By SnowSilver
Почему line-height на высоту inline элемента не влияет, а на inline-block влияет ?
Например изначально, при дефолтном размере шрифта в 16px, высота строки в хроме показывает 18.18px. И если применим line-height: 1; - то высота не изменится.
А если мы превратим строчный элемент в inline-block, тогда высота уменьшается до 15.45px - и тогда высота строки равняется почти размеру шрифта. Хотя line-height: 1 это множитель шрифта, по идеи в моем понимание высота должна равняться 16px, а не 15.45.
Эти значения получены у не стандартного шрифта... Но это сути не меняет.
Небольшая заготовка - https://codepen.io/anon/pen/Qxpgoe. Правда там у строчного элемента изначально 17px , а у инлайн блока после установки line-height:1 - 16px.
-
By Goreska
https://artrises.github.io/index.html
Всем добрый день, это моя первая работа, прошу конструктивно описать какие проблемы есть, какие ошибки допустил (хочу не вырабатывать говнокод), а постепенно реализовывать себя как толкового фронтендера. Поэтому будет важно все - мои косяки, ваши предложения, огрехи которые вы увидели в работе. И прошу помочь с одной проблемой - логотип в шапке - под ним как будто маленький маргин\паддинг, но я обнулил его, через инспектор тоже не нашел в чем проблема, какая то брешь между логотипом и контейнером оберткой.
Заранее спасибо.
-
Question
FRUTALITY
Здравствуйте.
Вот уже несколько лет верстаю разной степени сложности страницы и изучаю различные приемы и методы.
Но до сих пор не нашел для себя действительно удобного, идеального метода выравнивания блочных элементов по горизонтали.
О чем, собственно, речь.
Есть какой-то макет с кучей элементов. И некоторые элементы надо расположить на одной линии по горизонтали, вписав в какой-нибудь фиксированный контейнер.
Итак, какие есть способы сверстать такой "макет"?
1. Старые добрые таблицы.
Думаю, не нужно объяснять, что "таблицы для табличных данных", и вообще, поддерживать более-менее сложный макет, сверстанный таблицами — очень муторно.
2. Способ классический. Использовать float: left/right.
Код:
Плюсы: кроссбраузерно.
Минусы:
3. "Все правильные ребята уже давно прочитали статью в блоге Мозиллы" (с) Сергей Чикуёнок. Речь о display: inline-block, конечно же.
Способ почти идеальный. Если честно, я предпочитаю именно его, но тут есть свои заморочки. Блок, отмеченный как inline-block, ведет себя как блочный, но если ему указать ширину, то спокойно встает в одну линию с другими элементами.
Перепишу стили для примера выше (разметку не трогаю):
Взгляните на скриншот, что у нас получилось:
(Я использую Firebug для подсветки элементов на странице)
Обратите внимание на зеленые стрелки: первая указывает на зазор в 4 пикселя между inline-block-элементами. Вторая указывает на последствие - из-за этих зазоров уменьшилось расстояние до правой границы контейнера.
А если бы контейнер был более узким, то элемент "3" был бы перенесен на следующую линию, несмотря на то, что ширина элементов не менялась.
Как с этим бороться:
1. Достаточно "вытянуть" в одну строку html-код элементов 1-3 (зазор пропадет)
2. Либо прописывать font-size:0 для контейнера и font-size:%ваше значение% для блоков 1-3
3. Либо использовать для блоков 1-3 margin-right: -0.3em
4. Либо еще какой-нибудь костыль (полный список в комментариях здесь: http://chikuyonok.ru...vertical-align/)
5. Либо "подгонять" margin-ы между элементами.
Итак, плюсы: довольно изящное решение, все максимально понятно
Минусы: без вытягивания кода или использования костылей отображается браузерами не так, как хотелось бы.
4. Абсолютное позиционирование.
Вся соль в использовании position:absolute. Перепишу все тот же несчастный пример (разметку снова не трогаем, меняется только CSS):
На этот раз, изменений больше. Способ работает совсем идеально. С точностью до пикселя.
Плюсы: получено именно то, чего хотелось, и без костылей.
Минусы:
5. Способ прогрессивный. Верстка по настоящей сетке с использованием display:grid.
Снова поменяю пример:
Вот он, способ моей мечты. Подробно можно почитать на Хабре (http://habrahabr.ru/...ft/blog/140715/). Если вкратце: описываем контейнер как сетку. Каждому элементу назначаем место в этой сетке. И все классно.
Но есть существенные минусы:
Пока что этот способ - в мечтах. Можно, конечно, использовать JS-библиотеки, реализующие поддержку Grid в браузерах (например, http://ecsstender.org/), но это тоже не очень классное решение.
Теперь, внимание, знатоки. Что используете вы? Есть ли изящные решения без замусоривания кода? Предлагаю обсудить данный вопрос.
Edited by FRUTALITYLink to comment
Share on other sites
14 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.