看看这个Fiddle
我正在尝试将div #popup
放在页面底部,重叠之前的所有内容和
#content
)我不确定,但我认为position: absolute
在这种情况下不起作用,至少不是我实现它的方式。
我该怎么做?
答案 0 :(得分:5)
将position: absolute
用于此类弹出窗口的关键是确保容器设置为position: relative
。此外,您需要设置z-index以确保弹出窗口显示在内容上方,并使用top属性设置位置。
要满足弹出窗口宽度的要求,您只需设置width: 100%
#content {
cursor: pointer;
position: relative;
}
#popup {
display: none;
position: absolute;
top: 0;
z-index: 1;
width: 100%;
}
请在此处查看更新的小提琴:https://jsfiddle.net/xsxo0xmd/18/
从技术上讲,您可以将position: absolute
与任何未设置为position : static
的容器(位置的默认值)一起使用,如此处所述https://developer.mozilla.org/en-US/docs/Web/CSS/position
绝对定位 元素相对于最近定位的祖先定位 (非静态)。如果定位的祖先不存在,则为初始 使用容器。
有关在相对定位中使用绝对定位的说明性指南,请查看https://css-tricks.com/absolute-positioning-inside-relative-positioning/
答案 1 :(得分:1)
将此附加到您的CSS中以获取所述元素:
#popup {
position: fixed; //this is your friend
bottom: 0; //stick to bottom
z-index: 1; //bring the element in front of other element.
}
我已经为你更新了JSFiddle。
答案 2 :(得分:0)
需要绝对位置,因为您希望从父级获取宽度。 由于位置:绝对元素相对于其第一个定位(非静态)祖先元素定位。你也希望弹出这个容器,这将通过z-index实现。
仅供参考,请查看更新的
$(document).ready(function(){
$('#content').click(
function(){
popup = $('#popup');
if (popup.hasClass('show')) {
popup.slideUp(250, function() {
popup.fadeOut(250).removeClass('show');
});
} else {
popup.slideDown(250, function() {
popup.fadeIn(250).addClass('show');
});
};
}
);
});

.CodeMirror {
height: calc(100vh - 25px);
width: 100%;
}
#content {
cursor: pointer;
background-color:green;
}
#popup {
display: none;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 100px;
background-color: red;
z-index: 100;
}

<script type="text/javascript">
var myCodeMirror = CodeMirror(document.body, {
value: "function myScript(){return 100;}",
mode: "javascript",
lineSeparator: null,
theme: "default", // theme directory
indentUnit: 2,
smartIndent: true,
tabSize: 2,
indentWithTabs: false,
electricChars: true,
extraKeys: null,
lineWrapping: false,
lineNumbers: true,
firstLineNumber: 1,
scrollbarStyle: "overlay",
inputStyle: "contenteditable",
readOnly: false, // also "nocursor"
showCursorWhenSelecting: false,
lineWiseCopyCut: true,
undoDepth: 200,
historyEventDelay: 1250,
autofocus: true
});
</script>
<div id="content">
ABC
<div id="popup">
DEF
</div>
</div>
&#13;
答案 3 :(得分:0)