Как выровнять кнопку SVG внутри формы - PullRequest
0 голосов
/ 22 декабря 2018

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

Предположим, следующие CSS и HTML:

body {
  background: #222;
  margin: 25px;
}

form {
  border: 1px solid #444;
  padding: 2px;
}

input {
  border: 1px solid transparent;
  background: #444;
  color: #ddd;
  margin-left: 6px;
  padding: 3px 5px;
}

input:focus {
  outline: 0;
  border: 1px solid #666;
}

button {
  border: 0;
  padding: 0;
  background: transparent;
  margin-left: 6px;
  height: 23px;
  width: 23px;
  fill: #bbb;
}

button:focus {
  outline: 0;
  fill: #ddd;
}
<form>
  <input type="email" id="email" />
  <input type="password" id="password" />
  <button type="submit">
   <svg viewBox="0 0 1024 1024">
    <path d="M384 512h-320v-128h320v-128l192 192-192 192zM1024 0v832l-384 192v-192h-384v-256h64v192h320v-576l256-128h-576v256h-64v-320z" />
   </svg>   
 </button>
</form>

При запуске сниппета поля ввода выравниваются снизу, а кнопка SVG - вверху.Если я заменю SVG на текст, то он выровняется нормально.

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Просто добавьте выравнивание по вертикали: по центру; к вашему селектору.

body {
  background: #222;
  margin: 25px;
}

form {
  border: 1px solid #444;
  padding: 2px;
}

input {
  border: 1px solid transparent;
  background: #444;
  color: #ddd;
  margin-left: 6px;
  padding: 3px 5px;
}

input:focus {
  outline: 0;
  border: 1px solid #666;
}

button {
  border: 0;
  padding: 0;
  background: transparent;
  margin-left: 6px;
  height: 23px;
  width: 23px;
  fill: #bbb;
  /*Just add this line to your target element to align in the middle*/
  vertical-align: middle;
}
svg{margin:auto;}
button:focus {
  outline: 0;
  fill: #ddd;
}
<form>
  <input type="email" id="email" />
  <input type="password" id="password" />
  <button type="submit">
   <svg viewBox="0 0 1024 1024">
    <path d="M384 512h-320v-128h320v-128l192 192-192 192zM1024 0v832l-384 192v-192h-384v-256h64v192h320v-576l256-128h-576v256h-64v-320z" />
   </svg>   
 </button>
</form>
0 голосов
/ 22 декабря 2018

Вам нужно выровнять button рядом с input с.мы используем vertical-align: middle для каждого элемента внутри form для достижения той же цели.

body {
  background: #222;
  margin: 25px;
}

form {
  border: 1px solid #444;
  padding: 2px;
}

form * {
  vertical-align: middle;
}

input {
  border: 1px solid transparent;
  background: #444;
  color: #ddd;
  margin-left: 6px;
  padding: 3px 5px;
}

input:focus {
  outline: 0;
  border: 1px solid #666;
}

button {
  border: 0;
  display: inline-block;
  padding: 0;
  background: transparent;
  margin-left: 6px;
  height: 23px;
  width: 23px;
  fill: #bbb;
}

button:focus {
  outline: 0;
  fill: #ddd;
}
<form>
  <input type="email" id="email" />
  <input type="password" id="password" />
  <button type="submit">
   <svg viewBox="0 0 1024 1024">
    <path d="M384 512h-320v-128h320v-128l192 192-192 192zM1024 0v832l-384 192v-192h-384v-256h64v192h320v-576l256-128h-576v256h-64v-320z" />
   </svg>   
 </button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...