程序员小山与Bug
抖音bilibiliGitHubSource
  • 简介
  • 有点迫不及待的分享:日常cursor开挂的效果
  • DataEase桌面版体验全过程
  • 憋了几天想了个新域名,方便大家记住!另外支持昵称了
  • 局域网传输工具在部分内网环境无法建立WebRTC连接
  • 来的时候好好的,回不去了:vue打包后路由异常
  • 小伙伴投稿:ElementUI日期时间范围组件动态设置默认时间
  • cursor美化网页体验一下
  • 基于WebRTC开源纯html局域网传输网页工具部署方式
  • 第一次用cursor解决问题全过程
  • 小伙伴投稿:vue2加了属性丢了样式
  • 分享一个网页版局域网文字文件传输工具
  • 控制台输出对象的属性要再点一下才看到值?
  • 事件穿透在小程序无效导致的神奇bug
  • eltable浮动列里refs失效
  • 自己写的烂代码
  • CodeGeeX新活动和新功能体验:项目地图、幽灵注释、workspace
  • 神奇的split()
  • 防踩坑:双竖线引发的低级bug
  • 一个异步问题导致的小bug
  • 快速幂取模
  • 二进制那点事儿之取模和整除
  • 二进制那点事儿之换算十进制的理解
  • 分享一款Windows服务注册工具、配合Jar包讲解.srt
  • 3分钟带你体验MaxKB,纯纯一个老员工的样子
  • 分享一个在代理层中开发的神器,再配合推送工具发挥你的想象!
  • keyframes在safari下弄不好就会抖动?
  • 分享一个小工具类(思路)解决swagger文档的小痛点
  • 第一次体验到important在css里真的有用
  • 一个困扰十多年的css问题即将被解决啦
  • 记一次IDEA异常断点的使用场景,真香!
  • 监听or预警第三方程序的另一个思路
  • 小伙伴的提问{}+1是咋回事
  • RemoteAddress为什么是127.0.0.1
  • InlineChat终于可以Inline了
  • 抢先体验CopilotWorkSpace
  • 利用1Panel搭建免费https个人网站全过程
  • 唬人版的短信验证码
  • ONLYOFFICE协作空间私服来了
  • 日常使用CodeGeex编程外挂的几个场景
  • 注释代码竟然编译出病毒
  • 从0搭建体验JumpServer堡垒机全过程
  • CodeGeex又又又升级了,再分享几个日常的小案例
  • 【alfred插件】指定尺寸随机生成测试图片到桌面
  • 简单但烧脑的跳转bug,一定要耐心看完
  • 分享一个强大的大屏仪表系统DataEase
  • 从购买开始,10分钟演示部署网站全过程。收藏备用!
  • windows下的php-cgi自动崩溃?
  • 慎用justify-content等于center
  • align-items的stretch神奇的不管用
  • 跟GPT打配合偷懒小日常
  • 你们要的截图软件来啦
  • vue2+ElementUI碰到zoom后部分组件错位的问题
  • 好消息:VSCode在1.85.0更新中解决了3个历史痛点
  • 分享一个管道进度监控小工具顺便回答一个上期评论区的问题
  • 一次\r引发的输出异常
  • 记一次诡异的控制台报错
  • 深度解读chrome浏览器对资源文件的缓存规则
  • 小伙伴一个大胆的想法写出创意的组件,但又碰见无奈的bug
  • 新学到一个圆角的写法,现学现卖了
  • 至今写程序还不开外挂的同学一定要试试
  • 接上集-双远端库合并发行版&命令提示插件
  • 久等的vue3版element组件修改二开全过程终于来了
  • (接上期)ONLYOFFICE搭建过程
  • 一款支持私有化部署的宝藏办公套件ONLYOFFICE
  • 当程序员多好玩:表格自带的tooltip总跑?看我怎么破!
  • 才发现chrome的开发者工具原来还有个功能叫Logpoint
  • form标签导致点击button页面被清空
  • 跳页组件的光标串了,没想到是chrome对原生文本框就有bug
  • 耗费4小时整理了9个前端经典问题
  • 才发现:一直没当回事的终端版Copilot还可以
  • 趣思路:根据文件结构自动生成router.js
  • 太爽了,用chatGPT处理数据真的丝滑啊!
  • 网页的PWA安装按钮迟迟不出来
  • JsonEditor失效的解决方案来啦
  • 解决:IDEA最近有时候双击shift搜索会比较慢
  • eltable行高变化后,丢失滚动条排查解决全过程
  • 分享:一个写alfred常用的代码段
  • 分享:字体抽取小工具&一款免费商用的字体
  • CodeGeex问答模式可以薅无限制问答次数了
  • 新发现了2个VSCode高对比度皮肤的优化配置
  • el-dialog、el-drawer里拖拽出总是会自动关闭的问题(下集)
  • el-dialog、el-drawer里拖拽出总是会自动关闭的问题(上集)
  • 我的视频封面制作全过程
  • 悬浮到菜单上莫名多出滚动条
  • 自己给vue2.0第三方组件库打补丁的一种方法
  • csdn免登陆复制脚本有升级,代码片段关注后续更新
  • 一次改bug提PR的全过程,交作业啦
  • ChatGPT辅助编程的场景之提炼sql
  • 1024bugs找视频&gitbook在测试的ai搜索很好玩
  • 不想买copilot的小伙伴可以试试这个
  • 分享一个公用的方法用来让el-table滚动到指定行的方法
  • 小伙伴提的问题让我重新认识了nth-child
  • 可以跟随文字方向设置的宽高css属性
  • v-drag指令忽略margin导致的bug
  • 一个vite的页面每次刷新的效果不一样
  • 其他元素的点击事件总是优先与blur事件触发
  • 改造el-tag动态编辑标签,支持自动提示(上)
  • 新版Chrome开发者工具里偶尔复制的内容会错位
  • Mac系统的双指缩放总是失灵,顺便安利AppleScript
  • 特殊需求ELDatePicker不要input框怎么处理
  • 以后脏活累活也可以丢给ChatGPT了
  • 给假进度条fake数据的一个类库
  • css里给多个词语加逗号的一个方法
  • 你们要的chrome查找已知代码调试的方法来了
  • copilot问答模式的2个小场景,大家都是怎么用的呢?
  • 为什么el-table碰到缺失字段的情况排序会乱
  • 排查小伙伴的菜单项抖动问题,顺便分享一个chrome对比样式的小插件
  • ChatGPT给数据库表生成测试数据,3.5vs4.0
  • 大家都怎么用ChatGPT辅助编程啊?我想做个系列视频
  • flex常见的一个bug:部分区域无法触发popover关闭
  • 发现一个ElementUI中隐藏的巨好用的指令
  • copilot问答模式很好玩儿呀
  • Mac剪切板历史工具
  • 前两天单位的mongo-docker突然无法启动了
  • Alfred默认关闭的功能:输入一半的命令可以保留5分钟
  • 自定义一个指令解决部分组件没有scopeid的问题
  • 分享一个popover弹出层过渡动画效果
  • 你被vscode的这个小特性困扰过吗?
  • eltooltip错位的一个解决方法
  • 分享一个金额展示组件的升级版
  • zoom引发的tooltip错位
  • fixed定位的一些特例我们需要知道了才能避开一些bug
  • vue2点击跳转elementui源码插件和另一件小事儿
  • el-cascade限制选中数量(续)
  • el-cascader如何修改限制选中数量
  • 解决日期组件周模式无法设置valueFormat的问题
  • 分享一个可以自动检测是否出现省略号的vue指令
  • 记一次临时改变样式禁用滚动条引发的bug
  • 分享一个简单的基于ElemenUI封装的全局公用的图片预览组件
  • 分享一个带娃练习拼音的工具和一段vue长按指令
  • translateY过渡动画导致的多出滚动条
  • img-icon导致按钮不对齐的原因分析
  • 究竟vertical-align:middle的依据在哪里
  • 新版VSCode终端视图配合iTerm中文乱码了
  • 到底为什么用img标签实现icon的时候经常对不齐文字
  • 如何利用Aflred插件提取选中文件的内容并做一些文字处理
  • 间隙处点击续(另一个巧妙的方法)
  • 高z-index的容器空白处点击事件被吸收的问题处理
  • vue指令快速拖拽效果,额外附加3个小功能
  • 部分情况下,使用100vw和100%的区别
  • el-table同时开启固定列和展开行时,水平滚动的内容截断问题
  • 复制flex布局内的文字出现的多余换行问题
  • ElementUI新上线了一个组件很实用
  • Vue中动态class覆盖原生class的问题
  • el-table每行下面实现进度条的效果封装全过程完整版
  • 给table每一行下面增加进度条功能的思路
  • justify-content垂直居中,缩小容器后顶部丢失的bug
  • 给老粉准备的工具:按字幕检索我的视频
  • 是否复用VNode依据?源码中sameVnode方法逻辑
  • 浏览器对移动端手指touch优化产生的神奇的bug
  • 继上次max-height代替height做过渡动画的后续
  • 浅析VueJs中data数据新增属性后视图不更新的底层原因
  • css里transition不支持height为自适应的解决思路
  • elTooltip莫名错位的bug原因及解决方案
  • 推荐一个实现设计稿的时候,遇到很多小icon的解决方案
  • 今天遇到的vue项目开发是一保存就异常终止的问题
  • 强大的AppleScript_顺便解决一个bug
  • 定位“解决spring-cloud-config丢属性问题关键代码”的过程总结
  • 利用解决spring-cloud-config莫名丢属性的问题了解各版本的发行过程
  • flex-grow竟然支持动画过渡,用在全屏的折叠面板刚刚好
  • scrollHeight为什么两次不一致
  • 分享3个配合MenubarX的实用工具
  • 分享一个_scopeId的使用场景
  • 详解:el-button的disabled神奇不生效问题
  • el-button的disabled神奇不生效问题
  • vue组件如何实现任意css属性的动态设置
  • vue2组件嵌套的时候什么情况下scoped会失效以及怎么解决
  • 分享一段简洁的css来快速实现抖动提醒
  • 同样是100%大小,换成canvas就会多出滚动条
  • 跟评论区新学的1个非常好用的快捷键,后面举了一个js里面的应用
  • 神奇日文导致的图片在windows里面不显示的问题
  • 推荐一个货币计算&格式换的轻量级类库,耐心看后面的小技巧哈
  • offsetLeft引发的瀑布流错乱
  • el-select实现自适应宽度(思路可用于原生input自适应宽度)
  • 圆角导致的奇怪的“边框”
  • iTerm如何显示执行命令的时间
  • color拾取后输入法切换不了的Bug
  • el-table固定表头滚动时,表头不跟手抖动的问题
  • Alfred插件解决复制行内样式家换行的问题
  • $msgBox配合$createElement产生的双向绑定问题
  • 并发场景下saveOrUpdate导致的更新“不成功”的bug
  • HTML快速实现平滑滚动效果
  • Java里简单快速实现并行操作
  • 新版VSCode隐藏功能
  • JS新手常见bug:新节点的事件问题&mouseout和mouseleave的区别
  • el-date-picker自定义文字&copilot太爽了
  • ElementUI最新版使用el-date-picker报警告的问题
  • CSS实现多个容器保持相同宽度
  • VSCode插件:嵌套注释
  • css设置宽高比
  • 分页打印el-table时如何为每一页增加表头
  • 跨页打印table被截断怎么办
  • 好用的focus-within伪样式,顺便再提一嘴copilot
  • React下elementui的AutoComplete错位问题
  • React里eltable自己变小的bug排查全过程
  • foreach区别对待Array和Set
  • el-select下拉错位(下)
  • el-select下拉错位(中)
  • el-select下拉错位(上)
  • Tab栏续集&滑动卡片组件
  • 自己会跑的Tab栏
  • 巧用取模实现轮询效果
  • 多出的滚动条
  • 等号引发数组被清空的bug
  • MonacoEditor光标问题debug全过程
  • idea新ui申请试用&抢先体验的方法
  • 超时效果工具类的一个使用场景
  • Java工具类实现类似“超时”的效果
  • Mac终端里的pbcopy命令
  • Java中支持链式调用的数字工具类
  • 利用Alfred给文本段前面加序号
  • JetBrains号称的下一代开发工具Fleet预览版体验
  • DataGrip数据库管理工具推荐
  • vue.data页面级暂存实现
  • Java中小于号执行顺序
  • 剪映局部放大教程来啦
  • 全局快捷键打开iTerm
  • Console.log不准的问题
  • 利用chrome的“其他个人资料”实现同一个网站同时登录多用户
  • 数字id太长导致删除&更新失败
  • Alfred写周报有升级外加一个clone插件
  • React网站用脚本填写文本框不生效
  • 临时有感聊聊注释&变量名
  • Alfred周报小工具
  • MySQL正则不支持-d和大小写的问题
  • 切换抖动续集
  • iterm快速cd到某个ls结果目录的方法
  • 问题排查:切换页面时position_fixed会抖动
  • Chrome的DevTools调试动画偶尔失效的问题排查
  • Alfred代码段开启自动上屏配置的使用体验
  • 页面抖动调试过程
  • css高度百分比悖论问题
  • Java空指针异常的底层逻辑
  • VSCode上下分屏太适合写Vue了
  • 利用继承修改vue组件,解决el-table中max-height为比例值的滚动问
  • win系统利用环境变量运行“一切”
  • AI代码提示-copilot在idea里的使用效果
  • copilot使用体验,神奇的代码提示
  • 一款编辑Json的Chrome离线插件
  • 莫名抖动的调试过程(完整版)
  • Alfred写个插件处理curl
  • Vue网站书签栏脚本小技巧
  • VSCode何时打开新Tab
  • windows系统中配置自己写的程序到右键菜单
  • chrome开发者工具$0的用途
  • 编辑器列选择模式的两个场景
  • float超高导致神奇的错行问题
  • chrome开发者抓包工具copy-cURL的一个使用场景
  • SpringBoot特定场景下使用DevTools导致的bug
  • HTML缩放的缝隙
  • GitHub一键切换网页版vscode在线编辑
  • Mac工具Alfred小技巧
  • 自适应flex-item内英文自动折行后的宽度问题
  • java里Object.notify()方法的作用
  • Promise.resolve()使用场景(执行顺序续集)
  • 3个IDEA小技巧
  • Chrome自动播放策略
  • 巧用Promise处理执行顺序
  • Java封装同步锁(二次翻车后续)
  • Java封装同步锁(翻车后续)
  • Java封装同步锁(完整版)
  • Alfred获取本机IP插件
  • chrome隐藏的策略
  • 真心推荐3个alfred插件
  • 利用浏览器收藏夹给网站扩展新功能(续)
  • 迟到的阴影(iOS_SwiftUI)
  • 图片下的缝隙(续)
  • 正则提升效率小用途
  • 神奇的缝隙(CSS图片篇)
  • iOS动画debug(SwiftUI)
  • css里background-no-repeat不生效
  • chrome快速禁用Javascript
  • 贡献源码全过程(下集)
  • 贡献源码全过程(上集)
  • 覆盖java类改造jar包
  • el-table自定义滚动条大小后出现错位
  • 类似笔记本的自适应内容通体下划线
  • debug按钮样式异常「完整版」
  • vscode高对比度皮肤优化
  • 解决flex动态高度问题
  • 利用浏览器收藏夹给网站扩展新功能
  • 分享终端优化&工具配色方案
  • 如何伪装邮件服务接收数据
  • 在chrome浏览器里仅复制域名
  • 《放大镜后移》改造组件-完整版
  • 推荐一整套试用各种软件的皮肤
  • 《滚动不到底》debug完整版
  • 搜狗输入法极简皮肤
  • nodeJs随机生成国内地址
  • iterm打开时卡顿
  • sql查询子表状态全部完成的数据
  • ElementUI全局配置z-index
  • el-table配合flex布局时不缩小
  • css实现深色模式
  • 网页自适应
  • iterm、oh_my_zsh粘贴特别卡
  • 利用文本域填充剩余空间
  • css变量引发的bug
  • 传输文件中最后DONE文件的作用
  • 到底为啥ssh会自己断开
  • 真心推荐几个程序员的小工具
  • 仿朋友圈布局:1~9宫格css自适应
  • nodejs强大的类库:控制台交互
