Javascript根据类名称中的数字动态设置宽度

道奇

我有一个表,每个单元格中都有一个div,该div带有一个前缀perc-为0的类,范围为0到100。例如perc-60,等于60%。

我可以通过在CSS中生成一个SASS循环并在perc-该类上处理100个变体来做到这一点为了学习,我想知道如何通过Javascript实现内联样式,其中可以根据类中的数字设置div的宽度。这些数字是通过我无法控制的后端系统应用的,但与用户的一些数据有关。

标记示例:

<table>
    <tr>
        <td class="perc-60"><div></div></td>
    </tr>
    <tr>
        <td class="perc-15"><div></div></td>
    </tr>
    <tr>
        <td class="perc-45"><div></div></td>
    </tr>
    <tr>
        <td class="perc-16"><div></div></td>
    </tr>
    <tr>
        <td class="perc-88"><div></div></td>
    </tr>
    <tr>
        <td class="perc-79"><div></div></td>
    </tr>
    <tr>
        <td class="perc-98"><div></div></td>
    </tr>
</table>

目前,我使用SASS循环遍历所有类,并以中的div宽度为目标td

zer00ne

我被带走了,我很喜欢,对不起。我按照最初的要求使用了JavaScript。脚本的每个步骤都有注释。

	var td = selArray('td'); // Make an array of <td> selectors
	for (var i = 0; i < td.length; i++) { // Loop thru array
	  var perc = td[i].className; // Find each <td> class
	  //console.log('Cell '+i+': '+perc);
	  var cell = document.querySelector('.' + perc); // Create DOM Object for <td>
	  //console.log(cell.className);
	  var div = cell.querySelector('div'); // Create DOM Object for <td> > <div>
	  var str = perc.split('-').pop(); // Strip 'perc-' from class, now a String "number" remains
      /* http://stackoverflow.com/a/3568968/2813224 */
	  var divWidth = str + "%"; // Add a "%" to String "number"
	  //console.log(divWidth);
	  div.style.width = divWidth; // Assign String "number" as <div> width
	  //console.log(div.style.width); 
	  div.innerHTML = divWidth; // Insert width as text into <div>
	}
	/* This function will accept a selector (ex. #elementID, .elementCLASS, elementTAGNAME, etc.) like jQuery does and then returns an array of selectors that matched. 
    https://developer.mozilla.org/en-US/docs/Web/API/NodeListhttps://developer.mozilla.org/en-US/docs/Web/API/NodeList */
	function selArray(sel) {
	  var eleArr = Array.prototype.slice.call(document.querySelectorAll(sel));
	  return eleArr;
	}
html {
  box-sizing: border-box;
  font: 900 16px/1.5'Source Code Pro';
}
*,
*:before,
*:after {
  box-sizing: inherit;
  margin: 0;
  padding: 0;
  border: 0;
}
body {
  height: 100vh;
  width: 100vw;
  background: #666;
}
table.x {
  padding: 0;
  box-shadow: 0 1px 9px 1px #ccc;
  border-radius: 6px;
  margin: 20px auto;
  width: 80%;
  table-layout: fixed !important;
}
.x th {
  color: #FFF;
  background: #086ac8;
  padding: 10px;
  text-align: center;
  vertical-align: middle;
  height: 2em;
}
.x tr:nth-child(odd) {
  background-color: #333;
  color: #FFF;
}
.x tr:nth-child(even) {
  background-color: #2e90ef;
  color: #333;
}
.x td {
  border-style: solid;
  border-width: 1px;
  border-color: #57acff;
  padding: 5px;
  text-align: left;
  vertical-align: middle;
  height: 2em;
}
thead th:first-child {
  border-top-left-radius: 6px;
}
thead th:last-child {
  border-top-right-radius: 6px;
}
.x tbody tr:last-child th:first-child {
  border-bottom-left-radius: 6px;
}
.x tbody tr:last-child td:first-child {
  border-bottom-left-radius: 6px;
}
.x tbody tr:last-child td:last-child {
  border-bottom-right-radius: 6px;
}
.x td div {
  height: 1.5em;
  outline: 1px solid #FC0;
  background: hsla(60, 100%, 50%, .3);
  vertical-align: middle;
}
<table class='x'>
  <thead>
    <tr>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="perc-60">
        <div></div>
      </td>
    </tr>
    <tr>
      <td class="perc-15">
        <div></div>
      </td>
    </tr>
    <tr>
      <td class="perc-45">
        <div></div>
      </td>
    </tr>
    <tr>
      <td class="perc-16">
        <div></div>
      </td>
    </tr>
    <tr>
      <td class="perc-88">
        <div></div>
      </td>
    </tr>
    <tr>
      <td class="perc-79">
        <div></div>
      </td>
    </tr>
    <tr>
      <td class="perc-98">
        <div></div>
      </td>
    </tr>
  </tbody>
