将图标添加到角度材料输入
Posted
技术标签:
【中文标题】将图标添加到角度材料输入【英文标题】:Add icon to angular material input 【发布时间】:2015-12-10 11:59:54 【问题描述】:我正在尝试在 Angular Material 之外的输入搜索栏中添加一个搜索图标:
<aside class="main-sidebar">
<section class="sidebar control-sidebar-dark" id="leftMenu">
<div>
<!-- need to disable overflow-x somehow cuz of menu -->
<md-tabs md-center-tabs id="menuTabs" md-dynamic- md-selected="selectedIndex">
<md-tab label="<i class='fa fa-search'></i>" ng-if="handleResize()" search-Focus>
<md-content class="control-sidebar-dark" ng-style="'height' : menuHeight">
<!-- search Menu -->
<div>
<div>
<form action="javascript:void(0)" method="get" class="sidebar-form" id="searchForm">
<div>
<md-content md-theme="docs-dark">
<md-input-container style="padding-bottom: 5px;">
<label>isEnglish ? 'Search...' : 'Recherche...'</label>
<input ng-model="searchInput" id="sInput" ng-change="filterCartoList(searchInput)" my-enter="filterCartoList(searchInput)">
</md-input-container>
</md-content>
</div>
</form>
<div>
当我尝试使用我们可以在那里看到的图标重现示例时:http://codepen.io/anon/pen/rOxMdR,我遇到了样式问题,并且没有任何工作正常。
知道如何简单地将搜索图标添加到现有输入吗?
【问题讨论】:
您想在哪里添加icon
?里面的表格?
嗯,在文本输入的左边或右边,最好是右边。
检查我在我的答案中添加了工作 plunker。
【参考方案1】:
这个问题很老了,但我今天早上刚遇到同样的问题,@gaurav 的答案与 OP 在此链接中寻找的不同:https://material.angularjs.org/latest/#/demo/material.components.input
如果您打开 Chrome 开发者控制台,您可以检查该元素并看到编写演示代码的人正在使用自定义类来处理底部图标部分中电子邮件输入的图标行为。我基本上复制了该行为以达到相同的预期效果。
html:
<md-input-container class="md-block md-icon-left">
<md-icon class="form-icon">lock_outline</md-icon>
<label>Password</label>
<input
type="password" ng-model="user.password" name="password"
ng-required="true"
ng-keyup="$event.keyCode == 13 && loginForm.$valid && login()"/>
</md-input-container>
CSS:
/* Angular extension */
md-input-container.md-input-invalid > md-icon.form-icon
color: #B71C1C;
需要注意的一点是,我必须将“md-icon-left”类添加到我的 md-container 中,否则图标会堆叠在输入的顶部。我在我的项目中使用 angular material v1.1.0 和 angular js v1.5.5。我希望这个答案可以帮助其他希望实现与 Angular Material 演示中相同的行为的人。
【讨论】:
【参考方案2】:当您使用angular-material-design
和font-awesome-icon
时,请使用<md-icon>
作为具有md-font-icon
属性的元素。
并使用class="md-icon-float"
和md-inout-container
。
工作plunker
改变这个:
<md-content md-theme="docs-dark">
<md-input-container style="padding-bottom: 5px;">
<label>isEnglish ? 'Search...' : 'Recherche...'</label>
<input ng-model="searchInput" id="sInput" ng-change="filterCartoList(searchInput)" my-enter="filterCartoList(searchInput)">
</md-input-container>
</md-content>
收件人:
<md-content md-theme="docs-dark">
<md-input-container class="md-icon-float">
<label>isEnglish ? 'Search...' : 'Recherche...'</label>
<md-icon md-font-icon="fa fa-search"></md-icon>
<input ng-model="searchInput" id="sInput" ng-change="filterCartoList(searchInput)" my-enter="filterCartoList(searchInput)">
</md-input-container>
</md-content>
【讨论】:
是的,我试过了,但是图标变小了,就像我们聚焦输入时输入的占位符一样。您可以在那里看到占位符的行为:material.angularjs.org/latest/#/demo/material.components.input 你添加了 class="md-icon-float" 吗?像这样<md-input-container class="md-icon-float">
好吧,我在您编辑后也尝试过,但问题是内容的高度变得太大,并且我在输入内容中有一个滚动条。我想要一个带有图标的单行输入,就像上一个示例中的电子邮件一样:material.angularjs.org/latest/#/demo/material.components.input
plunker 的示例和 angular-material 站点中的电子邮件输入没有区别。区别只是电子邮件没有标签但有占位符。我再次更新 Plunker。
是的,但我的有一个滚动条,这可能是因为它的父母之一:aside > section > md-tabs > md-tab > md-content > form > md-content > md-input-容器 > 输入以上是关于将图标添加到角度材料输入的主要内容,如果未能解决你的问题,请参考以下文章