由 GitBook 提供支持
在本页

这有帮助吗?

el-select下拉错位(下)

上一页foreach区别对待Array和Set下一页el-select下拉错位(中)

最后更新于2年前

这有帮助吗?

今天终于可以把这个BUG

详细的给大家讲完了

大概现在这个就是不对齐的

那我们都知道了哈

导致这个BUG的原因之一就是这个popper

就是这个弹出层啊

被挂在到了这个ESSELECT里面

这个就是这个整个的弹出层

大家看它的父级元素就是这el-select

所以呢这个弹出层的位置

就是相对于这个el-select来说的

我们也可以看出来这个el-select

现在的position是等于relative的

所以呢我们会发现

他现在有个top等于40像素

life他有个5像素

40像素没问题

但他为什么总是会有一个5像素呢

大家看

这个的life就是

好那我们接下来就去深挖一下

到底为什么

这个的弹出层的left的就是5像素

首先呢我们先找到这个组件

在这里我们点进去

打开点进去以后呢

我们往下拉

找到他弹出层的那一块的代码

在这里

el-select-menu

ref=popper 就说明这是一个弹出层

我们继续往里点

然后呢大家看这有一个插槽

说明这是一个相对比较公用的组件

然后呢这有个mixins

他把这个

组合进来了

那我们再来看这个组件里边

