6

设置为0时是否可以获得height元素attr的css值?max-height

我需要这个来知道在点击时要显示多少元素的像素,并且由于每个元素都有不同的高度,它会随着浏览器的大小而变化,我想从 css 文件中获取高度值。

http://jsfiddle.net/AqAJc/

4

5 回答 5

9

如果你有 max-height = 0 通过 scrollHeight 属性,你可以得到一个元素的高度。如果您设置最小重量,但不是高度,它会起作用。

HTML:

<div>
  Here you have a normal div
  <div id="toggable">
    Something hidden is in here, but we can still get the height !
    <div class="other-content">
      Something else here
    </div>
  </div>
</div>

JS:

alert(document.getElementById('toggable').scrollHeight)

CSS : #toggable { 最大高度:0; 溢出:隐藏;}

.other-content {
  min-height: 100px;
}

演示:https ://jsfiddle.net/asywL84u/2/

参考:https ://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight

于 2015-12-07T17:27:31.473 回答
2

我的第一个问题是你为什么要使用max-height: 0;还有其他可以使用的东西吗?喜欢hide() show()哪个用途display: none

我唯一能做的就是删除最大高度 css 获取高度,然后重新应用最大高度:

$('.div').css('max-height', 'none')
console.log($('.div').height())
$('.div').css('max-height', '0')

这应该发生得足够快,以至于您不会看到该元素,但是在删除 with 之前隐藏它可能是明智的max-height

$('.div').hide()
$('.div').css('max-height', 'none')    
console.log($('.div').height())
$('.div').css('max-height', '0')
$('.div').show()
于 2013-08-06T14:58:31.953 回答
1
$('.div').each(function(){
    var t=$(this); // Cache jQuery reference
    t.css('max-height','none'); // Temporarily override max-height
    t.data('height',t.height()); // Store height in data
    t.css('max-height',''); // Remove our max-height override
});
alert($('.div').data('height'));

jsfiddle:http: //jsfiddle.net/AqAJc/7/

于 2013-08-06T15:55:08.693 回答
0

离开css的最大高度。将高度缓存在变量中。然后再次添加max-height到 0。

$(function(){
    var divHeight = $('.div').height();
    $('.div').css('max-height', '0');
    alert(divHeight);
});

http://jsfiddle.net/AqAJc/4/

于 2013-08-06T15:04:41.137 回答
0

尝试这个:

document.querySelector("#animated-max-height").style.setProperty("--visible-height", document.querySelector("#get-alway-visible-height").clientHeight + "px");
document.querySelector("#animated-max-height").style.setProperty("--content-height", document.querySelector("#animated-max-height").scrollHeight + "px");
#animated-max-height {
  max-height: var(--visible-height); 
  padding: 0px;
  transition: max-height 1s ease-out;
  overflow: hidden;
}

#animated-max-height:hover {
  max-height: var(--content-height); 
}
<div id="animated-max-height">
  <div id="get-alway-visible-height">Hover me</div>
  <div>Now you see me</div>
</div>

于 2021-11-28T16:17:23.917 回答