sirve - tipografia html
Icono de fuente impresionante dentro del elemento de entrada de texto (13)
Basándose en la sugerencia de allcaps. Aquí está el método de fondo de fuentes increíbles con la menor cantidad de 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";
}
Estoy tratando de insertar un icono de usuario dentro del campo de entrada de nombre de usuario.
He intentado con una de las soluciones de la pregunta similar sabiendo que la propiedad de background-image
no funcionará dado que Font Awesome es una fuente.
El siguiente es mi enfoque y no puedo ver el ícono.
.wrapper input[type="text"] {
position: relative;
}
.wrapper input[type="text"]:before {
font-family: ''FontAwesome'';
position: absolute;
top: 0px;
left: -5px;
content: "/f007";
}
Tengo la fuente declarada en la fuente predeterminada css awesome, así que no estaba seguro de si agregar el font-family de arriba era el enfoque correcto.
@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'');
}
Después de leer varias versiones de esta pregunta y buscar, he encontrado una solución bastante limpia y sin errores. Es similar a la solución @allcaps, pero evita el problema de que la fuente de entrada se cambie de la fuente del documento principal.
Use el atributo ::input-placeholder
para ::input-placeholder
específicamente el texto del marcador de posición. Esto le permite usar su fuente de icono como fuente de marcador de posición y su cuerpo (u otra fuente) como el texto de entrada real. Actualmente necesita especificar selectores específicos del proveedor.
Esto funciona bien siempre que no necesite una combinación de icono y texto en su elemento de entrada. Si lo hace, tendrá que aguantar el texto del marcador de posición que es la fuente de navegador predeterminada (serif simple en el mío) para las palabras.
P.ej
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'';
}
Fiddle con los selectores prefijados del navegador: http://jsfiddle.net/gA4rx/78/
Tenga en cuenta que debe definir cada selector específico del navegador como una regla independiente. Si los combina, el navegador lo ignorará.
Encontré la manera más fácil usando bootstrap 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>
Esta respuesta funcionará para usted si necesita que se cumplan las siguientes condiciones (ninguna de las respuestas actuales cumple estas condiciones):
- El icono está dentro del cuadro de texto
- El icono no debería desaparecer cuando se ingresa texto en la entrada, y el texto ingresado se ubica a la derecha del ícono
- Hacer clic en el ícono debe enfocar la entrada subyacente
Creo que 3 es la cantidad mínima de elementos HTML para satisfacer estas condiciones:
.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>
Haga clic en icono para enfocar dentro del elemento de entrada de texto.
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>
Simplemente agregue el icono que desee dentro de la etiqueta <i>
, desde la biblioteca Font Awesome y disfrute de los resultados.
Intenté lo siguiente y realmente funciona bien 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>
Logré esto como tal
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>
El resultado es así:
Nota al margen
Tenga en cuenta que estoy usando Ruby on Rails para que mi código resultante se vea un poco explotado. El código de vista en slim es realmente muy conciso:
i.fa.fa-link
= f.input :website, label: false
i.fa.fa-facebook
= f.input :facebook_url, label: false
i.fa.fa-twitter
= f.input :twitter_url, label: false
i.fa.fa-instagram
= f.input :instagram_url, label: false
No es necesario codificar mucho ... solo siga los siguientes pasos:
<input id="input_search" type="text" class="fa" placeholder=" Search">
puedes encontrar los enlaces al Unicode ( fontawesome ) aquí ...
Para trabajar con unicode o fontawesome, debes agregar un span
con una class
como la siguiente:
En HTML:
<span class="button1 search"></span>
<input name="username">
En 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;
}
Podría usar un envoltorio. Dentro de la envoltura, agregue el elemento impresionante font i
el elemento de input
.
<div class="wrapper">
<i class="fa fa-icon"></i>
<input type="button">
</div>
luego establece la posición de la envoltura como relativa:
.wrapper { position: relative; }
y luego establecer la posición del elemento i
en absoluta, y establecer el lugar correcto para ello:
i.fa-icon { position: absolute; top: 10px; left: 50px; }
(Es un truco, lo sé, pero hace el trabajo bien).
Tienes razón. : before y: after pseudo content no está pensado para trabajar en contenido reemplazado como img
y elementos de input
. Agregar un elemento de ajuste y declarar una familia de fuentes es una de las posibilidades, como lo es usar una imagen de fondo. O tal vez un texto de marcador html5 se ajuste a sus necesidades:
<input name="username" placeholder="">
Los navegadores que no admiten el atributo de marcador de posición simplemente lo ignorarán.
ACTUALIZAR
El selector de contenido anterior selecciona la entrada: input[type="text"]:before
. Debe seleccionar el contenedor: .wrapper:before
. Ver http://jsfiddle.net/allcaps/gA4rx/ . También agregué la sugerencia de marcador de posición donde el contenedor es redundante.
.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>
Retroceder
Font Awesome utiliza el Área de uso privado (PUA) de Unicode para almacenar iconos. Otros caracteres no están presentes y vuelven al predeterminado del navegador. Eso debería ser lo mismo que cualquier otra entrada. Si define una fuente en los elementos de entrada, proporcione la misma fuente como alternativa para las situaciones en las que usamos un ícono. Me gusta esto:
input { font-family: ''FontAwesome'', YourFont; }
Salida:
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>
<!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>