这个组件里边呢往下看的话

我们会发现他有一个监听

showPopper 的这个这个变量

这里边呢他会调用updatePopper

所以呢我们再找一下这个updatePopper

在这里

这里边呢

他又调用了这个组件update方法

这个组件在哪呢

就在上面

大家看!他在这导入的

所以我们再去点进去

我们来搜一下update的方法在哪里

大家看 在这

update

然后我们就简单的

大概的先看一下这些代码

offsets看意思就是获取一些尺寸的东西

然后呢

boundaries

看字面也是在获取一些边界的东西

我们先不管他

那我们怎么调呢

我们就在最后啊把这个data打印出来

先看看它的数据结构

在这打印可不可以呢

首先我们试一下

刷新一下

大家看 没有任何输出

我再来一遍

对吧没有输出

那为什么呢

这里边有个技巧啊

我们先来看一下这个文件的路径

大家看他现在是在一个src目录里面

好我们复制一下他的文件名

然后呢我们再去找一下相同文件名

还有一个在lib下边 大家看

好我们去这里边改

还是我们找到 update方法

在这里边

我们在这下边

把这个data先打出来

看一下它的数据结构

大家看,他就打出来了

打出来两个

我们先不管他为什么打出来两个哈

然后呢我们展开后边这个

boundaries

