#javascript #html
#javascript #HTML
Вопрос:
Итак, я создаю страницу в HTML, и я использую Javascript для перехода:
HTML:
<div id="sidebar" onmouseover="expand()" onmouseout="collapse()">
Javascript:
function expand() {
document.getElementById("main-container").style.marginLeft= "160px";
document.getElementById("main-container").style.transition = "all 0.2s";
}
function collapse() {
document.getElementById("main-container").style.marginLeft= "60px";
document.getElementById("main-container").style.transition = "all 0.2s";
}
При их запуске они не являются плавными, они кажутся немного запаздывающими. Как я могу сделать их более плавными?
Комментарии:
1. Поля анимируются попиксельно: значения субпикселей невозможны. Использование
translateX()
может быть лучшей идеей, преимущество которой заключается в возможности выгрузки рендеринга элемента на графический процессор.
Ответ №1:
попробуйте добавить анимацию к элементам с помощью классов.
<div id="sidebar" onmouseover="expand()" onmouseout="collapse()">
#sidebar {
width: 350px;
height: 100vh;
background: red;
transition: transform 0.2s linear;
}
#sidebar.expanded {
transform: translateX(160px);
}
function expand() {
document.getElementById("sidebar").classList.add("expanded");
}
function collapse() {
document.getElementById("sidebar").classList.remove("expanded");
}
Однако, если вы пытаетесь создать боковую панель, этот подход может быть неправильным. Если вы хотите, чтобы это происходило при наведении курсора мыши, вы можете попробовать это так
Комментарии:
1. Извините, я забыл добавить
HTML
код, пожалуйста, посмотрите обновленный вопрос.2. Отредактировал ответ в соответствии с вашим обновленным HTML и добавил ссылку на скрипку.