解决下拉菜单的过渡问题

news2025/4/22 9:02:21

解决下拉菜单的过渡问题

使用 js 实现

基本布局如下

.text-select {
  width: 500px;
  box-sizing: border-box;
}

.text {
  padding: 0 8px;
  margin: 0;
  width: 500px;
  height: 35px;
  border-radius: 5px;
  border: 1px solid #23aaf2;
  box-sizing: border-box;
  outline: #0075b7;
}

.select {
  margin-top: -2px;
  width: 500px;
  height: 0;
  box-sizing: border-box;
  border: 1px solid #0075b7;
  border-top: 0;
  overflow: hidden;
}

.select span {
  display: block;
  padding: 0 20px;
  width: 500px;
  height: 30px;
  line-height: 30px;
  white-space: nowrap;
  text-overflow: ellipsis;
  box-sizing: border-box;
  overflow: hidden;

  &:hover {
    color: #23aaf2;
    cursor: pointer;
  }
}
<div class="text-select">
  <input type="text" class="text" />
  <div class="select">
    <span>多种方案解决下拉菜单的过渡问题,你会如何选择?</span>
    <span>
      育人为渡,经久如一 如需课程配套学习资料、源码、工具安装包私信up主~
    </span>
    <span>如何使用 flex 弹性盒保持容器均分布局【bunny】</span>
    <span>几行 CSS 让你的文字立起来【bunny】</span>
    <span>喜大普奔!纯 CSS 实现瀑布流布局的方法终于来啦【bunny】</span>
    <span>多种方案解决下拉菜单的过渡问题,你会如何选择?</span>
    <span>
      育人为渡,经久如一 如需课程配套学习资料、源码、工具安装包私信up主~
    </span>
    <span>如何使用 flex 弹性盒保持容器均分布局【bunny】</span>
    <span>几行 CSS 让你的文字立起来【bunny】</span>
    <span>喜大普奔!纯 CSS 实现瀑布流布局的方法终于来啦【bunny】</span>
  </div>
</div>
</body>
  1. 使用 document.querySelector 方法获取一个名为 select 的 DOM 元素,该元素将用于显示下拉框的选项。

  2. 接下来,使用 document.querySelector 方法获取一个名为 text 的 DOM 元素,该元素将用于触发下拉框的显示。

  3. 然后,为 text 元素添加一个 focus 事件监听器。当用户聚焦于该元素时,将执行以下操作:

    a. 将 select 元素的 transition 属性设置为 none,以便在下一个步骤中准确计算元素的高度。

    b. 将 select 元素的 height 属性设置为 auto,以便在下一个步骤中计算元素的高度。

    c. 获取 select 元素的高度,并将其存储在一个名为 height 的变量中。

    d. 将 select 元素的 height 属性设置为 0,以便在下一个步骤中执行动画。

    e. 使用 offsetHeight 属性强制浏览器重新计算 select 元素的高度。

    f. 将 select 元素的 transition 属性设置为 all 1s,以便在下一个步骤中执行动画。

    g. 将 select 元素的 height 属性设置为 height 变量的值,以便执行下拉框的动画效果。

  4. 最后,为 text 元素添加一个 blur 事件监听器。当用户失去焦点时,将执行以下操作:

    a. 将 select 元素的 transition 属性设置为 1s,以便在下一个步骤中执行动画。

    b. 将 select 元素的 height 属性设置为 0,以便将下拉框收起来。

总之,这段代码实现了一个基本的下拉选择框效果,当用户聚焦于文本框时,下拉框会展开,并在用户选择选项后自动收起。
在这里插入图片描述

使用 css 实现

使用缩放的方式解决,一开始将select高度设为 auto

当失去焦点时触发下面样式

.text-select .text:focus ~ .select {
  transform: scaleY(1);
}

最开始时将样式设为,让高度自动,并使用动画

height: auto;
transition: all 1s;

完整代码如下

.text-select {
  width: 500px;
  box-sizing: border-box;
}

.text {
  padding: 0 8px;
  margin: 0;
  width: 500px;
  height: 35px;
  border-radius: 5px;
  border: 1px solid #23aaf2;
  box-sizing: border-box;
  outline: #0075b7;
}

.text-select .text:focus ~ .select {
  transform: scaleY(1);
}