offsets

大家看啊这个boundaries他就有一个left

等于

我们再来看一下上面正常的

清空一下

我们还是展开后面这个

大家看 这个boundaries

它的left就不是5,是-

包括我们再来看一下它的

offsets offsets里边注意看有个popper

popper的left是

然后我们再来看一下

有问题的

同样展开之后还是第二个

然后offsites paper

paper里还是有个left

这个left就是

点offests 然后呢 点popper 然后点

left

我们来看一下

打开5 再看这个

好接下来怎么办呢

我们把这个代码往上放

好我们再展开

还是5 我们再往上放

打开这个时候是0点几几斤

说明这个时候还没问题

再来看上面这个

他也是0点几几几

比如说在下边这个组件里边

走到这一步还是正常的

再往下走

走到这就不正常了

我们在这做一些标记

横线然后呢

加一些0吧

我们测一下

注意看

上面的时候还是

做完这个方法就变成5了

我们再来看正常的

上面是0点几

下面是

所以这个是没问题的

那就说明下面这个select

走到这个方法会对他有影响

那这个方法里面都有什么呢

我先把这个注掉

去看这个方法

这个方法呀就是去循环

执行了一些modifier

那这modifier在哪复的值呢

我们就一层一层找

最终我们就能找到这个

在这从这开始就有很多的modifier

