Angular Material - md-autocomplete 下拉列表的宽度
Angular Material - md-autocomplete dropdown's width
我正在使用来自 Angular Material 的 md-autocomplete
:here
下拉菜单的宽度似乎与输入字段的宽度一致。如果项目的文本太长,则有 ellipsis
.
但是,我想显示项目的全文,同时保持输入字段的宽度相对较短。也就是说,下拉菜单的宽度应随其内容扩展。
我尝试检查 md-autocomplete
元素的样式,但找不到任何可以解决问题的样式。有什么想法吗?
编辑:
这是我最终拥有的风格:
.md-autocomplete-suggestions-container{
overflow-y:scroll
}
.md-autocomplete-suggestions-container .md-virtual-repeat-scroller{
position:static
}
.md-autocomplete-suggestions-container .md-virtual-repeat-sizer{
height:0 !important
}
.md-autocomplete-suggestions-container .md-virtual-repeat-offsetter{
position:static
}
不过还有一个问题。 overflow-y:scroll
始终显示垂直滚动条,即使在不需要时也是如此。如果我将其更改为 overflow-y:auto
,垂直滚动条出现时将创建 ellipsis
。我该如何解决?
您可以使用 css 来设置 md-virtual-repeat-container
的样式。
但是,这会为您网站上可能拥有的 md-virtual-repeat-container
的 每个 实例设置样式(即 md-autocomplete
和 md-virtual-repeat
) .
遗憾的是,目前没有调整单个 md-autocomplete 下拉菜单的选项。我创建了一个 ticket and pull request 来希望解决这个问题。祈祷这将包含在 Angular Material.
的未来版本之一中
祝你好运!
您需要在 md-autocomplete
元素上设置 class,以便可以在 css 中定位它。看这个例子
<md-autocomplete class="autocompletable"
md-min-length="0"
...
placeholder="US State?"
md-menu-class="autocompletable-contents">
<md-item-template>
<table>
<tr>
<td><span md-highlight-text="ctrl.searchText"
md-highlight-flags="^i">{{item.ok}}</span>
</td><td>Foo</td>
</tr>
</table>
</md-item-template>
<md-not-found>
No states matching "{{ctrl.searchText}}" were found.
<a ng-click="ctrl.newState(ctrl.searchText)">Create a new one!</a>
</md-not-found>
</md-autocomplete>
然后在 css 你需要这样做
md-autocomplete.autocompletable{ width: 200px; }
.autocompletable-contents{ }
EDITS:使用材料 1.0.9
进行测试
我很晚才知道,但是在材料 1.1.9 中,您可以在 md-autocomplete
指令上添加一个属性 md-menu-class
。
您添加的 class 将报告在虚拟重复中的 .md-autocomplete-suggestions
元素上。因此,您只能为此自动完成自定义 css。
例如:
<md-autocomplete ... md-menu-class="search-field-autocomplete">
将生成
<ul class="md-autocomplete-suggestions search-field-autocomplete" ... >
<li md-virtual-repeat="item in $mdAutocompleteCtrl.matches" ...
因此您可以使用 css 进行自定义,例如:
.md-autocomplete-suggestions.search-field-autocomplete {
li {
color: red;
}
}
对于仍然面临自动完成值被裁剪问题的任何人,因为面板宽度仅与字段一样宽,好消息是它现在已得到修复,哇哦!
Angular Material 版本 6.4.0 (2018-07-16) 引入了以下功能,
所以现在可以只添加值为 auto 的 属性 panelWidth,面板将增长以适应这些值。
<mat-autocomplete panelWidth="auto">
<mat-option value="myValue">Now an option with a long label will still be readable<option>
</mat-autocomplete>
我正在使用来自 Angular Material 的 md-autocomplete
:here
下拉菜单的宽度似乎与输入字段的宽度一致。如果项目的文本太长,则有 ellipsis
.
但是,我想显示项目的全文,同时保持输入字段的宽度相对较短。也就是说,下拉菜单的宽度应随其内容扩展。
我尝试检查 md-autocomplete
元素的样式,但找不到任何可以解决问题的样式。有什么想法吗?
编辑:
这是我最终拥有的风格:
.md-autocomplete-suggestions-container{
overflow-y:scroll
}
.md-autocomplete-suggestions-container .md-virtual-repeat-scroller{
position:static
}
.md-autocomplete-suggestions-container .md-virtual-repeat-sizer{
height:0 !important
}
.md-autocomplete-suggestions-container .md-virtual-repeat-offsetter{
position:static
}
不过还有一个问题。 overflow-y:scroll
始终显示垂直滚动条,即使在不需要时也是如此。如果我将其更改为 overflow-y:auto
,垂直滚动条出现时将创建 ellipsis
。我该如何解决?
您可以使用 css 来设置 md-virtual-repeat-container
的样式。
但是,这会为您网站上可能拥有的 md-virtual-repeat-container
的 每个 实例设置样式(即 md-autocomplete
和 md-virtual-repeat
) .
遗憾的是,目前没有调整单个 md-autocomplete 下拉菜单的选项。我创建了一个 ticket and pull request 来希望解决这个问题。祈祷这将包含在 Angular Material.
的未来版本之一中祝你好运!
您需要在 md-autocomplete
元素上设置 class,以便可以在 css 中定位它。看这个例子
<md-autocomplete class="autocompletable"
md-min-length="0"
...
placeholder="US State?"
md-menu-class="autocompletable-contents">
<md-item-template>
<table>
<tr>
<td><span md-highlight-text="ctrl.searchText"
md-highlight-flags="^i">{{item.ok}}</span>
</td><td>Foo</td>
</tr>
</table>
</md-item-template>
<md-not-found>
No states matching "{{ctrl.searchText}}" were found.
<a ng-click="ctrl.newState(ctrl.searchText)">Create a new one!</a>
</md-not-found>
</md-autocomplete>
然后在 css 你需要这样做
md-autocomplete.autocompletable{ width: 200px; }
.autocompletable-contents{ }
EDITS:使用材料 1.0.9
进行测试我很晚才知道,但是在材料 1.1.9 中,您可以在 md-autocomplete
指令上添加一个属性 md-menu-class
。
您添加的 class 将报告在虚拟重复中的 .md-autocomplete-suggestions
元素上。因此,您只能为此自动完成自定义 css。
例如:
<md-autocomplete ... md-menu-class="search-field-autocomplete">
将生成
<ul class="md-autocomplete-suggestions search-field-autocomplete" ... >
<li md-virtual-repeat="item in $mdAutocompleteCtrl.matches" ...
因此您可以使用 css 进行自定义,例如:
.md-autocomplete-suggestions.search-field-autocomplete {
li {
color: red;
}
}
对于仍然面临自动完成值被裁剪问题的任何人,因为面板宽度仅与字段一样宽,好消息是它现在已得到修复,哇哦!
Angular Material 版本 6.4.0 (2018-07-16) 引入了以下功能,
所以现在可以只添加值为 auto 的 属性 panelWidth,面板将增长以适应这些值。
<mat-autocomplete panelWidth="auto">
<mat-option value="myValue">Now an option with a long label will still be readable<option>
</mat-autocomplete>