Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.04.2021, 08:17
Кандидат Javascript-наук
Отправить личное сообщение для fori Посмотреть профиль Найти все сообщения от fori
 
Регистрация: 27.01.2021
Сообщений: 117

Почему el.style.offsetHeight считается не правильно если scale !=1
Здравствуйте, етот обрезаный language-dropdown-selector разкрывается если он нажат. Однако стоит мне поставить scale(!=1) как появляются el.style.offsetWidth считается не правильно (без учета scale). При изменение масштаба в браузере все норм а при scale нет... Что я делаю не так((?
<!DOCTYPE html>

<head>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.js"></script>
</head>

<body>
  <div id="vue">
    <div class="select">
      <div class="main" @mousedown="isDropped = !isDropped">
        <div class="option-main"></div>
      </div>

      <div class="dropdown" v-dropped>
        <div class="container">
          <div class="option">
            <span>English</span>
          </div>
          <div class="option">
            <span>Русский</span>
          </div>
        </div>
      </div>
    </div>
  </div>
</body>
<style>
  body {
    background: green;
  }

  .select {
    width: max-content;
    height: max-content;

    transform-origin: top left;
    transform: scale(16);

    background: white;
    position: relative;
    font-size: 1.6vmin;
  }

  .main {
    width: 100%;
    box-sizing: border-box;
    height: 2vmin;
    display: flex;
    align-items: center;
  }

  .option-main {
    display: flex;
    height: 2vmin;
    width: 100%;
    background: white;
  }

  .option {
    display: flex;
    height: 2vmin;
    width: 100%;
    background: red;
  }

  .dropdown {
    height: 0;
    overflow: hidden;
    transition: height 1s ease;
    background: white;
  }

  .container {
    overflow: hidden;
  }

  .option-selected {
    background: red;
  }
</style>
<script>
  let myVue = new Vue({
    el: "#vue",
    data: {
      isDropped: false,
    },
    directives: {
      dropped(el, binding, vnode) {
        if (vnode.context.isDropped) {
          el.style.height =
            el.firstChild.scrollHeight + "px";
        } else {
          el.style.height = 0;
        }
      },
    },
  });
</script>

</html>

И анимация както-странно себя ведет...

Последний раз редактировалось fori, 29.04.2021 в 08:54.
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2021, 17:47
Кандидат Javascript-наук
Отправить личное сообщение для fori Посмотреть профиль Найти все сообщения от fori
 
Регистрация: 27.01.2021
Сообщений: 117

Удалось решить проблемму путем добавления overflow:hidden; в .select
анимацыя правда дерганая и я ненашел как сделать ее плавной при использованиии scale
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заполнить textarea только если он пустой? Oleg0 jQuery 5 10.02.2017 09:45
Переменная считается не правильно MorfixProton Элементы интерфейса 3 01.02.2017 19:15
AddEventListener не правильно работает с классами Flakky Events/DOM/Window 2 27.05.2016 13:51
Почему не правильно считает номера слайдов в карусели owl carousel 2? ligisayan jQuery 13 22.04.2016 10:22
Как поставить картинку (галочку) возле поля ввода если правильно. Phoenix13 Events/DOM/Window 3 26.11.2014 17:14