在上一个之后显示div,但取消文档流
Display div right after previous, but take off of the flow of a document
显示 div 在上一个之后写入(如 position:relative)但取消文档流 - 因此它不会影响其他 div 流并且就像弹出窗口一样。如何实现?
HTML
<a href="#" class="menu item colaborate">Colaborate</a>
<div class="colab-box hide">
<textarea rows="10" name="comment" class="colab-input"id="comment </textarea>
<button class="send-colab">Colaborate</button>
</div><!--colab-box -->
JQUERY:
$(document).ready(function() {
$('.colaborate').click(function(e) {
$('.colab-box').toggle();
e.stopPropagation();
});
$(document.body).click(function() {
$('.colab-box').hide(); });
$('.colab-box').click(function(e) {
e.stopPropagation();
});
});
CSS:
.colab-box{
position:relative;
top:0;
left: 76%;
border: 1px solid grey;
border-bottom-right-radius: 5px;
width:23%;
border-bottom-left-radius: 5px;
background:#fff;
}
正如您在点击时看到的那样,colab-box 已切换 - 但由于它是相对定位的,所以它占用了一些 space 并且打乱了其他元素的顺序。如果我将它定位为绝对 - 那么我将不知道确切的位置,因为我需要它在 'Colaborate' 按钮之后立即弹出。
如果您不希望代码影响页面中的其他元素,您需要使用类似 'absolute' 的位置来覆盖弹出窗口。如果您在这两个元素周围放置一个容器并将其设置为 'relative' 的位置,则您可以将弹出窗口设置为 'absolute' 并为其指定一个特定的左值。这意味着您必须在按钮上设置固定宽度。
$(document).ready(function() {
$('.colaborate').click(function(e) {
$('.colab-box').toggle();
e.stopPropagation();
});
$(document.body).click(function() {
$('.colab-box').hide();
});
$('.colab-box').click(function(e) {
e.stopPropagation();
});
});
.container {
position: relative;
}
.menu.item.colaborate {
float: left;
width: 80px;
background: #ccc;
}
.colab-box {
position: absolute;
top: 0;
left: 80px;
border: 1px solid grey;
border-bottom-right-radius: 5px;
width: 23%;
border-bottom-left-radius: 5px;
background: #fff;
}
<div class="container">
<a href="#" class="menu item colaborate">Colaborate</a>
<div class="colab-box hide">
<textarea rows="10" name="comment" class="colab-input" id="comment"></textarea>
<button class="send-colab">Colaborate</button>
</div>
<!--colab-box -->
</div>
显示 div 在上一个之后写入(如 position:relative)但取消文档流 - 因此它不会影响其他 div 流并且就像弹出窗口一样。如何实现?
HTML
<a href="#" class="menu item colaborate">Colaborate</a>
<div class="colab-box hide">
<textarea rows="10" name="comment" class="colab-input"id="comment </textarea>
<button class="send-colab">Colaborate</button>
</div><!--colab-box -->
JQUERY:
$(document).ready(function() {
$('.colaborate').click(function(e) {
$('.colab-box').toggle();
e.stopPropagation();
});
$(document.body).click(function() {
$('.colab-box').hide(); });
$('.colab-box').click(function(e) {
e.stopPropagation();
});
});
CSS:
.colab-box{
position:relative;
top:0;
left: 76%;
border: 1px solid grey;
border-bottom-right-radius: 5px;
width:23%;
border-bottom-left-radius: 5px;
background:#fff;
}
正如您在点击时看到的那样,colab-box 已切换 - 但由于它是相对定位的,所以它占用了一些 space 并且打乱了其他元素的顺序。如果我将它定位为绝对 - 那么我将不知道确切的位置,因为我需要它在 'Colaborate' 按钮之后立即弹出。
如果您不希望代码影响页面中的其他元素,您需要使用类似 'absolute' 的位置来覆盖弹出窗口。如果您在这两个元素周围放置一个容器并将其设置为 'relative' 的位置,则您可以将弹出窗口设置为 'absolute' 并为其指定一个特定的左值。这意味着您必须在按钮上设置固定宽度。
$(document).ready(function() {
$('.colaborate').click(function(e) {
$('.colab-box').toggle();
e.stopPropagation();
});
$(document.body).click(function() {
$('.colab-box').hide();
});
$('.colab-box').click(function(e) {
e.stopPropagation();
});
});
.container {
position: relative;
}
.menu.item.colaborate {
float: left;
width: 80px;
background: #ccc;
}
.colab-box {
position: absolute;
top: 0;
left: 80px;
border: 1px solid grey;
border-bottom-right-radius: 5px;
width: 23%;
border-bottom-left-radius: 5px;
background: #fff;
}
<div class="container">
<a href="#" class="menu item colaborate">Colaborate</a>
<div class="colab-box hide">
<textarea rows="10" name="comment" class="colab-input" id="comment"></textarea>
<button class="send-colab">Colaborate</button>
</div>
<!--colab-box -->
</div>