大家看这是 applyStyle

咱们下shift

然后我就一个一个的在里边console.log

试哈就试到这个

大家看

这个modifier

他在这有一个life的输出

我们在这console log一下 left

大家看

这个是

同样是123的没问题的这个组件呢

他展开的时候这块输出的是

有问题

记得那个组件呢他展开的时候

在这输

出的是

所以我们就来看一下他有什么区别

打开

这是我之前写的注释哈 我们把它打开

这就是有一个判断

如果他小于他走这里边

我就把这两个变量都打出来了

好我们再来试一下

好我们展开这个有问题的注意看

0和5,0小于5吗

0当然小于

所以他会走下边

他会让这个left他等于谁啊

等于这两个数里面比较大的那个

因为0小于5等于大的就是谁呢

他就变成5了

我们再来看另一个

0小于248吗

当然不小于

所以他不会走这里边

所以啊问题就集中在了

这个 boundaries.left 的到底是什么

这个boundaries边界到底是什么

那我们来看一下

就是当我们展开这个组件的时候

这个弹出层他不能超出的一个范围

不能超出什么范围呢

就是这个屏幕的边缘

也就是浏览器的四周

但是大家可别忘了

现在这个popper是被挂在到了

这个el-select

里面

所以呢这个popper的布局

是相对于这个el-select的

