#html #css #twitter-bootstrap
Вопрос:
Когда я наведу курсор на поле ввода текста, текст при наведении должен отображаться рядом с полем ввода текста, но в моем коде текст при наведении отображается под полем ввода текста. может ли кто-нибудь дать мне решение для этого. ниже приведен мой код.
label { display: inline-block; width: 84px; } span#typePrompt { display: none; } input#userName:hover span#typePrompt { display: inline; } input#userName:focus span#typePrompt { display: inline; }
lt;link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"gt; lt;div class="row"gt; lt;div class="col-sm-7 col-md-offset-2 form-group"gt; lt;label class="col-md-6"gt;User Name lt;span class="star"gt;*lt;/spangt;lt;/labelgt; lt;div class="col-md-6"gt; lt;form:input type="text" class="form-control" path="userName" id="userName" maxlength="100" /gt; lt;span id="typePrompt"gt;Allow only letterslt;/spangt; lt;/divgt; lt;/divgt; lt;/divgt;
Комментарии:
1. Есть ошибка в вашем HTML —
lt;form:input
??2. @ProfessorAbronsius На самом деле, я использовал тег lt;форма:формаgt; для хранения пользовательских данных в базе данных.
3. Действительно, есть опечатка, но она не является причиной проблемы, описанной в вопросе (текст отображается под текстовым полем, а не рядом с ним).
4. OP, пожалуйста, отредактируйте свой вопрос, чтобы включить то, что вы используете
twitter-bootstrap
, и добавьте CSS начальной загрузки в свой запускаемый фрагмент. У вас 2 близких голоса, потому что люди не понимают, что ваш пример на самом деле неполный и не показывает проблему, с которой вы столкнулись. (Я бы сделал это для вас, но есть ожидающая правка, которую сначала нужно просмотреть, и я уже проголосовал за нее.)5.
lt;form:formgt;
также не является действительным. Просто удалитеform:
этотinput
тег, и он заработает.. это, конечно, опечатка.
Ответ №1:
Вы можете обернуть input
тег и span
текст сообщения вместе с display: flex;
и при наведении курсора мыши, а затем отобразить. Ширина input
тега устанавливается как 100%
при наведении курсора.
Примечание: Я использовал white-space: nowrap;
для того, чтобы не прерывать строку текста сообщения.
label { display: inline-block; width: 84px; } .input-wrap{ display: flex; align-items: center; } .input-wrap:hover input#userName, .input-wrap input#userName:focus{ width: 100%; display: inline-flex; margin-right: 10px; } span#typePrompt { display: none; white-space: nowrap; } .input-wrap:hover span#typePrompt, .input-wrap input#userName:focus span#typePrompt{ display: inline; }
lt;link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"gt; lt;div class="container py-4"gt; lt;div class="row"gt; lt;div class="col-sm-7 col-md-offset-2 form-group"gt; lt;label class="col-md-6"gt;User Name lt;span class="star"gt;*lt;/spangt;lt;/labelgt; lt;div class="col-md-6"gt; lt;div class="input-wrap"gt; lt;input type="text" class="form-control" path="userName" id="userName" maxlength="100" /gt; lt;span id="typePrompt"gt;Allow only letterslt;/spangt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/divgt;
Ответ №2:
Ваш код не работает, потому form-control
что класс в начальной загрузке.
form-control
класс имеет width: 100%
, и display: block
, поэтому span#typePrompt
не может отображаться в строке,поэтому он переходит в новую строку.
Я решил эту проблему с помощью d-flex
класса и w-50
класса.
label { display: inline-block; width: 84px; } span#typePrompt { display: none; } input#userName:hover span#typePrompt { display: inline; } input#userName:focus span#typePrompt { display: inline; }
lt;link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"gt; lt;div class="row"gt; lt;div class="col-sm-7 col-md-offset-2 form-group"gt; lt;label class="col-md-6"gt;User Name lt;span class="star"gt;*lt;/spangt;lt;/labelgt; lt;div class="col-md-6 d-flex"gt; lt;input type="text" class="form-control w-50" path="userName" id="userName" maxlength="100" /gt; lt;span id="typePrompt"gt;Allow only letterslt;/spangt; lt;/divgt; lt;/divgt; lt;/divgt;
Комментарии:
1. Или вы можете сделать это, добавив
d-inline-block w-50
класс в свойinput
тег.2. класс d-встроенного блока w-50 работает только для меня. но проблема в том, что текстовое поле изменено, мне нужно только текстовое поле класса управления формой.
3. Затем вы можете добавить
display: inlin-block !important;
иwidth: 50%
в.form-control
класс в свой пользовательский css-файл.
Ответ №3:
Я не знаю синтаксической формы:ввод? Это помощник по форме или что-то в этом роде? В любом случае, я изменил это, как уже правильно заметили @ProfessorAbronsius и СатоТакеру. Затем я завернул поле ввода и метки в тег формы.
Таким образом, ваш код был правильным, за исключением формы:ввод. Поэтому мой ответ просто для полноты картины и любопытства, что на самом деле представляет собой форма:ввод?
label { display: inline-block; width: 84px; } span#typePrompt { display: none; } input#userName:hover span#typePrompt { display: inline; } input#userName:focus span#typePrompt { display: inline; }
lt;formgt; lt;div class="row"gt; lt;div class="col-sm-7 col-md-offset-2 form-group"gt; lt;label class="col-md-6"gt;User Name lt;span class="star"gt;*lt;/spangt;lt;/labelgt; lt;div class="col-md-6"gt; lt;input type="text" class="form-control" path="userName" id="userName" maxlength="100" /gt; lt;span id="typePrompt"gt;Allow only letterslt;/spangt; lt;/divgt; lt;/divgt; lt;/divgt; lt;/formgt;
Комментарии:
1. Если вы свяжете bootstrap, вы сможете найти проблему.