Шрифт Удивительный значок внутри элемента ввода текста
Я пытаюсь вставить значок пользователя в поле ввода имени пользователя.
Я пробовал одно из решений из похожих вопросов
зная, что свойство background-image
не будет работать, поскольку Шрифт Awesome является шрифтом.
Ниже приведен мой подход, и я не могу получить отображение значков.
.wrapper input[type="text"] {
position: relative;
}
.wrapper input[type="text"]:before {
font-family: 'FontAwesome';
position: absolute;
top: 0px;
left: -5px;
content: "\f007";
}
У меня есть грань шрифта, объявленная в стандартном шрифте awesome css, поэтому я не был уверен, что добавление семейства шрифтов выше было правильным.
@font-face {
font-family: 'FontAwesome';
src: url('../Font/fontawesome-webfont.eot?v=3.2.1');
src: url('../Font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../Font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../Font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../Font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');
}
Ответы
Ответ 1
Ты прав. : before и: after псевдоконтент не предназначен для работы с замененным контентом, таким как img
и элементы input
. Добавление оберточного элемента и объявление семейства шрифтов является одной из возможностей, как и использование фонового изображения. Или, возможно, HTML5 заполнитель текста соответствует вашим потребностям:
<input name="username" placeholder="">
Браузеры, которые не поддерживают атрибут placeholder, просто игнорируют его.
ОБНОВИТЬ
Селектор содержимого "перед" выбирает вход: input[type="text"]:before
. Вы должны выбрать упаковщик: .wrapper:before
. См. Http://jsfiddle.net/allcaps/gA4rx/. Я также добавил предложение заполнителя, где обертка является избыточной.
.wrapper input[type="text"] {
position: relative;
}
input { font-family: 'FontAwesome'; } /* This is for the placeholder */
.wrapper:before {
font-family: 'FontAwesome';
color:red;
position: relative;
left: -5px;
content: "\f007";
}
<p class="wrapper"><input placeholder=" Username"></p>
Отступать
Font Awesome использует Unicode Private Use Area (PUA) для хранения иконок. Другие символы отсутствуют и возвращаются к браузеру по умолчанию. Это должно быть так же, как любой другой вход. Если вы определяете шрифт для элементов ввода, тогда предоставьте тот же шрифт, что и в качестве запасного, для ситуаций, когда мы используем значок. Как это:
input { font-family: 'FontAwesome', YourFont; }
Ответ 2
Выход:
![enter image description here]()
HTML:
<input name="txtName" id="txtName">
<span class="fa fa-info-circle errspan"></span>
CSS:
<style type="text/css">
.errspan {
float: right;
margin-right: 6px;
margin-top: -20px;
position: relative;
z-index: 2;
color: red;
}
</style>
(Или же)
Выход:
![enter image description here]()
HTML:
<div class="input-wrapper">
<input type="text" />
</div>
CSS:
<style type="text/css">
.input-wrapper {
display:inline-block;
position: relative
}
.input-wrapper:after {
font-family: 'FontAwesome';
content: '\f274';
position: absolute;
right: 6px;
}
</style>
Ответ 3
Вы можете использовать обертку. Внутри обертки добавьте стильный шрифт i
и элемент input
.
<div class="wrapper">
<i class="fa fa-icon"></i>
<input type="button">
</div>
затем установите положение обертки относительно:
.wrapper { position: relative; }
а затем установите для позиции элемента i
значение absolute и установите для нее правильное место:
i.fa-icon { position: absolute; top: 10px; left: 50px; }
(Это хак, я знаю, но он выполняет свою работу.)
Ответ 4
Этот ответ будет работать для вас, если вам понадобятся следующие условия (ни один из текущих ответов не соответствовал этим условиям):
- Значок находится внутри текстового поля
- Значок не должен исчезать, когда текст вводится во вход, а введенный текст идет справа от значка
- Щелчок по значку должен вставлять основной ввод в фокус
Я считаю, что 3 - это минимальное количество элементов HTML, удовлетворяющих этим условиям:
.input-icon{
position: absolute;
left: 3px;
top: calc(50% - 0.5em); /* Keep icon in center of input, regardless of the input height */
}
input{
padding-left: 17px;
}
.input-wrapper{
position: relative;
}
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"/>
<div class="input-wrapper">
<input id="stuff">
<label for="stuff" class="fa fa-user input-icon"></label>
</div>
Ответ 5
Не нужно много кодировать... просто выполните следующие шаги:
<input id="input_search" type="text" class="fa" placeholder=" Search">
Вы можете найти ссылки на Unicode (fontawesome) здесь...
FontAwesome Unicode для иконок
Ответ 6
Прочитав различные версии этого вопроса и обыскав вокруг, я нашел довольно чистое решение без js. Это похоже на решение @allcaps, но позволяет избежать проблемы с изменением входного шрифта по сравнению с основным шрифтом документа.
Используйте атрибут ::input-placeholder
для определения стиля текста заполнителя. Это позволяет использовать шрифт значка в качестве шрифта-заполнителя, а текст (или другой шрифт) - в качестве фактического входного текста. В настоящее время вам нужно указать специфичные для поставщика селекторы.
Это работает хорошо, если вам не нужно сочетание значка и текста в элементе ввода. Если вы это сделаете, то вам придется смириться с тем, что текстовый заполнитель является шрифтом браузера по умолчанию (обычный с засечками на моем языке) для слов.
Например
HTML
<p class="wrapper">
<input class="icon" type="text" placeholder="" />
</p>
CSS
.wrapper {
font-family:'arial', sans-serif;
}
input.icon::-webkit-input-placeholder {
font-family:'FontAwesome';
}
Скрипка с браузерным префиксом селекторов: http://jsfiddle.net/gA4rx/78/
Обратите внимание, что вы должны определить каждый специфичный для браузера селектор как отдельное правило. Если вы объедините их, браузер проигнорирует это.
Ответ 7
Я сделал это так:
form i {
left: -25px;
top: 23px;
border: none;
position: relative;
padding: 0;
margin: 0;
float: left;
color: #29a038;
}
<form>
<i class="fa fa-link"></i>
<div class="form-group string optional profile_website">
<input class="string optional form-control" placeholder="http://your-website.com" type="text" name="profile[website]" id="profile_website">
</div>
<i class="fa fa-facebook"></i>
<div class="form-group url optional profile_facebook_url">
<input class="string url optional form-control" placeholder="http://facebook.com/your-account" type="url" name="profile[facebook_url]" id="profile_facebook_url">
</div>
<i class="fa fa-twitter"></i>
<div class="form-group url optional profile_twitter_url">
<input class="string url optional form-control" placeholder="http://twitter.com/your-account" type="url" name="profile[twitter_url]" id="profile_twitter_url">
</div>
<i class="fa fa-instagram"></i>
<div class="form-group url optional profile_instagram_url">
<input class="string url optional form-control" placeholder="http://instagram.com/your-account" type="url" name="profile[instagram_url]" id="profile_instagram_url">
</div>
<input type="submit" name="commit" value="Add profile">
</form>
Ответ 8
Для меня простой способ иметь значок "внутри" ввода текста, не пытаясь использовать псевдоэлементы с удивительным шрифтом Unicode и т.д., Состоит в том, чтобы иметь ввод текста и значок внутри элемента-обертки, который мы поместим относительно, и затем поместите и поисковый ввод, и шрифт.
То же самое, что мы делаем с фоновыми изображениями и текстом, мы сделали бы здесь. Я чувствую, что это также хорошо для начинающих, так как позиционирование css - это то, что новичок должен выучить в начале своего пути кодирования, поэтому код легко понять и использовать повторно.
<div class="searchbar-wrapper">
<i class="fa fa-search searchbar-i" aria-hidden="true"></i>
<input class="searchbar-input" type="search" placeholder="Search...">
</div>
.searchbar-wrapper{
position:relative;
}
.searchbar-i{
position:absolute;
top: 50%;
transform: translateY(-50%);
padding: 0 .5rem;
}
.searchbar-input{
padding-left: 2rem;
}
Ответ 9
Построение предложения allcaps. Вот шрифт-awesome background method с наименьшим количеством HTML:
<div class="wrapper"><input></div>
.wrapper {
position: relative;
}
input { padding-left: 20px; }
.wrapper:before {
font-family: 'FontAwesome';
position: absolute;
top: 2px;
left: 3px;
content: "\f007";
}
Ответ 10
Сделайте интерактивный значок для фокусировки внутри элемента ввода текста.
CSS
.myClass {
font-size:20px;
position:absolute; top:10px; left:10px;
}
HTML
<div>
<label style="position:relative;">
<i class="myClass fa fa-address-book-o"></i>
<input class="w3-input" type="text" style="padding-left:40px;">
</label>
</div>
Просто добавьте любой значок, который вам нравится внутри тега <i>
, из библиотеки шрифтов Awesome и получите результаты.
Ответ 11
Я нашел самый простой способ с помощью начальной загрузки 4.
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-user"></i></span></div>
<input type="text"/>
</div>
Ответ 12
<HTML>
<head>
<style>
.inp1{
color:#2E64FE;
width:350px;
height:35px;
border:solid;
font-size:20px;
text-align:left;
}
</style>
</head>
<body>
<div class="inp1">
<a href="#" class=""><i class="fa fa-search"></i></a>
</div>
Ответ 13
::-webkit-search-cancel-button {
height: 10px;
width: 10px;
display: inline-block;
/*background-color: #0e1d3033;*/
content: "&#f00d;";
font-family: FontAwesome;
font-weight: 900;
-webkit-appearance: searchfield-cancel-button !important;
}
input#searchInput {
-webkit-appearance: searchfield !important;
}
<input data-type="search" type="search" id="searchInput" class="form-control">
Ответ 14
.input-icon{
position: absolute;
left: 3px;
top: calc(50% - 0.5em); /* Keep icon in center of input, regardless of the input height */
}
input{
padding-left: 17px;
}
.input-wrapper{
position: relative;
}
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"/>
<div class="input-wrapper">
<input id="stuff">
<label for="stuff" class="fa fa-user input-icon"></label>
</div>
Ответ 15
Я попробовал материал ниже, и он действительно работает хорошо
HTML
input.hai {
width: 450px;
padding-left: 25px;
margin: 15px;
height: 25px;
background-image: url('https://cdn4.iconfinder.com/data/icons/casual-events-and-opinions/256/User-512.png') ;
background-size: 20px 20px;
background-repeat: no-repeat;
background-position: left;
background-color: grey;
}
<div >
<input class="hai" placeholder="Search term">
</div>
Ответ 16
Чтобы работать с unicode или fontawesome, вы должны добавить span
с class
, как показано ниже:
В HTML:
<span class="button1 search"></span>
<input name="username">
В CSS:
.button1 {
background-color: #B9D5AD;
border-radius: 0.2em 0 0 0.2em;
box-shadow: 1px 0 0 rgba(0, 0, 0, 0.5), 2px 0 0 rgba(255, 255, 255, 0.5);
pointer-events: none;
margin:1px 12px;
border-radius: 0.2em;
color: #333333;
cursor: pointer;
position: absolute;
padding: 3px;
text-decoration: none;
}
Ответ 17
<!doctype html>
<html>
<head>
## Heading ##
<meta charset="utf-8">
<title>
Untitled Document
</title>
</head>
<style>
li {
display: block;
width: auto;
}
ul li> ul li {
float: left;
}
ul li> ul {
display: none;
position: absolute;
}
li:hover > ul {
display: block;
margin-left: 148px;
display: inline;
margin-top: -52px;
}
a {
background: #f2f2ea;
display: block;
/*padding:10px 5px;
*/
width: 186px;
height: 50px;
border: solid 2px #c2c2c2;
border-bottom: none;
text-decoration: none;
}
li:hover >a {
background: #ffffff;
}
ul li>li:hover {
margin: 12px auto 0px auto;
padding-top: 10px;
width: 0;
height: 0;
border-top: 8px solid #c2c2c2;
}
.bottom {
border-bottom: solid 2px #c2c2c2;
}
.sub_m {
border-bottom: solid 2px #c2c2c2;
}
.sub_m2 {
border-left: none;
border-right: none;
border-bottom: solid 2px #c2c2c2;
}
li.selected {
background: #6D0070;
}
#menu_content {
/*float:left;
*/
}
.ca-main {
padding-top: 18px;
margin: 0;
color: #34495e;
font-size: 18px;
}
.ca-sub {
padding-top: 18px;
margin: 0px 20px;
color: #34495e;
font-size: 18px;
}
.submenu a {
width: auto;
}
h2 {
text-align: center;
}
</style>
<body>
<ul>
<li>
<a href="#">
<div id="menu_content">
<h2 class="ca-main">
Item 1
</h2>
</div>
</a>
<ul class="submenu" >
<li>
<a href="#" class="sub_m">
<div id="menu_content">
<h2 class="ca-sub">
Item 1_1
</h2>
</div>
</a>
</li>
<li>
<a href="#" class="sub_m2">
<div id="menu_content">
<h2 class="ca-sub">
Item 1_2
</h2>
</div>
</a>
</li>
<li >
<a href="#" class="sub_m">
<div id="menu_content">
<h2 class="ca-sub">
Item 1_3
</h2>
</div>
</a>
</li>
</ul>
</li>
<li>
<a href="#">
<div id="menu_content">
<h2 class="ca-main">
Item 2
</h2>
</div>
</a>
</li>
<li>
<a href="#">
<div id="menu_content">
<h2 class="ca-main">
Item 3
</h2>
</div>
</a>
</li>
<li>
<a href="#" class="bottom">
<div id="menu_content">
<h2 class="ca-main">
Item 4
</h2>
</div>
</a>
</li>
</ul>
</body>
</html>