使用Javascript匹配两个HTML元素的高度
Match height of two HTML elements using Javascript
我有一个侧边栏,它偶尔会比主要内容扩展得更远(如这里所示)。当这种情况发生时,我想通过设置侧边栏的最大高度与主要内容的高度相匹配来剪裁侧边栏的高度
(注意:我使用的是blogger,所以修复HTML比这更麻烦,这就是为什么我宁愿找到JS解决方案的原因。)
我试图开始工作的脚本如下:
<!DOCTYPE html>
<html>
<style type="text/css">
.text1 {border:1px solid red;}
.text2 {border:1px solid blue;overflow:scroll;}
</style>
<body>
<div class="text1">Lorem ipsum dolor...</div>
<div class="text2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. </div>
<script>
function sidebar(){
document.getElementsByClassName("text2").style.maxHeight = document.document.getElementsByClassName("text1").clientHeight;
}
</script>
</body>
</html>
您的代码无法工作,因为在您的代码中,您试图从任何数组(而不是从DOM节点)读取和写入属性。document.getElementsByClassName()
函数返回一个DOM节点数组。您不能在此数组上读取或写入DOM特定的属性。您需要使用索引表示法从这个数组中选择一个DOM节点。例如,第一元素可以被选择为CCD_ 2等。此外,你还需要运行你的功能,如下所示:
(function sidebar(){
document.getElementsByClassName("text2")[0].style.maxHeight = document.getElementsByClassName("text1")[0].clientHeight + 'px';
})();
.text1 {
border:1px solid red;
float: left;
width: 70%;
}
.text2 {
border:1px solid blue;
overflow-y: scroll;
float: right;
width: 25%;
}
<div class="text1">Lorem ipsum dolor... Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...</div>
<div class="text2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui.Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor...Lorem ipsum dolor... </div>
使用getComputedStyle
和querySelector
代替
注意,你的函数也需要执行,我还将你的CSS更改为overflow:auto,所以滚动条只在需要时显示
function sidebar(){
document.querySelector(".text2").style.maxHeight = window.getComputedStyle(document.querySelector(".text1"),null).getPropertyValue("height");
};
sidebar(); /* added */
.text1 {border:1px solid red;}
.text2 {border:1px solid blue;overflow:auto;}
<div class="text1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. </div>
<div class="text2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. </div>
注意2,您也可以使用closures
来执行您的功能
(function sidebar(){
document.querySelector(".text2").style.maxHeight = window.getComputedStyle(document.querySelector(".text1"),null).getPropertyValue("height");
})();
所以你的代码最终会看起来像这个
<!DOCTYPE html>
<html>
<style type="text/css">
.text1 {border:1px solid red;}
.text2 {border:1px solid blue;overflow:auto;}
</style>
<body>
<div class="text1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. </div>
<div class="text2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam quis massa sed mi viverra dapibus. Ut pulvinar a elit et sollicitudin. Aenean at augue dui. </div>
<script>
(function sidebar(){
document.querySelector(".text2").style.maxHeight = window.getComputedStyle(document.querySelector(".text1"),null).getPropertyValue("height");
})();
</script>
</body>
</html>
如果你想在一个相同高度的容器中有两个元素,那么最简单的方法是:-
.parent_container {
display: flex;
}
只需添加一个div,它将同时包含这两个div(parent_container)和Flexbox将负责其余部分。
试试这个:
$(".text2").height($(".text1").height())
相关文章:
- 同一HTML页面中的两个不同版本的JQuery
- 在HTML包围的javascript中添加两个变量
- 如何在两个不同的iframe HTML之间进行通信
- jQuery在两个字符串标识符之间选择HTML
- 计算HTML表TD中两个数字之间的百分比
- 如何将具有相同功能的两个select html标签的两个JS组合在一起
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 如何调用两个函数是一种html输入类型
- 在HTML/JavaScript中减去两个数字
- 如何从ajax返回两个html内容
- 仅在使用javascript和html的浏览器中在相同的两个选项卡之间切换
- 如何在html中使用两个组件
- 使用Javascript匹配两个HTML元素的高度
- 我怎么能"合并”;两个HTML标签
- 需要在 html 中使用两个下拉列表来显示不同的 json 值
- 具有两个提交按钮和两个不同操作的 HTML 表单
- 如何减去选项两个相关的选择 HTML
- HTML - 两个带有“输入”键的表单,以了解我正在输入的表单
- HTML 两个表单和两个表单在同一页面上提交
- Javascript/HTML -两个不同列表的滑块