【问题标题】:Angular 5 | Get height on element click角 5 |获取元素点击高度
【发布时间】:2018-07-14 01:47:44
【问题描述】:

我目前正在尝试获取在我正在处理的侧边栏中单击以显示子菜单的元素的高度。我目前有这个代码...

<li (click)="newsExpanded = !newsExpanded; getMargin($event)" style="margin-bottom: 50px;">
    <a>
        <i class="fa fa-newspaper"></i>
            <span>News</span>
            <i class="fa fa-angle-left sidebar__sub_menu_icon"></i>
            <ul class="sidebar__sub_menu" [class.expanded]="newsExpanded">
                 <li>
                     <a>Create New Post</a>
                 </li>
                 <li>
                     <a>View All Posts</a>
                </li>
           </ul>
     </a>
</li>

因此,当新闻展开时,它会添加只在子菜单上显示块的展开类,这工作正常,但我想在单击外部 li 时为内部 ul 添加一个边距底部。这必须是内部 ul 的高度。您可以看到我已经完成了 getMargin 的课程,但是目前这并没有做任何事情,这是我想要弄清楚的。

任何帮助都将不胜感激,如果他们是更好的方法,那么请告诉我,我是 Angular 的新手,所以我很感激任何反馈。

【问题讨论】:

  • getMargin($event) 是什么样的?没有足够的信息可以帮助您。
  • getMargin 当前为空,它只是注销事件
  • 所以你当时什么都没尝试?请看mvce

标签: html angular typescript angular5


【解决方案1】:

要使用$event 获取被点击元素的高度,您应该执行以下操作:

onClick($event): void {
    let clientHeight = $event.target.clientHeight; //Height + padding without borders
    let offsetHeight = $event.target.offsetHeight; //Height + padding with borders

    //if you need the element plus margin-top/bottom
    let compStyle = window.getComputedStyle($event.target)
    clientHeight += parseInt(compStyle.getPropertyValue('margin-top'));
    clientHeight += parseInt(compStyle.getPropertyValue('margin-bottom'));
} 

演示:https://stackblitz.com/edit/angular-1apnhb


这里是 clientHeightoffsetHeight 的 MDN 文档。你也可以看看scrollHeight

【讨论】:

  • 有了 angular 那么,我将如何将高度添加为边距底部?我试过style.display.marginBottom,但我猜这行不通,我试过谷歌搜索,但什么都没有。
  • 你看到我的更新了吗?您需要获取计算的样式并将其添加到客户端或偏移高度。我也更新了我的演示。检查其中的fullHeight 属性。
猜你喜欢
  • 1970-01-01
  • 2022-11-16
  • 2016-04-27
  • 2020-10-12
  • 2016-05-11
  • 2018-10-04
  • 1970-01-01
  • 2014-09-14
  • 2011-08-05
相关资源
最近更新 更多