Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript css:如何访问元素未使用的值?_Javascript_Css - Fatal编程技术网

Javascript css:如何访问元素未使用的值?

Javascript css:如何访问元素未使用的值?,javascript,css,Javascript,Css,我有一个DIV,它从一个单独样式表中的CSS类获取其高度。但在Javascript中,这种高度有时会改变。我可以直接从样式表中读取CSS高度而不创建新元素吗?不,您不能从CSS中读取任何属性 您可以创建一些后端API,允许您直接从JavaScript更改CSS文件,而不是在CSS文件中更改高度,而不是将样式应用于元素。如果高度更改是由已知原因引起的,则这是可能的 首先,保存当前内联高度/类名。然后,重置“类/高度”属性。然后,使用该方法读取当前高度。最后,恢复类/高度属性。假设不必删除类名,因为

我有一个DIV,它从一个单独样式表中的CSS类获取其高度。但在Javascript中,这种高度有时会改变。我可以直接从样式表中读取CSS高度而不创建新元素吗?

不,您不能从CSS中读取任何属性


您可以创建一些后端API,允许您直接从JavaScript更改CSS文件,而不是在CSS文件中更改高度,而不是将样式应用于元素。

如果高度更改是由已知原因引起的,则这是可能的

首先,保存当前内联高度/类名。然后,重置“类/高度”属性。然后,使用该方法读取当前高度。最后,恢复类/高度属性。假设不必删除类名,因为只有通过设置内联
height
属性才能更改高度。然后:

function getCSSheight(elem) {
    var style = window.getComputedStyle(elem, null);
    return style.getPropertyValue("height"); //Returns 222px;
    // Optionally: Use parseFloat to convert the `22px` to `22`.
}

您可以这样做:

 var myDiv = $("#myId"); 
 alert('initial height from css is: ' + myDiv.css("height"));

 myDiv.css("height","50px");
 alert('height modified by js is: ' + myDiv.css("height"));

 // store modified height value
 var height = myDiv.css("height");

 // set height to an invalid value
 myDiv.css("height","");

 alert('height is now retrieved from css again: ' + myDiv.css("height"));

 // restore height value
 myDiv.css("height",height);

我在jsfiddle.net上创建了一个示例,您可以查看它。

如果我正确解释了这一点,他会问如何使用JavaScript读取样式表中声明的样式属性,而不是现有元素的计算样式(可能已被另一个脚本更改)。您是指服务器端吗?我正在创建一个简单的游戏,可以离线运行(人们可以在线玩,也可以购买文件并在本地运行),因此服务器代码不是一个选项。这是否意味着我必须重置高度,即使只有几分之一秒?我的DIV对象位于固定大小屏幕的底部附近。我降低了它们的高度,以避免强制调整屏幕大小。即使临时调整到全高也会导致问题。谢谢。看起来您正在创建一个临时元素,然后读取它的属性-所以直接从样式表中读取是不可能的?这个示例不是创建一个新元素;它首先保存计算出的高度值,重置元素的高度样式,以便接受css值并将该值恢复为修改前的值。为什么不创建一个新元素?因为这个解决方案很可能会在执行过程中对显示进行一些更改,这从用户体验的角度来看是不好的。我想避免创建新元素,因为当我想从样式表中读取一个值时,更改DOM的效率很低。但看起来我不得不这么做。我无法快速调整原始元素的大小:它是游戏中的一个角色,当它的脚离开屏幕时,我会缩小DIV,否则页面会调整大小,看起来会出错。我没有衡量创建新DOM元素的性能,而是衡量我的“本能”告诉我,使用单个类创建单个div元素在客户端不会花费太多。但是,当然,您可能需要衡量性能并确保它不会成为问题。谢谢。被标记为最佳答案。