.select {
  margin-top: -2px;
  width: 500px;
  height: auto;
  box-sizing: border-box;
  border: 1px solid #0075b7;
  border-top: 0;
  transform-origin: center top;
  transform: scaleY(0);
  transition: all 1s;
  overflow: hidden;
}

.select span {
  display: block;
  padding: 0 20px;
  width: 500px;
  height: 30px;
  line-height: 30px;
  white-space: nowrap;
  text-overflow: ellipsis;
  box-sizing: border-box;
  overflow: hidden;

  &:hover {
    color: #23aaf2;
    cursor: pointer;
  }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GlobalMapper渲染DEM导出背景透明

左图原始数据带黑边&#xff0c;右图为GM导出的效果图&#xff0c;具体步骤如下&#xff1a; 1、dem的黑边无需预处理&#xff0c;直接拖入到GM中&#xff0c;选择yes 2、自动去黑边&#xff0c;默认从高程0开始渲染&#xff0c;颜色不太好看 3、双击图层&#xff0c;修改最小高…

本土元素的魔力:品牌的全球化之路

随着全球化的不断推进&#xff0c;越来越多的企业正积极寻求国际市场上的机会。然而&#xff0c;进军国际市场并不是一项容易的任务&#xff0c;需要深思熟虑的战略和坚定的决心。在这个竞争激烈的环境中&#xff0c;一种被称为“本土化”的战略变得越来越重要。这种策略强调的…

基于YOLOv5的车牌识别系统(YOLOv5+LPRNet)

YOLOv5网络结构图 YOLOv5s的网络结构如图1所示&#xff0c;该结构分为四个部分输入端、Backbone&#xff08;主干网络&#xff09;、Neck网络和Prediction&#xff08;输出端&#xff09;。 各部分具有的主要功能结构如下&#xff1a; 输入端&#xff1a;Mosaic数据增强、自适…

嵌入式设备时间同步(校时)

文章目录 二、校时方案三、chrony 介绍和使用3.1 chrony 介绍3.2 chrony 使用示例3.3 chrony.conf3.4 chronyd3.5 chronyc 四、gpsd chrony pps 介绍和使用4.1 gpsd 介绍4.1.3 gpsd 交叉编译 4.2 pps 和 pps-tools 介绍和使用 x.参考资料五、比较两个设备时间差5.1 date 命令…

python+opencv+深度学习实现二维码识别 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; pythonopencv深度学习实现二维码识别 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 该项目较为新颖&…

Vue—大文件分片上传

背景 如题&#xff0c;最近遇到大文件上传慢的问题&#xff0c;用户需要经常上传一些超过一百多M的文件&#xff0c;系统由于历史原因上传功能并没有做分片上传的功能&#xff0c;是整个文件上传&#xff0c;并且服务器带宽限制和NGINX对文件大小的限制等问题&#xff0c;所以…

亳州市的自然风光与旅游资源:欣赏安徽省中部的壮丽景色

亳州市是中国安徽省的一个地级市&#xff0c;位于该省的中部。 亳州市辖区包括谯城区、涡阳县、蒙城县和利辛县等地。亳州市拥有悠久的历史和丰富的文化遗产&#xff0c;同时也以其独特的自然风光而闻名。 首先&#xff0c;让我们来了解一下亳州的历史和景点。亳州的历史可以…

机器人硬件在环仿真:解决实体开发与测试挑战,提升效率与安全性

工业机器人具备出色的灵活性和运动能力&#xff0c;广泛应用于工业制造领域。它们可以完成装配、焊接、喷涂、搬运、加工、品质检测等任务&#xff0c;提高了生产效率&#xff0c;保证了产品质量。此外&#xff0c;在医疗领域也有辅助手术等特殊应用&#xff0c;展现了其在多个…

pdf处理工具 Enfocus PitStop Pro 2022 中文 for mac

Enfocus PitStop Pro 2022是一款专业的PDF预检和编辑软件&#xff0c;旨在帮助用户提高生产效率、确保印刷品质量并减少错误。以下是该软件的一些特色功能&#xff1a; PDF预检。PitStop Pro可以自动检测和修复常见的PDF文件问题&#xff0c;如缺失字体、图像分辨率低、颜色空…

在 Elasticsearch 中实现自动完成功能 2:n-gram

在第一部分中&#xff0c;我们讨论了使用前缀查询&#xff0c;这是一种自动完成的查询时间方法。 在这篇文章中&#xff0c;我们将讨论 n-gram - 一种索引时间方法&#xff0c;它在基本标记化后生成额外的分词&#xff0c;以便我们稍后在查询时能够获得更快的前缀匹配。 但在此…

高质量!推荐一些免费自学网站

大家好&#xff0c;我是 jonssonyan 说到自学网站&#xff0c;大家第一印象肯定是”菜鸟教程“、”w3school“、B 站大学。这些教程当然非常的好&#xff0c;而且适合入门学习&#xff0c;但是存在一些缺点&#xff0c;第一&#xff0c;知识点比较分散&#xff0c;没有一个整体…

【EI检索征稿】第五届机器学习、大数据与商务智能国际会议(MLBDBI 2023)

第五届机器学习、大数据与商务智能国际会议&#xff08;MLBDBI 2023&#xff09; 2023 5th International Conference on Machine Learning, Big Data and Business Intelligence 由浙江财经大学信息管理与人工智能学院主办&#xff0c;AEIC学术交流中心作支持单位的第五届机器…

Squids DBMotion新增多款同构数据库迁移

秋天的第一次数据传输&#xff01; 又双叒叕&#xff0c;丝滑的零停机数据库在线迁移工具Squids DBMotion再发新版&#xff01; Squids DBMotion继续横向扩展数据库能力&#xff0c;本次不仅增加了PostgreSQL、GaussDB和openGauss的同构数据库能力&#xff0c;也提供了这些数…

自己在家给电脑重装系统Win10教程

自己在家怎么给电脑重装系统Win10&#xff1f;Win10电脑系统如果操作时间特别长了&#xff0c;就可能出现卡顿、蓝屏等系统问题&#xff0c;这时候用户就想给电脑重装系统&#xff0c;却不知道重装具体的操作步骤&#xff0c;下面小编给大家详细介绍自己在家给电脑重装Win10系统…

架构必备能力——kafka的选型对比及应用场景

系列文章目录 上手第一关&#xff0c;手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么&#xff0c;以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 系列文章目录一、Kafka的模型与优势1. Kafka 模型2. Kafka 优势 二、Kafka与竞争对手的…

【@胡锡进】大模型量化分析- 南京银行 601009.SH

对于股票价格的预测&#xff0c;以下是几种常见的方法&#xff1a; SARIMA模型&#xff1a;SARIMA&#xff08;Seasonal Autoregressive Integrated Moving Average&#xff09;模型适用于具有季节性变动的时间序列数据。它结合了ARIMA模型和季节性差分的方法来预测未来的价格…

axios响应拦截器 路由导航守卫

axios响应拦截器使用场景&#xff1a; 1. 处理全局错误&#xff1a;响应拦截器可以用来统一处理API请求的错误。当后端返回错误状态码&#xff0c;或者响应数据不符合预期时&#xff0c;我们可以在拦截器中进行统一的错误处理逻辑&#xff0c;例如弹窗提示、记录日志等。 2. 统…

倾斜摄影三维模型的顶层构建的问题分析

倾斜摄影三维模型的顶层构建的问题分析 在构建倾斜摄影超大场景的三维模型时&#xff0c;常见的顶层构建问题可能包括以下几个方面&#xff1a; 1、数据质量问题&#xff1a;倾斜摄影所获取的原始数据可能存在噪点、缺失、重叠或者变形等问题&#xff0c;这些问题会直接影响到…

Hadoop问题:start-all.sh显示未找到命令

在sbin文件夹下是start-all.sh可以运行的&#xff0c;但是到了别的文件夹下就不行了&#xff0c;于是想到了是文件路径问题&#xff0c;因为hadoop环境是和java环境一起配置的导致sbin写成了bin 解决办法&#xff1a; 打开.bashrc配置hadoop的环境变量 sudo vim ~/.bashrc …

热电厂蒸汽流量如何无线传输至无纸记录仪上显示?

某数码影像材料制造集团生产目前主要消耗蒸汽和电能源&#xff0c;蒸汽用能情况较为复杂&#xff0c;需要用5公里的蒸汽管线将较远区域某热电厂的蒸汽接入厂内&#xff0c;每周专人巡查一次管线&#xff0c;部分蒸汽管线位置特别偏僻&#xff0c;不易出入。 为了监控蒸汽流量&…