27

有没有像 min-height 这样的 css 属性,但是对于 top ?在下面的示例中,当我隐藏 div1(通过 javascript)时,我希望 div2 具有 top:50。否则,放置在 div1 下方。

<html>
<head>
<style>
#div1
{
height:100px;
}
#div2{
//min-top:50px;
}
</style>
</head>

<body>
<div id='div1'>This div may be hidden</div>
<div id='div2'>This div must not be placed above 50px</div>
</body>
</html>

编辑:正如我在下面回答的

当 div1 未隐藏时,我希望 div2 正好低于 div1。将 div1 想象成一个可以有任何高度(甚至隐藏)的树视图,将 div2 想象成一个应该始终低于 50px 的段落

4

6 回答 6

6

我想出了这个解决方案,它利用了 top:0 bottom:0 hack。

我们创建一个容器,其高度是它的相对父级(如果有) - 然后我们给它一个最小高度(例如你的最小顶部)

然后我们将实际元素绝对定位到此容器的底部。

CSS:

.container {
  position:absolute;
  bottom:0px;
  top: 0;
  min-height: 700px; //Adjust this to your MINIMUM (eg your min-top)
}

.position-me {
  position: absolute;
  bottom: 0;
}

HTML:

<div class="container">
    <div class="position-me">Great!</div>
</div>
于 2016-01-14T16:25:46.017 回答
3

不,没有什么像min-top

相反,您可以使用 is

div {
   position: relative;
   top: 50px;
}

对于您展示的示例,visibility: hidden;这里最适合,因为它将保留您隐藏的空间div

于 2013-03-21T16:00:28.967 回答
2

我怀疑这会对你有用,但我相信这不是一个很好的做法:

#div1
{
    height:100px;
    outline: 1px solid red;
    margin-bottom:-50px;
}
#div2{
    margin-top:50px;
    outline: 1px solid blue;
}

演示:http: //jsfiddle.net/pavloschris/tbbvU/

(只需评论/取消评论display:none即可看到它的工作。)

于 2013-03-21T16:50:46.163 回答
1

我看到这个问题还有很多观点,人们还在评论。由于这个问题没有完全回答,我决定在这里写下完整的答案:

适当的CSS:

#div1 {
    min-height:50px;
    background-color: #fee;
    margin-bottom:-50px;
}
#div2 {
    margin-top:50px;
    background-color: #efe
}

http://jsfiddle.net/vVsAn/5051/

结果

  • 当 div1 被隐藏时,div2 的 top 属性为 50px
  • 当 div1 未隐藏时:
    • 如果 div1 高度小于 50px,则 div2 放置在 50px
    • 如果 div1 的高度大于 50px,那么 div2 就放在 div1 的正下方
于 2016-05-25T09:44:04.373 回答
1

$(window).on("resize", function () {
    if ($('#div1').css('display', 'none')){
    	$("#div2").addClass('minTop');
	} else if ($('#div1').css('display', 'block')){
		  $("#div2").removeClass('minTop');
	}
}).resize();
#div1{
width:100px;
height:100px;
background-color:#ff0000;
position:absolute;
display:block;
/* display:none; */
}
#div2{
width:100px;
background-color:#ffff00;
top:150px;
position:absolute;
}
#div2.minTop{
  top:50px !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<head>
</head>

<body>
<div id='div1'>div 1</div>
<div id='div2'>div 2</div>
</body>
</html>

于 2018-01-15T14:55:19.223 回答
0

“有 css min-top 属性吗?” 不是,但 ...

...您可以使用数学函数像 min-top 一样生效:

<style> 
  #div2{
    top:max(50px, 10%);
  }
</style>
    

https://developer.mozilla.org/en-US/docs/Web/CSS/max

于 2020-10-29T10:05:14.613 回答