CSS:抑制子元素的负边距
CSS: Suppressing negative margins of child elements
我有一个围绕一些动态内容的父元素(例如div)。我希望父div在尽可能多的情况下完全包含子元素。
一个问题是子元素的边距设置为负,这会导致子元素显示在父元素之外(也会导致父元素的大小不符合要求)。
-
是否有任何css技巧可以应用于父元素,以抑制子元素的负边距(例如,无需修改子元素的样式)
-
如果失败,无论如何都可以通过javascript检测特定元素是否具有溢出内容?(以及内容溢出的方向和程度)
您是否尝试将类放到父类中,如:
.parentDiv > * {
margin:0 !important;
}
要使父元素具有所需的高度,您还需要设置一些css:
.parentDiv{
overflow:hidden;
position:relative;
background:#DFE;
padding:5px;
}
有一个javascript方法可以处理这个问题,但它肯定没有@Mic的CSS解决方案那么干净。我还没有完全测试过这一点,你可能需要添加一些对各种填充/边距调整的支持,但如果js解决方案是唯一的选择,它会让一些人开始。使用prototype.js (jquery类似,但纯javascript将非常…弹性):
function checkOverflow (child) {
child = $(child);
if (child.descendants().any()) {
child.getElementsBySelector("> *").each(function(e) {
checkOverflow(e);
});
}
var parent = child.up();
var child_left = child.cumulativeOffset()['left'], child_top = child.cumulativeOffset()['top'];
var child_height = child.getDimensions()['height'], child_width = child.getDimensions()['width'];
var parent_left = parent.cumulativeOffset()['left'], parent_top = parent.cumulativeOffset()['top'];
var parent_height = parent.getDimensions()['height'], parent_width = parent.getDimensions()['width'];
if (child_top < parent_top) {
if (child_left < parent_left) {
// adjust element style here
} else if (child_left > parent_left + parent_width) {
// adjust element style here
}
} else if (child_top > parent_top + parent_height) {
if (child_left < parent_left) {
// adjust element style here
} else if (child_left > parent_left + parent_width) {
// adjust element style here
}
}
}
但是,我的总体感觉是,只有在不能通过CSS显式地完成时才应该这样做。
相关文章:
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 如何使用css动画/javascript使具有背景图像的元素出现
- JQuery-动态创建的元素css不起作用
- 如何使用jquery动态更改DOM元素CSS类
- JS+更改元素CSS+命名锚点
- Javascript获取元素CSS过渡阶段
- 聚合物元素css未显示-检查器中没有错误
- jQuery:获取元素 CSS 值
- 在按钮单击Javascript时添加元素CSS属性后动态更改元素CSS属性
- 中心元素css三维变换
- AngularJS:重置angular.元素CSS改变
- 我想悬停一个元素来影响其他元素css
- 多个存储元素.css()
- 如果窗口调整大小,jQuery将检查元素css属性
- 如何将元素css转换为JSON
- 在长时间执行过程之前和之后使用Jquery更改元素css
- 移除元素css后的::
- jQuery - 有没有办法“保存”dom元素(css)的状态并恢复到保存的状态等
- 渲染图像操作哪个更快:HTML5画布元素,还是操作DOM元素? 'CSS与JS/jQuery
- 如何保存一个网页快照与它的所有元素(css, js,图像,…)到一个文件