【发布时间】:2016-02-15 08:19:46
【问题描述】:
我想使用 ng-style 和媒体查询设置元素的宽度。
我试过这个:
{'width' : @media (max-width: 480px) ? '70%' : '90%' , 'border-radius': '6px', 'background':'#F5F2ED'}
但它似乎不起作用。
有什么想法吗?
【问题讨论】:
标签: angularjs
我想使用 ng-style 和媒体查询设置元素的宽度。
我试过这个:
{'width' : @media (max-width: 480px) ? '70%' : '90%' , 'border-radius': '6px', 'background':'#F5F2ED'}
但它似乎不起作用。
有什么想法吗?
【问题讨论】:
标签: angularjs
这个问题有个窍门,
在你的外部
<div>中创建另一个内部<div>
之所以有效,是因为您可以通过将值设置为0、none 或initial,反转应用样式的效果。
你想要的效果你的<div>
你面临的问题是:
当使用[ngStyle] 设置样式时,对于大于 1024 像素的设备,它将覆盖您的媒体查询。
解决方案是:你创建一个内部div并将css设置为:
outer div | color according to the data parsed in, use [ngStyle]
max-width | more than 1024 | less than 1024
inner div | background-color : white | background-color : initial
<div [ngStyle]="'background-color':color[2]">
<div class="inner">
some component
</div>
</div>
.inner{
background-color: white;
}
@media (max-width:1024px){
background-color: initial;
}
@Input() color
这将反转效果或将其设置为无,以便可以应用外部 div 颜色。
另外,请注意,大于 1024 像素的内部 div 的 CSS 应该是您的默认网站主题背景,因此请更改为您的默认背景。
因为他们在不同的div外层div不能覆盖内层div。
【讨论】:
让我们看看这个指令来源:
var ngStyleDirective = ngDirective(function(scope, element, attr) {
scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {
if (oldStyles && (newStyles !== oldStyles)) {
forEach(oldStyles, function(val, style) { element.css(style, '');});
}
if (newStyles) element.css(newStyles);
}, true);
});
没有任何东西可以支持这个功能。
【讨论】: