Javascript 覆盖在另一个(动态定位)
我知道SO提出了几十个问题,这些问题与我在标题中所说的类似,但我的挑战有些独特,我将在下面解释。我有一组div块,排列如下: HTML: 其次,左窗格的宽度将动态变化,因此我认为覆盖div的位置也需要动态调整。正如您在上面我的jsFiddle演示中所看到的,overlay div具有“绝对”定位和z索引值,这似乎是覆盖元素的最常用方法。这类方法可行,但顶部和左侧的值都可以/将发生变化Javascript 覆盖在另一个(动态定位),javascript,jquery,html,css,Javascript,Jquery,Html,Css,我知道SO提出了几十个问题,这些问题与我在标题中所说的类似,但我的挑战有些独特,我将在下面解释。我有一组div块,排列如下: HTML: 其次,左窗格的宽度将动态变化,因此我认为覆盖div的位置也需要动态调整。正如您在上面我的jsFiddle演示中所看到的,overlay div具有“绝对”定位和z索引值,这似乎是覆盖元素的最常用方法。这类方法可行,但顶部和左侧的值都可以/将发生变化 那么,应对这一挑战的最佳方式是什么?如果有必要的话,我可能只需要计算叠加div的左侧和顶部位置,但是有没有更优雅
那么,应对这一挑战的最佳方式是什么?如果有必要的话,我可能只需要计算叠加div的左侧和顶部位置,但是有没有更优雅的方法来实现它呢?这非常简单。您还需要使用position:relative。将它添加到右窗格中,然后使孤儿成为右窗格的子对象 绝对定位的工作原理是“顶部”和“左侧”属性与第一个非静态父对象的上角和左角相关。那个就是右窗格,因为我们给了它位置:相对。相对定位不会影响流或更改渲染位置,除非向其添加顶部、左侧等,因此不会影响父对象。我们必须将其更改为相对、绝对或固定,因为默认设置为位置:static。希望这一切都有意义 编辑:我还将孤立样式规则更改为使用基于百分比的宽度和高度。您可以这样做,因为相对父对象具有绝对定位。顶部、左侧、右侧和底部以及宽度和高度都相对于父对象
#orphan {
width:100%;
height:100%; /* changed width and height to be dynamic */
display:none;
background:blue;
color:white;
}
这真的很简单。您还需要使用position:relative。将它添加到右窗格中,然后使孤儿成为右窗格的子对象 绝对定位的工作原理是“顶部”和“左侧”属性与第一个非静态父对象的上角和左角相关。那个就是右窗格,因为我们给了它位置:相对。相对定位不会影响流或更改渲染位置,除非向其添加顶部、左侧等,因此不会影响父对象。我们必须将其更改为相对、绝对或固定,因为默认设置为位置:static。希望这一切都有意义 编辑:我还将孤立样式规则更改为使用基于百分比的宽度和高度。您可以这样做,因为相对父对象具有绝对定位。顶部、左侧、右侧和底部以及宽度和高度都相对于父对象
#orphan {
width:100%;
height:100%; /* changed width and height to be dynamic */
display:none;
background:blue;
color:white;
}
您可以使用偏移方法获取右窗格的顶部和左侧:
下面是一个您可以使用偏移方法获取右窗格的顶部和左侧:
下面是一个更改jQuery的方法,如下所示:
$("#showlayer").click(function () {
$("#orphan").css({
'position': 'absolute',
'display': 'block',
'z-index': '10',
'top': 0,
'right': 0
});
/* This solution seems to work but not quite!
$("#orphan").css({
'float': 'left',
'display': 'inline'
});
$("#right-pane")
.empty()
.append($("#orphan"));
*/
});
然后移动孤立div并在CSS中做一些微小的更改,如下更改jQuery:
$("#showlayer").click(function () {
$("#orphan").css({
'position': 'absolute',
'display': 'block',
'z-index': '10',
'top': 0,
'right': 0
});
/* This solution seems to work but not quite!
$("#orphan").css({
'float': 'left',
'display': 'inline'
});
$("#right-pane")
.empty()
.append($("#orphan"));
*/
});
然后移动孤立div并在CSS中进行一些微小的更改,如果您使用:
display: table-cell; /*(IE8+) for the columns*/
display: table; /*for the wrapper*/
您的div将像一个表一样工作,只使用css自动调整大小
如果您使用:
display: table-cell; /*(IE8+) for the columns*/
display: table; /*for the wrapper*/
您的div将像一个表一样工作,只使用css自动调整大小
拨弄
display: table-cell; /*(IE8+) for the columns*/
display: table; /*for the wrapper*/