移除和读取一个元素会将另一个元素向下推,在开发工具中切换浮动会将元素移回正确的位置
Removing and readding an element pushes another element down, toggling the float in dev tools causes the element to move back to the correct position
我有一个容器,里面有三个元素。一个向左浮动,另一个居中浮动,最后一个向右浮动。如果我把中间的项移走再加回去,最右边的项就会被往下推,我也不知道为什么。
如果你选择正确的项目并在Chrome开发工具中查看它,你可以切换float: right off/on,然后它将被正确定位。
这在Chrome中会发生,但在FireFox中不会发生。(我没有在IE中测试过)
我在这里有一个问题的演示:http://codepen.io/anon/pen/rVyRmy?editors=001
var on = true;
var l = $('<div class="left"></div>');
var r = $('<div class="right"></div>');
var clicky = function() {
if (on) {
$('.container').empty();
$('.container').append(l);
$('.container').append($(
'<div class="fill">' +
'<span>text</span>' +
'<span>text</span>' +
'<span>text</span>' +
'<span>text</span>' +
'</div>'
));
$('.container').append(r);
on = false;
} else {
$('.container').empty();
$('.container').append(l);
$('.container').append($('<input type="text" />'));
$('.container').append(r);
on = true;
}
$('.right').on('click', clicky);
};
$('.right').on('click', clicky);
.container {
width: 400px;
height: 20px;
text-align: center;
background-color: lightgray;
}
.left, .right {
display: inline-block;
width: 14px;
}
.left {
position: relative;
float: left;
}
.left:before {
position: absolute;
top: 4px;
left: 4px;
content: "";
width: 0;
height: 0;
border-style: solid;
border-width: 5px 8.7px 5px 0;
border-color: transparent orange transparent transparent;
}
.right {
position: relative;
float: right;
}
.right:before {
position: absolute;
top: 4px;
right: 4px;
content: "";
width: 0;
height: 0;
border-style: solid;
border-width: 5px 0 5px 8.7px;
border-color: transparent transparent transparent orange;
}
span {
width: 93px;
background-color: green;
display: block;
float: left;
}
div span:first-child {
margin-left: 14px;
}
<div class="container">
<div class="left"></div>
<input type="text" />
<div class="right"></div>
</div>
在上面,我清除了所有内容并重新绘制,我也尝试过离开左和右元素,只是删除/添加中心,但我得到了相同的结果。
你可以通过强制重新绘制右边的元素来解决这个问题。有几种方法可以做到这一点,但我最喜欢的方法是$(r).hide().show(0);
$(r).offsetHeight
已经知道工作,虽然它不工作在你链接到的代码依赖,它不工作在safari。对于背景,我添加了如下代码:
else {
$('.container').empty();
$('.container').append(l);
$('.container').append($('<input type="text" class="middle" />'));
$('.container').append(r);
$(r).hide().show(0);
on = true;
}
原来的SO帖子,我得到了我的答案,当我遇到一个类似的问题,前几天:强制DOM重绘/刷新Chrome/Mac
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- Chrome开发工具中使用了哪些框架和库
- `当使用箭头函数时,“开发工具”中未定义“this”
- 有没有一种方法可以使用任何浏览器扩展整个dom树'的开发工具
- $.get-response没有responseJSON方法,但当我在Chrome开发工具中绑定它时,它确实有
- 无法在Chrome开发工具中实时编辑Javascript
- 在Chrome开发工具中测量步骤之间的时间
- Redux开发工具Chrome扩展Immutable.js导致错误
- 未注释img´除非调整浏览器大小、缩放或打开开发工具,否则不会显示
- Chrome 开发工具:如何计算加载弹出窗口并将其显示在页面上所需的总时间
- AWS S3 JavaScript 开发工具包 getSignedUrl 仅返回基本路径
- 是否有“”的键盘快捷键;暂停动画”;Chrome开发工具中的功能?(F12)
- 哪个webpack开发工具适合chrome应用程序
- Fetch元素鼠标当前指向的Chrome开发工具已启用
- 进度条元素破坏Chrome渲染(除非开发工具打开)
- 无法使用 Chrome 开发工具检查元素
- 如何在chrome开发工具中通过Jquery获取元素集的事件监听器
- CSS显示一个元素的内容在chrome使用F12开发工具
- 移除和读取一个元素会将另一个元素向下推,在开发工具中切换浮动会将元素移回正确的位置
- 在开发工具下获取可用元素->资源→帧