</table>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据UILabel中的数字动态更改UIView宽度

来自分类Dev

根据类设置元素宽度

来自分类Dev

根据文本长度动态设置输入宽度

来自分类Dev

ActionBar选项卡根据屏幕宽度设置动态宽度

来自分类Dev

根据主动态宽度动态调整CSS中的宽度

来自分类Dev

根据主动态宽度动态调整CSS中的宽度

来自分类Dev

如何使用JavaScript / jQuery根据浏览器的窗口大小动态设置CSS类中的高度?

来自分类Dev

根据动态列名称设置数据

来自分类Dev

如何设置动态创建的类的模块名称?

来自分类Dev

为动态创建的类设置属性无法在javascript中工作

来自分类Dev

为动态创建的类设置属性无法在javascript中工作

来自分类Dev

在relativelayout中动态设置LinearLayout的高度/宽度

来自分类Dev

在Android中动态设置片段视图的宽度

来自分类Dev

根据浏览器宽度动态设置插件属性

来自分类Dev

根据数据动态设置SVG的宽度和高度

来自分类Dev

如何根据内容动态设置 div 的宽度和高度

来自分类Dev

如何在MATLAB中根据从数据中提取的单词和数字设置所需的名称?

来自分类Dev

如何使用JavaScript / jQuery根据浏览器的窗口大小动态设置CSS类的高度?

来自分类Dev

设置类中对象的名称

来自分类Dev

根据父类中的数字对N个元素进行样式设置

来自分类Dev

我可以在具有分解功能的React Jss中设置动态类名称吗

来自分类Dev

根据宽度设置高度

来自分类Dev

根据高度设置宽度

来自分类Dev

根据宽度设置高度

来自分类Dev

动态设置Textview的宽度

来自分类Dev

如何仅使用css根据图像宽度为父级设置动态宽度

来自分类Dev

如何根据动态可绘制名称从 PNG 设置图像

来自分类Dev

根据原始目录结构动态设置集合名称

来自分类Dev

类中的动态MySQL表名称

Related 相关文章

  1. 1

    根据UILabel中的数字动态更改UIView宽度

  2. 2

    根据类设置元素宽度

  3. 3

    根据文本长度动态设置输入宽度

  4. 4

    ActionBar选项卡根据屏幕宽度设置动态宽度

  5. 5

    根据主动态宽度动态调整CSS中的宽度

  6. 6

    根据主动态宽度动态调整CSS中的宽度

  7. 7

    如何使用JavaScript / jQuery根据浏览器的窗口大小动态设置CSS类中的高度?

  8. 8

    根据动态列名称设置数据

  9. 9

    如何设置动态创建的类的模块名称?

  10. 10

    为动态创建的类设置属性无法在javascript中工作

  11. 11

    为动态创建的类设置属性无法在javascript中工作

  12. 12

    在relativelayout中动态设置LinearLayout的高度/宽度

  13. 13

    在Android中动态设置片段视图的宽度

  14. 14

    根据浏览器宽度动态设置插件属性

  15. 15

    根据数据动态设置SVG的宽度和高度

  16. 16

    如何根据内容动态设置 div 的宽度和高度

  17. 17

    如何在MATLAB中根据从数据中提取的单词和数字设置所需的名称?

  18. 18

    如何使用JavaScript / jQuery根据浏览器的窗口大小动态设置CSS类的高度?

  19. 19

    设置类中对象的名称

  20. 20

    根据父类中的数字对N个元素进行样式设置

  21. 21

    我可以在具有分解功能的React Jss中设置动态类名称吗

  22. 22

    根据宽度设置高度

  23. 23

    根据高度设置宽度

  24. 24

    根据宽度设置高度

  25. 25

    动态设置Textview的宽度

  26. 26

    如何仅使用css根据图像宽度为父级设置动态宽度

  27. 27

    如何根据动态可绘制名称从 PNG 设置图像

  28. 28

    根据原始目录结构动态设置集合名称

  29. 29

    类中的动态MySQL表名称

热门标签

归档