Переместить div, когда другой div скрыт - PullRequest
0 голосов
/ 19 марта 2020

div#content {
  position: relative;
  width: 100%;
  border: 1px solid black;
  height: 500px;
  bottom: 0px;
}

div#menu {
  position: absolute;
  height: 125px;
  width: 100%;
  border: 1px solid black;
  bottom: 0px;
  line-height: 125px;
  text-align: center;
}

div#recenter {
  line-height: 50px;
  text-align: center;
  border: 1px solid black;
  border-radius: 30px;
  position: absolute;
  margin: 10px;
  padding: 0px 20px;
  bottom: 180px;
  background-color: aliceblue;
}

div#geolocation {
  line-height: 50px;
  text-align: center;
  border: 1px solid black;
  position: absolute;
  margin: 10px;
  bottom: 125px;
  background-color: aliceblue;
}
<div id="content">
  <div id="recenter">Re-center</div>
  <div id="geolocation">My address is : 3958 Heron Way - Oregon 97351</div>
  <div id="menu" onclick="document.getElementById('geolocation').style.display = 'none';">MENU (CLICK ME)</div>
</div>

В настоящее время, когда я скрываю блок #geolocation в javascript, кнопка #recenter не перемещается.

Что я хочу, чтобы при выполнении следующей команды jQuery: $('#geolocation').hide(); (или в js: document.getElementById('geolocation').style.display = 'none';) кнопка #recenter перемещалась вниз (там, где был расположен блок #geolocation)

Как это сделать?

Ответы [ 3 ]

2 голосов
/ 19 марта 2020

Не располагайте элементы абсолютно, воспользуйтесь преимуществами компоновки и выравнивания flexbox.

div#content {
  position: relative;
  width: 80%;
  margin: 1em auto;
  border: 1px solid black;
  height: 300px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
}

div#menu {
  height: 50px;
  width: 80%;
  border: 1px solid black;
  text-align: center;
  margin: 0 auto;
}

div#recenter {
  line-height: 20px;
  text-align: center;
  border: 1px solid black;
  border-radius: 30px;
  margin: 10px;
  padding: 0px 10px;
  background-color: aliceblue;
}

div#geolocation {
  line-height: 20px;
  text-align: center;
  border: 1px solid black;
  margin: 10px;
  background-color: aliceblue;
}
<div id="content">
  <div id="recenter">Re-center</div>
  <div id="geolocation">My address is : 3958 Heron Way - Oregon 97351</div>
  <div id="menu" onclick="document.getElementById('geolocation').style.display = 'none';">MENU (CLICK ME)</div>
</div>
1 голос
/ 19 марта 2020

Когда вы щелкаете геолокацию и скрываете ее, вы также можете переместить кнопку «Центр» вниз. Это не очень хороший способ сделать это, но он работает.

div#content {
  position: relative;
  width: 100%;
  border: 1px solid black;
  height: 500px;
  bottom: 0px;
}

div#menu {
  position: absolute;
  height: 125px;
  width: 100%;
  border: 1px solid black;
  bottom: 0px;
  line-height: 125px;
  text-align: center;
}

div#recenter {
  line-height: 50px;
  text-align: center;
  border: 1px solid black;
  border-radius: 30px;
  position: absolute;
  margin: 10px;
  padding: 0px 20px;
  bottom: 180px;
  background-color: aliceblue;
}

div#geolocation {
  line-height: 50px;
  text-align: center;
  border: 1px solid black;
  position: absolute;
  margin: 10px;
  bottom: 125px;
  background-color: aliceblue;
}
<div id="content">
  <div id="recenter">Re-center</div>
  <div id="geolocation">My address is : 3958 Heron Way - Oregon 97351</div>
  <div id="menu" onclick="document.getElementById('geolocation').style.display = 'none';document.getElementById('recenter').style.bottom = '125px';">MENU (CLICK ME)</div>
</div>
0 голосов
/ 19 марта 2020

оберните геолокацию и недавний div внутри div и передайте им класс. затем используйте cal c и согните для достижения ваших требований, как показано ниже. не нужно использовать position и bottom CSS, это очень плохая практика для такого рода ситуаций. Счастливое решение:)

div#content{
   position:relative;
   width:100%;
   border:1px solid black;
   height:500px;
   bottom:0px;
}
div#menu{
   position:absolute;
   height:125px;
   width:100%;
   border:1px solid black;
   bottom:0px;
   line-height:125px;
   text-align:center;
}

  #recenter{
  padding:10px;
  border:1px solid #000;
  max-width:120px;
  border-radius:30px;
  text-align:center;
  background-color: aliceblue;
  }

#geolocation{
    line-height:50px;
    text-align:center;
    border: 1px solid black;
    margin:10px;
    background-color: aliceblue;
}

.upper_div{
    height: calc(100% - 125px);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}
<div id="content">
	<div class=upper_div>
    	<div id="recenter">Re-center</div>
	<div id="geolocation">My address is : 3958  Heron Way - Oregon 97351</div>
    </div>
    <div id="menu" onclick="document.getElementById('geolocation').style.display = 'none';">MENU</div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...