el-select下拉错位(中)

这里有个span标签

然后里边有三个横线

页面上也很简单就是这样

然后我们选中这个元素

我们看一下他的 offset left

大家看是

为什么呢

因为整个这个 body

有个默认的 margin

他是8像素

即使我们把这个span标签

放到某个 div 里面

就是这样

好我们再来看一下

大家看 还是

但是

如果我们把 div 加一个 position 不让

他是默认值了

我们让他是 relative

还是选中这次买标签

大看他就是0了

那为什么会这样呢

原因是啊

这个 offset left a

跟这个绝对定位的“子绝父相”是一样的

他也是取这个 非static 定位的祖先元素

作为一个参照物的

这个我们也可以试一下

我们可以通过这个元素的点 offsetParent

来看一下

大家看他现在的 offset parent 是这个 div

但如果我们把这个样式去掉

大家看他的 offsetParent

他就变成了 body

那相对于 body 他当然就是8像素了

但如果我们加上这个相对于这个 div

那他就是

div 了

我们再用这个 offsetLeft

他就是

好那到这为止还好理解

接下来我们进阶一下

如果我们在这加一个 float 的元素

好我们把它改成 float 等于

打开按照我们刚才的理解

因为这个三个横线的 spa

是基于这个 div 来

定位的

也就说它的 offset left 应该还是0对吧

但我们来试一下哈

我们还是选中这个

然后呢

好他来复他打开他就变成28了

那这又是为什么呢我们来看一下 float

对于这个浮动的元素

其他的元素呢是要环绕它的

但是呢我这个 div 啊

又不能做成一个不规则形状

按说不规则应该就是这个形状

对吧不能做成这种形状

所以呢

他还是这个 dv 是一个矩形

只不过他里边的内容

要去给这个浮动元素让出空间来

所以啊

这时候我们再去获取这个 span 标签的

offsetLeft

它就不是0了

这个我们也可以试一下

我们在这加一个 br

然后呢再加一个 abc

然后呢我们把它加一个背景颜色

随便选一个

然后呢我们在这里边加一些文字

100个好大家看是不是就环绕了

就是这个效果然后我们还可以把它呀

加一个边框就更清晰了

so i 的我们用 red

打卡

好接下来我们再来思考一个问题

如果我们把这个外层的这个元素

加一个margin

比如说

来看一下

他现在就相当于整个这个大的 div

整体就向右偏移了10像素

所以他里边的内容

就不需要再让出原来那么大的空间了

少让出10个像素就够了

所以这时候

我们再来获取 span 的 offsetLeft

它会变成

那如果我们把这个margin扩大到28呢

看看他是不是

里边内容完全不需要再让出空间了

所以这时候再去获取他的 offsetLeft

他会变成

但是如果我们强制再把这个

4瓣标签扩大呢

大家看我把它宽度扩大到

大家看这时候里面又需要让出来了

所以这时候我们再去获取4瓣呢

他又不再是0了 大家看 是

好接下来大家注意听啊

如果我们这个大的 div 里

只有一行文本

或者一个元素

那么

他在展现形式上加不加margin

其实是一个效果

为了验证哈

我们保留outline

我们来看一下

现在是保留奥特曼

有 margin 的效果是这样

我们忽略边框的存在啊

只看里边的内容

但是注意我把 margin 去掉

大家看 里边的内容(布局)是不是没有变

只是边框变了

所以如果我们不把边框展现出来的话

加不加margin它是一个效果 大家看

然后我们再加一个 margin

是多少呢

他现在是

我们加一个

大家看它是没有区别的

展现上是一样的

但是有一个区别

就是我们在获取这个元素的

offsetLeft 的值是不一样的

大家看这种情况下它是

但如果我把它去掉

再获取 offside the left

它就是40了

好我们来总结一下今天这几个点哈

最后更新于