Есть ли свойство css min-top - программирование

Есть ли свойство css min-top

Есть ли какое-либо свойство css, например min-height, но для верхнего? В приведенном ниже примере, когда я скрываю div1 (через javascript), я хочу, чтобы div2 имел верх: 50. Else, для размещения ниже 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

4b9b3361

Ответ 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 имеет верхнее свойство 50px
  • Когда div1 не скрыт:
    • Если высота div1 меньше 50px, то div2 помещается в 50px
    • Если div1 height больше 50px, div2 устанавливается прямо под div1

Ответ 2

Нет ничего подобного min-top

Вместо этого вы можете использовать

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

И для примера, который вы показали, visibility: hidden; будет лучше всего подходит здесь, так как он зарезервирует пространство вашего скрытого div

Ответ 3

Я придумал это решение, в котором используется верх: 0 внизу: 0 hack.

Мы создаем контейнер с высотой его относительного родителя (если таковой имеется) - тогда мы даем ему минимальную высоту (например, ваш min-top)

Затем мы помещаем фактический элемент абсолютно в нижнюю часть этого контейнера.

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>

Ответ 4

Я подозреваю, что это сделает трюк для вас, но я считаю, что это не очень хорошая практика:

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

DEMO: http://jsfiddle.net/pavloschris/tbbvU/

(Просто комментируйте/раскомментируйте display:none, чтобы увидеть, как он работает.)

Ответ 5

$(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>