如何根据页面高度让dropdown的方向自适应

news/2024/7/5 23:50:13

根据需要,下拉框要根据距离底边的高度来决定,下拉框的方向

如图所示

正常显示

这是页面的高度不是足够高的时候改变方向显示

html代码:
//用来点击显示dropdown的按钮
 <drop-box-anchor  (click)="adjustPositionOfDropDown($event)">
    <i class="fa fa-ellipsis-v more-action-icon" aria-hidden="true"></i>
  </drop-box-anchor>
  
//dropdown content
  <drop-box-content *ngIf="showMoreActionMenu">
    <ul class="list-style-menu">
      <li>
        <a (click)="displayConfirmationWin('Deleted')" class="remove">Remove</a>
      </li>
      <li>
        <a [routerLink]="['edit', itemData.id]" class="edit">Edit</a>
      </li>
      <li>
        <a (click)="duplicateJobBranding(itemData.id)" class="duplicate">Duplicate</a>
      </li>
    </ul>
  <drop-box-content>
  
  ts里关于控制走向的方法封装
   public adjustPositionOfDropDown(event) {
    const documentHeight = document.documentElement.clientHeight; // 获取页面的高度
    const moreActionIconTop = event.target.getBoundingClientRect().y;//获取你点击时候的高度
    const dropDown = this.elRef.nativeElement.querySelector('.drop-panel-wrapper');
    const arrow = this.elRef.nativeElement.querySelector('.arrow');
    //添加的类是用来控制方向的改变
    this.renderer.removeClass(dropDown, 'drop-down-up');
    this.renderer.removeClass(arrow, 'arrow-up');

    if ((documentHeight - moreActionIconTop) < 258) {
    //258是dropdown的高度 添加的类是用来控制方向的改变
      this.renderer.addClass(arrow, 'arrow-up');
      this.renderer.addClass(dropDown, 'drop-down-up');
    }
  }

复制代码

思路总结

通过页面的高度与点击显示dropdown的按钮的差 与 dropdown 的高度进行比较,如果这个差小于dropdown的高度,说明页面的剩下的地方已经放不下这个dropdown,此时应该将dropdown的方向移动到上方显示。


http://www.niftyadmin.cn/n/4636558.html

相关文章

新建虚拟机相关操作

假设&#xff1a;磁盘为 /dev/xvda;创建分区为:/dev/xvda3;vg名称为vg_svr110一、修改主机名vi /etc/sysconfig/network修改hostname项&#xff0c;将XXX.wuhunews的前缀改为适当内容&#xff0c;保存退出二、修改IP地址vi /etc/sysconfig/network-scripts/ifcfg-eth0将IPADDR…

在react-native中使用redux

redux是什么? redux是一个用于管理js应用状态的容器。redux出现时间并不是很长&#xff0c;在它出现之前也有类似功能的模块出现&#xff0c;诸如flux等等。redux设计的理念很简单&#xff0c;似乎最初这个开发团队就有让redux可以方便融入在server, browser, mobile client端…

使用vue写的计算器demo

calculator 一个vue实现的简单计算器 技术栈 [x] vue[x] webpack[x] AlloyFinger[x] vue computed实现的效果 [x] 左右滑动切换主题[x] 整数位大于3位自动添加逗号[x] 输入加减乘除符号直接计算结果[x] 清除所有数据[x] 退格[ ] 按钮动画[x] 在输出结果之后不能退格bug [x] 在手…

【无标题】用C语言写一个学生成绩和信息管理系统,实现操作界面、清屏显示当前操作功能以及从文件读入和从键盘输入学生信息功能,并在操作结束后将学生信息写入文件,功能及代码展示如下:

学生成绩管理系统 功能介绍: 该程序可实现对学生学号以及多门成绩的记录&#xff1b;本程序以三门课为例. 进入程序后选择学生成绩和信息输入方式&#xff1a; 1.通过从student_file.txt文件读出&#xff0c;首先输入学生的科目&#xff0c;然后将学生信息读到结构体中&#…

我的java复习资料(JavaEE组第5周考核任务)==面向对象及java基础复习==

主题&#xff1a;前面学的内容&#xff0c;面向对象&#xff08;下&#xff09; 一、填空题 1、 面向对象的三大特征是——&#xff0c;——和 ——。 继承、多态、封装。 2、 面向对象程序设计的重点是——的设计&#xff0c;——是用来创建对象的模板。 类、类。 3、Java语…

我的java复习资料(JavaEE组第六周考核任务)==日期类 API 正则表达式 面向对象==

主题&#xff1a;日期类 API 正则表达式 面向对象 概念题 1、回顾并梳理this,super,static.final,abstract,interface关键字和instanceof运算符 this与super: super.是一个实例对象为了区分是子类的成员还是父类的成员。 父类有&#xff0c;子类也有&#xff0c;子类想访问父…

maven学习总结,maven思维导图

maven学习总结&#xff0c;很全面。 包含了maven的核心概念、安装和常用命令等。

java io流 字节流(节点流、处理流)字符流(节点流、处理流)对象流 ,对象流序列化,打印流 PrintStream、PrintWriter,以及Properties 类集合对文件的处理

首先来看一个字节流和字符流与处理流的应用&#xff1a; package javaIO.com; import java.io.IOException; import java.io.*;//文件字节流转字符流复制public class TestIO {public static void main(String[] args) {BufferedInputStream innull;PrintStream outnull;try{i…