那么对于这个popper来说

的x轴为0是哪呢

就是这条线

那么它的y轴为0呢

就是这条线

好所以对于这个popper来说

如果我们想把它放到左侧的边缘

他的

x轴坐标应该是多少呢

我们假设

他的offsetLeft

是400PX 那么

他的left应该是多少呢

应该是

0减去400PX

也就是说-400像素

同理呢他的顶部边界值也是这样的

用0减去offsetTop来得到

所以

我们再回去找刚才这个帮坠

式复制的那转代码

我们回到这个update方法

在这里

在这里给boundaries赋值,我们点进去

往下找

大家看

这个boundaries等于left的是0减去这个

再减 scrollLeft

这个scrollLeft可以不管他

但问题就出现在这里

为什么呢

因为下边这个

它取不到 offsetLeft

关于这个啊

我前两期视频已经铺垫过了

大家看一下

我们检查一下这个元素

这个是ears like

但是呢大注意它的父级元素是什么呢

大家看

现在是position:relative

同时呢他有一个margin

所以呢他现在

是获取不到

offsetLeft 我们可以验证一下

大家看是

我们再来试一下正常的这个

选中这个

我们选中这个el-select 在这里

然后呢

点offset left

大概

这个是正确的

所以要想从根源上来解决这问题

我们就要想办法让他能拿到这个

el-select的

他的offsetLeft

怎么处理

这个我

前两期视频都已经详细的讲过了哈

我们来试一下

我先把这个margin-left去掉吧

好我们再来试一下

offsetLeft 大家看 就能取到了

所以呢

最终的解决方法就是我们要在这个

样式里边

写一个这样的样式

然后position等于 initial

或者我们强制让他的margin-left于0

https://v.douyin.com/r88NacE/
Logo