如果你使用 angular 和 lodash,你可以使用我为我在设计师坚持的一个项目中使用而编写的这个指令......
lodash 仅用于节省我们为 window.resize 事件编写 debouncer 函数的时间,可以在 5 分钟的样板 setTimeout 中替换...
angular.module('yourModuleNameHere').directive('mediaPlaceholder', function ($window, $parse) {
return {
restrict: 'A',
link: function ($scope, $elem, $attrs) {
var defObj = $parse($attrs.mediaPlaceholder)($scope);
function setPlaceholder() {
var lastFitting, windowWidth = $($window).width();
angular.forEach(defObj, function (placeholderValue,widthSetting) {
if (parseInt(widthSetting) <= windowWidth) {
lastFitting = placeholderValue;
}
});
$elem.attr('placeholder', lastFitting);
}
setPlaceholder();
$($window).resize(_.debounce(setPlaceholder, 40));
}
};
})
像这样使用:
<input type="search" media-placeholder="{0:'search',989:'long search placeholder'}">