动态改变 CSS 样式高度

Posted

技术标签:

【中文标题】动态改变 CSS 样式高度【英文标题】:Dynamically change CSS style height 【发布时间】:2018-10-16 14:10:19 【问题描述】:

我正在制作用户排行榜:

 <div class="user">
  <ul id="jogadores" *ngFor="let u of sortedUsers$; let i=index;" (click)="routeToUser(u.id)">
    <li class="user">
      <img class="gravatar" src="https://www.gravatar.com/avatar/u.imgUrl?d=https://www.1plusx.com/app/mu-plugins/all-in-one-seo-pack-pro/images/default-user-image.png" />
      <div class="progressBar">
        <span style="height: 100%;">
          <i></i>
          <b>sortedUsers$[i].points</b>

        </span>
      </div>
      <span class="username">
        <strong>sortedUsers$[i].username</strong>
      </span>
    </li>
  </ul>
</div>

每个&lt;ul&gt; 元素都有一些来自数组的值。整个晚上我都在尝试将&lt;span style="height: 100%;"&gt; 的值从sortedUsers$[i].points 更改为某个值,因此每个进度条都会根据用户拥有的点数而变化。我尝试传递值:

<span style="height: sortedUsers$[i].points %;">

同样使用 jQuery 实现,但也失败了。

【问题讨论】:

&lt;span style="height: 100px;"&gt; 工作了吗?如果不将显示更改为块或内联块 是的,它可以工作,但我需要将值 100 更改为循环中的任何内容,但这不起作用。像 element[1] 它必须是 80,对于 element[1] 20 等等 您是否已经将 span 作为块或内联块元素? 【参考方案1】:

高度和宽度不能应用于span

您可以将其设为block elementinline-block,然后它将接受您的高度和宽度。

在此处阅读更多信息:Does height and width not apply to span?

【讨论】:

inline-block 更适合 span(因为通常用作上下文包装内联元素) - 而 div 最适合 DIVisor 块元素。跨度> 这可以根据需要决定,但我已经更新了答案以提供更多清晰性:)【参考方案2】:

不知道你有没有注意到,sortedUsers$[i].points%; 之间有一个空格,应该是这样,没有空格

<span style="height: sortedUsers$[i].points%;">

【讨论】:

【参考方案3】:

使用样式属性绑定

<span [style.height]="sortedUsers$[i].points">
    <i></i>
   <b>sortedUsers$[i].points</b>
</span>

值可以是这个sortedUsers$[i].points = "100%"

【讨论】:

【参考方案4】:

查看ngStyle

更新一个 html 元素样式。

<span [ngStyle]="'height': `$sortedUsers$[i].points%`"></span>

您的值如下所示,其中每个数字代表一个percent: sortedUsers$[i].points = 100 // Percent

【讨论】:

【参考方案5】:

感谢大家的帮助!对我有用的是:

 <span class="user" [ngStyle]=" 'height': getPoints(i)">
          <i></i>
          <b>sortedUsers$[i].points</b>
  </span>

与:

getPoints(id) 
return this.sortedUsers$[id].points + '%';

我很确定你们中的一些人也可以,但如果以后有人遇到类似问题,请告诉大家!这么简单的事情让我困了几个小时!谢谢大家!

【讨论】:

你也可以使用模板字符串来获得更简洁的语法,在我个人看来:getPoints(id) return `$this.sortedUsers$[id].points%`;

以上是关于动态改变 CSS 样式高度的主要内容,如果未能解决你的问题,请参考以下文章

用css改变下拉框样式

react native 怎样动态改变css

javascript 动态修改css样式

自动动态改变div的高度

JavaScript是如何改变网页的CSS样式的?

js动态改变样式属性(style属性)