angular-material 输入插件
angular-material input with an addon
我正在尝试使用 angular-material. I want to achieve a similar effect as with bootstrap's .input-group-addon 创建一个带有额外文本的输入:
我得到的最接近的是 this:
<md-content layout-padding>
<div layout="row" class="md-whiteframe-z1" style="width: 40%">
<md-select placeholder="Type" ng-model="discount.type" flex="50" class="md-select-full-width">
<md-option value="AMOUNT">Amount</md-option>
<md-option value="PERCENT">Percent</md-option>
</md-select>
<div flex="50" layout="row" layout-align="center center">
<md-input-container flex>
<label>Value</label>
<input ng-model="discount.value">
</md-input-container>
<span>%</span>
</div>
</div>
</md-content>
什么给出了以下结果:
如您所见,2 个字段未对齐。
我也尝试在 <span>%</span>
上使用 vertical-align
而不是 layout-align="center center"
但它似乎被忽略了。
我想出了一个解决方案 <md-icon>
:
<md-content layout-padding>
<div layout="row" class="md-whiteframe-z1" style="width: 40%">
<md-select placeholder="Type" ng-model="discount.type" flex="50" class="md-select-full-width">
<md-option value="AMOUNT">Amount</md-option>
<md-option value="PERCENT">Percent</md-option>
</md-select>
<div flex="50" layout="row">
<md-input-container flex>
<label>Value</label>
<input ng-model="discount.value">
</md-input-container>
<md-icon md-font-set="regular-font">%</md-icon>
</div>
</div>
</md-content>
"regular-font"
是一些不存在的图标字体库,以确保 <md-icon>
中的文本不会被解释为 Material 图标。
现在对齐很好:
您可以在此处查看有效的解决方案:http://codepen.io/LukaszWiktor/pen/oXoqYg
当您希望附加组件包含的内容超过单个字符时,我也想出了一种方法来执行此操作,使用 flexbox。
<md-input-container flex>
<label>Length</label>
<input type="number" ng-model="length" flex="80">
<span flex>seconds</span>
</md-input-container>
重要的部分是 input
元素上的 flex="80"
和 span
元素上的 flex
。这是告诉 input
占据 space 的 80%,让 span
填充剩余部分(至少我这么认为——我还在学习 flexbox)。
最终结果如下所示:
我让它看起来更像 bootstrap 这样的样式:
<md-input-container class="md-block">
<label for="discount">Discount</label>
<input style="text-align: right; padding-right: 15px;" type="text" id="discount" ng-model="discount" ng-change="updateDiscount()">
<span style="margin-top: 5px; position: absolute; right: 0;">%</span>
</md-input-container>
供您查看的屏幕截图:
我正在尝试使用 angular-material. I want to achieve a similar effect as with bootstrap's .input-group-addon 创建一个带有额外文本的输入:
我得到的最接近的是 this:
<md-content layout-padding>
<div layout="row" class="md-whiteframe-z1" style="width: 40%">
<md-select placeholder="Type" ng-model="discount.type" flex="50" class="md-select-full-width">
<md-option value="AMOUNT">Amount</md-option>
<md-option value="PERCENT">Percent</md-option>
</md-select>
<div flex="50" layout="row" layout-align="center center">
<md-input-container flex>
<label>Value</label>
<input ng-model="discount.value">
</md-input-container>
<span>%</span>
</div>
</div>
</md-content>
什么给出了以下结果:
如您所见,2 个字段未对齐。
我也尝试在 <span>%</span>
上使用 vertical-align
而不是 layout-align="center center"
但它似乎被忽略了。
我想出了一个解决方案 <md-icon>
:
<md-content layout-padding>
<div layout="row" class="md-whiteframe-z1" style="width: 40%">
<md-select placeholder="Type" ng-model="discount.type" flex="50" class="md-select-full-width">
<md-option value="AMOUNT">Amount</md-option>
<md-option value="PERCENT">Percent</md-option>
</md-select>
<div flex="50" layout="row">
<md-input-container flex>
<label>Value</label>
<input ng-model="discount.value">
</md-input-container>
<md-icon md-font-set="regular-font">%</md-icon>
</div>
</div>
</md-content>
"regular-font"
是一些不存在的图标字体库,以确保 <md-icon>
中的文本不会被解释为 Material 图标。
现在对齐很好:
您可以在此处查看有效的解决方案:http://codepen.io/LukaszWiktor/pen/oXoqYg
当您希望附加组件包含的内容超过单个字符时,我也想出了一种方法来执行此操作,使用 flexbox。
<md-input-container flex>
<label>Length</label>
<input type="number" ng-model="length" flex="80">
<span flex>seconds</span>
</md-input-container>
重要的部分是 input
元素上的 flex="80"
和 span
元素上的 flex
。这是告诉 input
占据 space 的 80%,让 span
填充剩余部分(至少我这么认为——我还在学习 flexbox)。
最终结果如下所示:
我让它看起来更像 bootstrap 这样的样式:
<md-input-container class="md-block">
<label for="discount">Discount</label>
<input style="text-align: right; padding-right: 15px;" type="text" id="discount" ng-model="discount" ng-change="updateDiscount()">
<span style="margin-top: 5px; position: absolute; right: 0;">%</span>
</md-input-container>
供您查看的屏幕截图: