当前位置: 首页 > 面试题库 >

获取设置的元素CSS属性(宽度/高度)值(百分比/ em / px / etc)

汪晨
2023-03-14
问题内容

怎样获得用CSS规则设置的元素CSS属性(例如width / height)(以百分比设置)(例如,百分比/ em / px)?(在Google Chrome浏览器中,最好是无框架的)。

using getComputedStyle返回当前值(以像素为单位),css()jQuery中也是如此。

例如:

<div class="b">first</div>
<div id="a" class="a">second</div>

<style>
     div      { width: 100px; }
     x, div#a { width: 50%;   }
     .a       { width: 75%;   }
</style>

div在此示例中迭代所有元素时,我希望能够获得第二个divs的宽度50%(和第一个的100px)。

Chrome元素检查器可以按设置显示CSS属性值,因此应该可以在Chrome中使用。

Chrome元素检查器显示设置时的属性值

并非所链接问题的精确重复项,因为接受的答案存在一个简单的技巧,无论设置哪种宽度,都会产生百分比宽度。而对于其余部分,您必须知道用于制定活动规则的选择器?怎么会知道呢?


问题答案:

快速阅读本文档,似乎该规范的目标可能是简化从javascript访问CSSOM值的过程。

对于我们来说,这真正重要的部分是我们将拥有一个CSSUnitValue API,该API能够将CSS值解析为以下形式的对象:

{
  value: 100,
  unit: "percent", // | "px" | "em" ...
  type: "percent"  // | "length"
}

并将一个computedStyleMap()方法添加到Element接口,从中我们将能够获取实际应用于元素的值。

截至今天,只有Chrome才实现(自66起)。

(() => {

  if (!Element.prototype.computedStyleMap) {

    console.error("Your browser doesn't support CSS Typed OM");

    return;

  }

  document.querySelectorAll('.test')

    .forEach((elem) => {

      let styleMap = elem.computedStyleMap();

      const unitvalue = styleMap.get('width');

      console.log(elem, {

        type: unitvalue.type(),

        unit: unitvalue.unit,

        value: unitvalue.value

      });

    });



/* outputs



  <div class="b test">first</div> {

    "type": {

      "length": 1

    },

    "unit": "px",

    "value": 100

  }



  <div id="a" class="a test">second</div> {

    "type": {

      "percent": 1

    },

    "unit": "percent",

    "value": 50

  }



*/



})();


div.test {  width: 100px; }

x,div#a {  width: 50%; }

.a {  width: 75%; }


<div class="b test">first</div>

<div id="a" class="a test">second</div>


 类似资料:
  • 问题内容: 我有一组元素,要求它们的最小宽度等于它们的高度,但是高度没有明确设置。目前,我可以通过jQuery 设置css 属性来实现此目的: 是否可以直接在CSS中指定此行为? 问题答案: 我不相信没有JS,这是不可能的,但是也许有人可以证明我错了? CSS不允许您使用动态变量,因此,如果在页面加载之前未设置高度,我不确定该怎么做。

  • 问题内容: 假设我的div的宽度为正文的50%。如何使其高度等于该值?因此,当浏览器窗口的宽度为1000px时,div的高度和宽度均为500px。 问题答案: 这可以通过CSS hack完成(请参见其他答案),但是也可以使用JavaScript轻松完成。 将div的宽度设置为(例如)50%,使用JavaScript检查其宽度,然后相应地设置高度。这是使用jQuery的代码示例: 如果希望框随着浏览

  • 问题内容: 我试图在CSS 中将a设置为一定的百分比高度,但它的大小与其中的内容相同。但是,当我删除HTML 5 时,它可以工作,并按需要占用整个页面。我希望页面进行验证,那我该怎么办? 我在上有此CSS ,其ID为: 问题答案: 我正在尝试在CSS中将div设置为某个百分比高度 百分比是多少? 要设置百分比高度,其父元素(*)必须具有明确的高度。这是不言而喻的,如果您将height保留为,则该块

  • 问题内容: 指定图像高度和宽度的“正确”语义方式是什么?在CSS中… 或内联… ? CSS似乎是放置可视信息的正确位置。另一方面,很少有人会认为不应将图像“ src”指定为属性,并且高度/宽度似乎像“ src”那样与二进制图像数据相关。 (是的,我意识到从技术,最终用户的角度来看,这确实无关紧要。) 问题答案: 应该内联定义。如果使用的是img标签,则该图像应具有内容的语义值,这就是为什么需要al

  • 本文向大家介绍元素竖向的百分比设置是相对容器的高度吗?相关面试题,主要包含被问及元素竖向的百分比设置是相对容器的高度吗?时的应答技巧和注意事项,需要的朋友参考一下 不是,一般是根据宽度来的,像padding-top,padding-bottom 因为高度百分比的话CSS没办法处理,比如子元素的高度设置为200%,那父元素是不是被撑开了,然后父元素变化了,子元素的200%是不是相对又变化了,所以会造

  • 本文向大家介绍js获取Html元素的实际宽度高度的方法,包括了js获取Html元素的实际宽度高度的方法的使用技巧和注意事项,需要的朋友参考一下 第一种情况就是宽高都写在样式表里,就比如#div1{width:120px;}。这中情况通过#div1.style.width拿不到宽度,而通过#div1.offsetWidth才可以获取到宽度。 第二种情况就是宽和高是写在行内中,比如style="wid