您的位置:

深入了解 ng-style

一、ng-style用法

ng-style是AngularJS提供的一个指令,用于动态设置元素的样式。该指令将一个对象作为属性值,该对象的属性名代表CSS属性,属性值代表CSS值。因此,我们可以通过改变该对象中属性的值来动态地改变元素的样式。

下面是一个简单的示例,展示了ng-style指令的基本用法:

<div ng-style="{color: 'red', 'font-weight': 'bold'}">
  This text is styled!
</div>

上述代码中,我们通过ng-style将一个对象作为属性值,该对象中color属性的值为 red, 'font-weight' 属性的值为 bold。因此,div元素的文本将被设置为红色,并且为粗体。

如果我们要在使用动态CSS的时候动态绑定数据,如何实现呢?

下面的示例展示了如何使用ng-style动态地改变元素的样式。

<div ng-app ng-init="customStyle={'background-color':'yellow'}">
    <button ng-click="customStyle['background-color']='green' ">Change Color</button>
    <div style="padding: 10px" ng-style="customStyle">Hello, World!</div>
</div>

上述代码中,我们首先使用ng-init定义了一个customStyle对象,该对象的background-color属性值为“yellow”。接着,在页面中定义了一个按钮,点击该按钮将把customStyle对象的background-color属性值改变为“green”,接着,该div元素的背景颜色也会动态地改变为“green”。

二、ng-style translation

ng-style中文翻译是ng样式指令。该指令的作用是为我们提供了动态设置元素样式的功能。

三、ng-style品牌

ng-style是AngularJS框架中提供的一种样式指令,该指令可以通过JavaScript操作来改变DOM元素的样式,是非常实用的一种AngularJS指令。

四、ng-style 层次

ng-style可以与ng-class指令结合使用,我们可以通过ng-style和ng-class 的组合使用来动态地改变元素样式及元素的属性。如下面这个例子:

<div ng-app ng-init="isBold=false">
    <button ng-click="isBold=!isBold">Bold</button>
    <div ng-class="{red: isBold}" ng-style="{ fontWeight: isBold ? 'bold' : 'normal' }">
        Hello, World!
    </div>
</div>

上述代码中,我们首先使用ng-init定义了一个isBold的布尔类型变量,然后,在页面中定义了一个按钮,点击该按钮我们将该isBold的true和false交替改变。然后使用ng-class动态地设置div元素的背景颜色为红色,使用ng-style指令为该div元素动态地设置字体加粗或正常。

五、ng-style不生效

我们在使用ng-style的时候,有时候会遇到ng-style不生效的问题。那么,这个问题通常是由以下原因引起的:

原因1:CSS权重

如果一个元素同时被多个样式指令修改的话,那么对于同一个元素,会存在CSS权重的问题。

例如,我们有一个样式如下所示:

.strikethrough { text-decoration: line-through; }

如果我们同时使用了ng-class和ng-style对这个span元素进行了处理,如下面的代码所示:

<span ng-class="{'strikethrough': strikeThrough}">
    <p ng-style="{'color':'red'}">{{ words }}</p>
</span>

那么,如果ng-class和ng-style的样式属性都有padding-left:100px这个样式,那么页面会显示出padding-left:100px的样式,但text-decoration:line-through的样式并没有起作用。

原因2:表达式写错了

使用ng-style动态地设置CSS属性和CSS值时,如果表达式写错了,那么样式不会被应用到相应的元素上,从而导致ng-style不生效。

六、ng-style 加多重判断

ng-style可以嵌套使用,我们可以在局部或全局的作用域中通过多重判断的方式来动态地设置元素的样式,如下面这个例子所示:

<div ng-app ng-init="color='red'; fontSize='10px';">
    <select ng-model="color">
        <option value="red">Red</option>
        <option value="blue">Blue</option>
        <option value="green">Green</option>
    </select>
    <select ng-model="fontSize">
        <option value="10px">Small</option>
        <option value="14px">Medium</option>
        <option value="18px">Large</option>
    </select>
    <hr>
    <div ng-style="{'color': color, 'font-size': fontSize}">
        Ng-style working well!
    </div>
    <hr>
    <div ng-style="{'color': (color==='red')?('red'):((color==='blue')?('blue'):(color==='green'?'green':'black')), 'font-size': (fontSize==='10px')?('10px'):((fontSize==='14px')?('14px'):(fontSize==='18px'? '18px':'10px'))}">
        Multiple Conditional ng-style!
    </div>
</div>

上述代码中,我们在div元素中使用了两重判断,通过问题1我们知道,CSS的权重问题可能会影响ng-style的实现,而将同一个属性赋值多次可能会引发其他问题,因此我们可以在这里使用多重判断来防止这个问题。如上述代码所示,我们通过多重判断来动态地改变文本的大小和颜色。

七、ng-style style区别

ng-style 和 正常样式(style)标签的区别在于,ng-style可以通过变量动态地更改元素的样式。而普通的CSS样式则无法动态的改变元素的样式属性。

八、mjstyle

mjstyle 是实现动态改变CSS样式的基于AngularJS的指令。它可以让您在指令中动态地设置CSS属性和CSS值,让您的web应用程序拥有更加灵活的样式设置能力。

九、ng style tai chi chuan

ng style tai chi chuan指的是将ng-style与太极拳结合,使用太极拳的理念来动态地设置元素的样式。因为太极拳注重“以柔克刚“的原则,通过这个原则,我们可以通过ng-style来实现元素的渐变动态效果。一个简单的示例如下:

<div ng-app="myApp" ng-controller="myCtrl" 
     ng-style="{background-color:favColor, height: size, width: size}">
  <p>选择太极拳武器</p>
  <select ng-model="favColor">
    <option value="red">红太极拳</option>
    <option value="blue">蓝太极拳</option>
    <option value="green">绿太极拳</option>
  </select>
  <br><br>
  <p>选择太极拳形"</p>
  <select ng-model="size">
    <option value="150px">大圆球</option>
    <option value="100px">中圆球</option>
    <option value="50px">小圆球</option>
  </select>
</div>

上述代码中,我们定义了一个div元素,使用ng-style为该元素动态地设置背景颜色、高和宽。在div元素中我们使用了AngularJS的太极拳武器和太极拳形动态地改变了元素的样式,使得元素有了从小到大,逐渐渲染的效果。