代码之家  ›  专栏  ›  技术社区  ›  iProgram

是否可以从css中的attr()获取正则表达式?

  •  1
  • iProgram  · 技术社区  · 7 年前

    我正在尝试制作自己的css网格框架,以便更好地理解它。我想做的是指定某物跨越多少行列。为此,我想使用一些正则表达式。

    目前,我有这个html:

    <div class="wrapper">
      <div class="item-1 span1">Item 1</div>
      <div class="item-2">Item 2</div>
      <div class="item-3">Item 3</div>
      <div class="item-4">Item 4</div>
      <div class="item-5">Item 5</div>
      <div class="item-6">Item 6</div>
      <div class="item-7">Item 7</div>
      <div class="item-8">Item 8</div>
      <div class="item-9">Item 9</div>
      <div class="item-10">Item 10</div>
      <div class="item-11">Item 11</div>
      <div class="item-12">Item 12</div>
      <div class="item-13">Item 13</div>
      <div class="item-14">Item 14</div>
      <div class="item-15">Item 15</div>
      <div class="item-16">Item 16</div>
    </div>
    

    使用此css:

    @import "reset.css";
    :root{
      width: 100vw;
      height: 100vh;
      --box-color: #eee;}
    body{
      min-width: 100%;
      min-height: 100%;}
    
    .wrapper{
      position: absolute;
      width: 100%;
      height: 100%;
    }
    
    * [class*=span]{
      background: var(--box-color);
    }
    
    * [class*=span]::before{
      content: attr(class);
    }
    

    目前,css只将背景设置为灰色,如果它有一个类跨度。那么我想 grid-row: <span-(number)> .

    是否可以使用纯css来完成这项工作,或者我也必须使用javascript?
    如果我只能使用css,我怎么能做到这一点呢?

    3 回复  |  直到 7 年前
        1
  •  0
  •   Aniket G    7 年前

    我认为用纯css来获取html元素的类是不可能的。要使用javascript,只需执行以下操作:

    console.log(document.getElementById("element").getAttribute("class"));
    <p class="test" id="element">value</p>

    或者在我看来,您可以使用jquery使用更简单的方法:

    console.log($("#element").attr("class"));
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <p class="test" id="element">value</p>
        2
  •  0
  •   BoltClock    7 年前

    这在css中是不可能的;正如lgson所说, attr() 将整个属性值作为单个字符串提供,并且您将无法使用它执行任何字符串操作。

    您可以得到的最接近的结果是将数字放在它自己的自定义数据属性中,但这当然意味着在每个项上使用一个以上的属性来增加标记,所有这些都是为了使网格系统工作。

        3
  •  -5
  •   Abhishek    7 年前

    css是用来设计html标签的样式的。在css中不可能完成任何数学任务。对于任何增量或减量或任何计算,都需要使用javascript。