Выровнять кнопку по правому краю формы

Я пытаюсь разместить расположенную ниже кнопку «Войти» в правой части формы входа, но по какой-то причине не могу этого добиться.

Как я хочу, чтобы это выглядело:

Как это выглядит на данный момент:

Как выглядит мой код интерфейса:

    <RuxContainer className = "container">
      <div slot = "header" className = "header-container">
        <h3 className = "first-header-item">LOGO</h3>
        <RuxClock timezone = "Z"></RuxClock>
        <RuxMonitoringIcon status = "normal"></RuxMonitoringIcon>
      </div>
      <div className = "body-container">
        <form className = "rux-form">
          <h2 className = "body-sign-in">SIGN IN</h2>
          <h6>Measure your success in the Space Force!</h6>
          <div className = "sign-in-inputs">
            <rux-input
              id = "email"
              placeholder = "[email protected]"
              label = "Email"
              type = "email"
              ruxblur = "{handleValidation()}"
            ></rux-input>
            <rux-input id = "pw" label = "Password" type = "password"></rux-input>
          </div>
          <div className = "sign-in-helper-functions">
            <rux-checkbox class = "checkbox">Remember me</rux-checkbox>
            <h2 className = "forgot-password">Forgot Password?</h2>
          </div>
        </form>
        <rux-button className = "sign-in-btn" type = "submit">
          Sign in
        </rux-button>
      </div>
    </RuxContainer>

Как выглядит мой CSS:

.header-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.body-container {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.rux-form {
  width: 30%;
  max-width: 430px;
}

sign-in-btn {
  align-self: flex-end;
}

Я новичок в CSS, поэтому буду очень признателен за любую помощь, спасибо!

Вам нужен . перед именем класса кнопки: .sign-in-btn {align-self: flex-end;}.

ralph.m 27.09.2023 01:50

все еще ничего не изменилось

SupraCoder 27.09.2023 01:51

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

ralph.m 27.09.2023 01:54

нет, твой код не работает

SupraCoder 27.09.2023 23:57

Вы пробовали плавать: верно?

Christoph 06.10.2023 07:04

да, Джеймс Б. нашел для меня решение

SupraCoder 06.10.2023 14:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
128
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

На самом деле это не «код интерфейса», поскольку он не работает в браузере. Если вы немного приведёте его в порядок и добавите . перед sign-in-btn, это сработает:

.header-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.body-container {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.form {
  width: 30%;
  max-width: 430px;
}

.sign-in-btn {
  align-self: flex-end;
}
<RuxContainer class = "container">
  <div slot = "header" class = "header-container">
    <h3 class = "first-header-item">LOGO</h3>
    <RuxClock timezone = "Z"></RuxClock>
    <RuxMonitoringIcon status = "normal"></RuxMonitoringIcon>
  </div>
  <div class = "body-container">
    <form class = "form">
      <h2 class = "body-sign-in">SIGN IN</h2>
      <h6>Measure your success in the Space Force!</h6>
      <div class = "sign-in-inputs">
        <input
          id = "email"
          placeholder = "[email protected]"
          label = "Email"
          type = "email"
          ruxblur = "{handleValidation()}"
        ></input>
        <input id = "pw" label = "Password" type = "password"></input>
      </div>
      <div class = "sign-in-helper-functions">
        <checkbox class = "checkbox">Remember me</checkbox>
        <h2 class = "forgot-password">Forgot Password?</h2>
      </div>
    </form>
    <button class = "sign-in-btn" type = "submit">
      Sign in
    </button>
  </div>
</RuxContainer>

это не совсем то, что я хочу, пожалуйста, посмотрите на дизайн-изображение Figma того, что я хочу

SupraCoder 27.09.2023 23:58

.header-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.body-container {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.form {
  width: 30%;
  max-width: 430px;
}

.btn {
  display: flex;
  justify-content:end
}
<RuxContainer class = "container">
  <div slot = "header" class = "header-container">
    <h3 class = "first-header-item">LOGO</h3>
    <RuxClock timezone = "Z"></RuxClock>
    <RuxMonitoringIcon status = "normal"></RuxMonitoringIcon>
  </div>
  <div class = "body-container">
    <form class = "form">
      <h2 class = "body-sign-in">SIGN IN</h2>
      <h6>Measure your success in the Space Force!</h6>
      <div class = "sign-in-inputs">
        <input
          id = "email"
          placeholder = "[email protected]"
          label = "Email"
          type = "email"
          ruxblur = "{handleValidation()}"
        ></input>
        <input id = "pw" label = "Password" type = "password"></input>
      </div>
      <div class = "sign-in-helper-functions">
        <checkbox class = "checkbox">Remember me</checkbox>
        <h2 class = "forgot-password">Forgot Password?</h2>
      </div>
       <div class = "btn">
     <button class = "sign-in-btn" type = "submit">
      Sign in
    </button>
    </div>
     
    </form>
   
  </div>
</RuxContainer>

Ответы должны содержать пояснения. Пожалуйста, посмотрите Как ответить и посетите тур.

isherwood 27.09.2023 20:26

Этот ответ не похож на дизайн Figma, который я опубликовал выше. Пожалуйста, просмотрите прикрепленные изображения, прежде чем спешить что-то публиковать, чтобы получить баллы...

SupraCoder 27.09.2023 23:57
Ответ принят как подходящий

Проблема

Ваш rux-button.sign-in-btn является дочерним элементом элемента .body-container, который использует flex-box для выравнивания формы по центру. Следовательно, когда ваш CSS выравнивает до конца, выравнивание выполняется на основе родительского элемента: .body-container.

Решение

Сделайте ваш элемент <form> также контейнером flexbox, и тогда align-self: end должен вести себя с кнопкой так, как ожидалось.

Подобная вложенность элементов контейнера flexbox совершенно нормальна.

Стиль

.rux-form {
  width: 30%;
  max-width: 430px;
  display: flex;
  flex-direction: column;
}

.sign-in-btn {
  align-self: end;
}

Разметка

<form className = "rux-form">
  ...
  <rux-button className = "sign-in-btn" type = "submit">
    Sign in
  </rux-button>
</form>

Альтернативный вариант, если вы предпочитаете не использовать display: flex в самой форме, — создать контейнер flexbox, занимающий всю ширину формы, у которого кнопка является дочерней, а затем вы можете выровнять кнопку справа по отношению к этому контейнеру. - который имеет ширину формы.

Стиль

div.sign-in-container {
  display: flex;
  justify-content: end;
  width: 100%;
}

Разметка

<form className = "rux-form">
  ...
  <div class = "sign-in-container">
    <rux-button type = "submit">Sign in</rux-button>
  </div>
</form>

Дополнительный

Поскольку вы просили дополнительный совет по CSS, обратите внимание, что эту стратегию вложенного контейнера flexbox также можно использовать для выравнивания элементов управления «Запомнить меня» и «Забыли пароль».

.sign-in-helper-functions {
  display: flex;
  justify-content: space-between;
}

Вы можете использовать:

align-self : end;

или вы можете использовать:

left-margin : auto;
right-margin : 0;

Другие вопросы по теме