Добавить кнопку внутри ввода с закругленными углами - PullRequest
1 голос
/ 25 апреля 2019

Мне бы хотелось, чтобы внутри ввода был текстовый ввод с кнопкой отправки, а края были округлены с использованием чего-то вроде border-radius

Я использую css из второго ответа на этот вопрос: Какдобавить кнопку внутри ввода

#form {
    display:flex;
    flex-direction:row;
    border:1px solid grey;
    padding:2px;
    border-radius:50px; /* this is me trying to round edges of input*/
}

#input {
    flex-grow:2;
    border:none;
}

, но когда я добавляю этот радиус границы, кнопка больше не появляется внутри ввода, как я могу это сделать?

Ответы [ 4 ]

1 голос
/ 25 апреля 2019

В вашем коде есть пара ошибок.Во-первых, form и input являются нативными тегами, им не нужен хэштег в CSS.Если вы назначите идентификатор для формы, это будет ваш #id (я дал форме идентификатор «формы» для демонстрационных целей.

Вы можете дать форме радиус рамки, но длякнопки округляются без округления всей формы, вам необходимо добавить к границе радиус радиуса. Вы можете назначить радиус границы всем входам с помощью ввода (общего) или указать тип ввода [type = submit] в вашем CSS

Надеюсь, это поможет

#form {
  width: 60%;
  display: flex;
  flex-direction: row;
  border: 1px solid grey;
  padding: 2px;
  border-radius: 50px; /*you can remove this to avoid rounded corners on the form*/
}

input {
  flex-grow: 2;
  border: none;
  border-radius: 50px;
}
<form id="form">
  <input type="text" placeholder="text" />
  <input type="submit" value="Click here" />
</form>
0 голосов
/ 25 апреля 2019

      
:root {
  --border-width: 4px;
  --border-radius: 10px;
  --height: 40px;
}

input[type="text"],
input[type="submit"] {
transition: box-shadow .3s;
}
input[type="text"] {
  width: 200px;
  height: var(--height);
  padding: 3px 60px 3px 5px;
  border-radius: calc(var(--border-width, 1px) + var(--border-radius, 10px));
  border-width: var(--border-width, 1px);
  box-sizing: border-box;
  border-color: blue;
  border-style: solid;
}

input[type="text"]:hover,
input[type="text"]:focus {
  outline: none;
  box-shadow: 0px 0px 2px 3px blue;
}

input[type="submit"] {
  transform: translateX(calc(-100% - var(--border-width, 1px)));
  height: calc(var(--height) - 2 * var(--border-width));
  background: blue;
  color: white;
  border: 0;
  -webkit-appearance: none;
  border-radius: 0 var(--border-radius, 10px) var(--border-radius, 10px) 0;
}
input[type="submit"]:hover,
input[type="submit"]:focus {
  outline: none;
  box-shadow: inset 0px 0px 2px 3px white;
}
<input type="text"><input type="submit">
0 голосов
/ 25 апреля 2019

Как насчет этого?<form> теперь просто гибкий контейнер, и стили границ фактически применяются к вводу и кнопке.

#my-form {
  display: flex;
  flex-direction: row;
}

#my-form input,
#my-form button {
  border-radius: 10px;
  border: 1px solid grey;
  padding: 2px;
}

#my-form input {
  flex-grow: 2;
  border-right-width: 0;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}

#my-form button {
  background: teal;
  color: white;
  border-left-width: 0;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
<form id="my-form">
  <input type="text" />
  <button type="submit">my button</button>
</form>
0 голосов
/ 25 апреля 2019

Вы должны добавить рамку и border-radius для элемента ввода текста.В приведенном вами примере это будет выглядеть следующим образом:

input[type="text"] {
    width: 200px;
    height: 20px;
    padding-right: 50px;
    border: 2px solid black;
    border-radius: 30px;
}

РЕДАКТИРОВАТЬ: если предполагается, что граница охватывает оба элемента, вы можете добавить этот CSS-код для кнопки:

    border: 3px solid black;
    border-left: 0;
    border-radius: 0 30px 30px 0;

Как здесь: http://jsfiddle.net/jeft24m6/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...