解锁即可观看《前端工程师》完整课程视频

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

【第1周】HTML5基础语法与标签
【第2周】CSS3基础语法与盒模型
【第3周】CSS3浮动定位与背景样式
【第4周】CSS3动画与穷游首页开发实战
【第5周】JS基础语法与表达式
【第6周】JS流程控制语句与数组
【第7周】JS函数与DOM
【第8周】面向对象
【第9周】项目实战:仿穷游JS特效开发
【第10周】ES6基础入门
【第11周】ES6语法扩展
【第12周】ES6之Promise与Class类
【第13周】ES6之Module模块与Babel编译
【第14-15周】HTTP 协议、存储、Ajax
【第16周】项目实战:仿穷游组件化开发
【第17周】移动基础
【第18周】移动进阶之高效开发
【第19周】项目实战:仿穷游移动webapp开发
【第20周】小程序基础与慕课小程序实战
【第21-22周】Sass基础与Vue.js基础语法
【第23周】项目实战:Vue.js仿京东到家电商全栈项目前端开发(上)
【第24-25周】项目实战:Vue.js仿京东到家电商全栈项目前端(下)
【第26周】全栈必备基础Node.js
【第27周】koa2中间件与MongoDB数据库
【第28-29周】项目实战:node.js仿京东到家电商全栈项目后端开发
【第30周】TypeScript与React.js基础语法
【第31-32周】React旅游网开发与工程化
【第33周】就业必备基础技术面试分析
【第34周】就业必备框架与全栈技术面试分析
章节
问答
课签
笔记
评论
占位
占位

下拉菜单(原理分析)

Bootstrap框架中的下拉菜单组件,其下拉菜单项默认是隐藏的,如下所示:

因为“dropdown-menu”默认样式设置了“display:none”,其详细源码请查看bootstrap.css文件第3010行~第3029行:

.dropdown-menu {
  position: absolute;/*设置绝对定位,相对于父元素div.dropdown*/
  top: 100%;/*让下拉菜单项在父菜单项底部,如果父元素不设置相对定位,该元素相对于body元素*/
  left: 0;
  z-index: 1000;/*让下拉菜单项不被其他元素遮盖住*/
  display: none;/*默认隐藏下拉菜单项*/
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  font-size: 14px;
  list-style: none;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, .15);
  border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}

当用户点击父菜单项时,下拉菜单将会被显示出来,如下所示:

当用户再次点击时,下拉菜单将继续隐藏,如下所示:

原理分析:

现在我们来分析一下实现原理,非常简单,通过js技术手段,给父容器“div.dropdown”添加或移除类名“open”来控制下拉菜单显示或隐藏。也就是说,默认情况,“div.dropdown”没有类名“open”,当用户第一次点击时,“div.dropdown”会添加类名“open”;当用户再次点击时,“div.dropdown”容器中的类名“open”又会被移除。我们可以通过浏览器的firebug查看整个过程:

默认情况:

用户第一次点击:

用户再次点击:

在bootstrap.css文件第3076行~第3078行,我们可以很容易发现:

.open > .dropdown-menu {
  display: block;
}

任务

本小节没有代码任务,单击“提交”按钮进行下一个小节学习。

 

?不会了怎么办
||

提问题

写笔记

公开笔记
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布
全部 我要发布
最热 最新
只看我的

手记推荐

更多

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?