За последние 24 часа нас посетил 22921 программист и 1272 робота. Сейчас ищут 746 программистов ...

css vertical-align bottom не работает

Тема в разделе "HTML и CSS", создана пользователем Lexer, 13 май 2020.

  1. Lexer

    Lexer Активный пользователь

    С нами с:
    5 авг 2014
    Сообщения:
    25
    Симпатии:
    1
    Подскажите, пожалуйста, как выровнять блок по нижней границе родительского блока и как в самом блоке выровнять текст по нижней границе блока.
    vertical-align: bottom и bottom: 0/1 эффекта не дают.
    HTML:
    1. <div class="main">
    2.     <div class="child">
    3.       Этот блок должен быть привязан к нижней границе, текст внутри него тоже.
    4.   </div>
    5. </div>
    Код (CSS):
    1. .main {
    2.   height: 400px;
    3.   background: green;
    4.   vertical-align: bottom;
    5.   bottom: 1;
    6. }
    7. .child {
    8.   height: 150px;
    9.   background: pink;
    10.   vertical-align: bottom;
    11.   bottom: 1;
    12. }
    https://codepen.io/LexerPHP/pen/ZEbjQVO
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Код (CSS):
    1. .main {
    2.   height: 400px;
    3.   background: green;
    4.   position:relative;
    5. }
    6. .child {
    7.   position: absolute;
    8.   height: 150px;
    9.   width:100%;
    10.   background: pink;
    11.   bottom: 0;
    12. }
    13. .text{
    14.   position: absolute;
    15.   bottom: 0;
    16. }
    HTML:
    1. <div class="main">
    2.     <div class="child">
    3.       <div class="text">
    4.       Этот блок должен быть привязан к нижней границе, текст внутри него тоже.
    5.       </div>
    6.   </div>
    7. </div>
     
    Lexer нравится это.
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    737
    Адрес:
    Татарстан
    HTML:
    1. <div class="main">
    2.     <div class="child">
    3.       <div class="text">
    4.       Этот блок должен быть привязан к нижней границе, текст внутри него тоже.
    5.            </div>
    6.   </div>
    7. </div>
    Код (CSS):
    1. .main {
    2.   height: 400px;
    3.   width : 100%;
    4.   background: green;
    5.   position : fixed;
    6.   top: 0px;
    7. }
    8. .child {
    9.   height: 150px;
    10.   width : 100%;
    11.   background: pink;
    12.   position : absolute;
    13.   bottom: 0px;
    14. }
    15. .text {
    16.   position : absolute;
    17. bottom : 0px;
    18. }
    особо не верстальщик, но думаю как то так
     
    Lexer нравится это.
  4. Lexer

    Lexer Активный пользователь

    С нами с:
    5 авг 2014
    Сообщения:
    25
    Симпатии:
    1
    @Artur_hopf, @ADSoft - спасибо! Теперь по нижнему краю выравнивается.
    Выходит, что position: absolute + bottom: 0 - это замена для vertical-align: bottom.
    А какая замена для vertical-align: middle + text-align: center?
    Чтобы блок child находился по середине и по вертикали, и по горизонтали. И чтобы текст внутри child тоже был по середине и по вертикали, и по горизонтали?
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    737
    Адрес:
    Татарстан
    найдите сайт какой нить по CSS и изучите что там и как...
    я врать не буду - говорю, ж "я не настоящий сварщик" )))
     
  6. Lexer

    Lexer Активный пользователь

    С нами с:
    5 авг 2014
    Сообщения:
    25
    Симпатии:
    1
    Я пробовал разобраться, но не получается добиться желаемого эффекта. Вот вроде всё просто - введи, например, vertical-align: middle и тогда всё содержимое будет равняться по середине по вертикали. Название свойства логичное, простое, понимаемое. Но оно не работает. Но оно для div я так понимаю не работают. А что же работает для div, когда стоит простая типичная задача выровнять содержимое блока по высоте по центру?
    Аналогично как выровнить содержимое блока по центру, но уже по горизонтали? Вроде вот есть свойство justify-content: center - звучит логично и понятно. Но оно тоже не работает.
    Т.о. всё, что я могу сейчас делать, это заниматься перебором различных свойств и этот перебор может не дать успеха, т.к. из 1000 вариантов я не смогу по времени добраться до варианта №1000, который даст желаемый результат.
    Поэтому без помощи людей, которые уже знают как выполнить типичную операцию выравнивания по горизонтали и по вертикали, мне не обойтись(
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    изучи вот это
    и будет тебе счастье)
     
    Lexer нравится это.
  8. Lexer

    Lexer Активный пользователь

    С нами с:
    5 авг 2014
    Сообщения:
    25
    Симпатии:
    1
    Спасибо!! Я нашёл то, что мне нужно!
    Изучая flex по вашей ссылке, нашёл ещё вот этот интересный материал, который также дал мне подсказку.
    Ответ на мой вопрос как центрировать по вертикали и горизонтали такой:
    Код (CSS):
    1. .main {
    2.   height: 400px;
    3.   background: green;
    4.   display: flex;
    5.   justify-content: center;
    6.   align-items: center;
    7. }
    8. .child {
    9.   height: 150px;
    10.   background: pink;
    11.   display: flex;
    12.   align-items: center;
    13. }
    Код (HTML5):
    1. <div class="main">
    2.     <div class="child">
    3.       Этот блок должен быть в центре, текст внутри него тоже.
    4.   </div>
    5. </div>
    Результат, полученный через flex - выравнивание элементов в блоке div по центру по высоте и по горизонтали https://codepen.io/LexerPHP/pen/yLYxYZx
     
    TeslaFeo нравится это.