Как заставить все мое тело скользить вправо, когда я переключаю скользящую сторону

Я бы заставил свое меню скользить вправо, когда переключаю свое скользящее меню. Как это сделать? Пока я могу сделать это только с помощью position: fixed, но это вредит мне, потому что это мешает навигации - очевидно, тогда экран зафиксирован! Итак, как это сделать без исправления моего тела html.

Вот демонстрация моей ситуации: https://codesandbox.io/s/8zzr0jmm98

Вот мой фрагмент Reactjs:

import React from "react";
import ReactDOM from "react-dom";

import "./styles.css";

class App extends React.Component {
  state = { menuDisplayed: false };
  toggleMenu = () => {
    console.info("toggleMenu reached");
    this.setState({
      menuDisplayed: !this.state.menuDisplayed
    });
    return;
  };

  render() {
    return (
      <div className = "App">
        <div
          className = {
            this.state.menuDisplayed ? "box_two_displayed" : "box_two_hidden"
          }
        >
          {" "}
          Box Two{" "}
        </div>
        <div
          className = {
            this.state.menuDisplayed ? "box_one_displayed" : "box_one_hidden"
          }
        >
          {" "}
          Box One{" "}
        </div>
        <div onClick = {this.toggleMenu} className = "toggler">
          {" "}
          ToggleMenu{" "}
        </div>
      </div>
    );
  }
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Вот мой фрагмент css:

.App {
  font-family: sans-serif;
  text-align: center;
}

.box_one_displayed {
  /* position: fixed;*/
  left: 200px;
  /* height: 100vh;*/
  background-color: grey;
  transition: all 0.5s linear;
}

.box_one_hidden {
  /* position: fixed;*/
  left: 0;
  /* height: 100vh;*/
  background-color: grey;
  transition: all 0.5s linear;
}

.box_two_displayed {
  position: fixed;
  z-index: 500;
  width: 200px;
  left: 0;
  background-color: cyan;
  transition: all 0.5s linear;
}

.box_two_hidden {
  position: fixed;
  z-index: 500;
  width: 200px;
  left: -200px;
  background-color: cyan;
  transition: all 0.5s linear;
}

.toggler {
  position: fixed;
  top: 50px;
  left: 350px;
  cursor: pointer;
  background-color: pink;
}

Любой намек был бы отличным, Благодарность

просто добавьте -> позиция: относительная; слева: 200 пикселей; (прибл.) в ваше .App, когда отображается ваша боковая панель

aflyzer 18.10.2018 13:20

отлично работает

HoCo_ 18.10.2018 13:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
38
1

Ответы 1

Для этого вам не нужно свойство position, вы должны просто использовать flex https://codepen.io/kotanbich/pen/aRYYJW.

HTML:

<div class = "page">
  <div class = "navigation">
    <button id = "toggle">
      ☰
    </button>
    <ul>
      <li>
        cattle
      </li>
      <li>
        poultry
      </li>
    </ul>
  </div>
  <div class = "content">
    <div>
    </div>
  </div>
</div>

CSS:

.page{
    height: 100%;
    display: flex;
}
.navigation{
    width: 230px;
    flex-shrink: 0;
    background: green;
}
.navigation.hidden{
  width: 25px;
  overflow-x:hidden;
}

JS:

const toggleButton =  document.getElementById('toggle');
toggleButton.addEventListener('click',(event)=>{
  const navigation = document.querySelector('.navigation');
  navigation.classList.toggle('hidden');
})

Основной контейнер содержит вашу боковую панель и сторону содержимого, основной контейнер должен быть настроен на гибкость. Внутренняя боковая панель основного контейнера должна иметь значение 0 для параметра flex-shrink, если вы хотите, чтобы ваша навигация имела указанную вами ширину, а не ширину ее содержимого.

Другие вопросы по теме