Flexbox任务输入组件桌面正常,移动端布局崩溃求助
移动端Flexbox布局崩溃问题排查请求
我开发的Expanded Task Input组件采用flexbox布局,桌面端运行正常,但在移动端查看时布局会崩溃。已在不同手机、移动端浏览器及桌面设备、桌面浏览器中测试,问题一致;曾怀疑是Codepen限制,但部署到GitHub Pages后问题仍存在,推测是代码本身或浏览器兼容性问题,恳请帮忙排查解决。
界面状态预览
- 桌面端:折叠状态下输入框布局规整;展开后标题输入框、描述文本域、日期选择容器与右侧按钮组排列协调
- 移动端:折叠状态下输入框被挤压变形;展开后各类输入元素错乱、溢出容器
HTML代码
<div class="container"> <div> <div class="input-frame"> <div class="inputs"> <input class="title-input" type="text" name="title" placeholder="Title"> <textarea class="description-input" name="description" rows="3" placeholder="Description"></textarea> <div class="date-input-container"> Due date: <input id="date-input" name="date" type="date"> </div> </div> <div class="buttons"> <div class="add-button">+</div> <div class="caret-up"><i class="caret-up-icon fa-solid fa-angle-up"></i></div> </div> </div> </div> </div>
CSS代码
* { margin: 0; padding: 0; box-sizing: border-box; font-family: "Poppins", sans-serif; } .container { display: flex; justify-content: center; min-height: 100vh; align-items: center; } .container > div { height: 300px; width: 500px; padding: 25px; } .input-frame { display: flex; justify-content: space-between; width: 300px; min-height: 50px; margin: auto; background-color: #d9d9d9; border-radius: 7px; transition: 500ms; } .buttons { display: flex; flex-direction: column; justify-content: space-between; align-items: center; } .caret-up { display: none; width: fit-content; } .caret-up-icon { transition: 100ms; } .caret-up-icon:hover { transform: scale(1.5); } .add-button { background-color: #447e4d; min-width: 50px; height: 50px; font-size: 1.5em; color: #d9d9d9; right: 0; text-align: center; vertical-align: middle; line-height: 50px; border-radius: 0 7px 7px 0; transition: 200ms; } .add-button:hover { cursor: pointer; } .inputs { display: flex; flex-direction: column; } .title-input { height: 50px; border: none; background-color: transparent; border: 7px 0 0 7px; padding: 0 12.5px; font-size: 1em; } .title-input:focus { /* outline: 3px solid #447E4D; */ outline: none; } .description-input { display: none; border: none; border-radius: 5px; padding: 12.5px; resize: vertical; } .date-input-container { display: none; align-items: center; font-size: 0.75em; transition: 200ms; } #date-input { flex: 1; margin-left: 5px; border: none; border-radius: 5px; padding: 2px 5px 0 5px; } @keyframes descriptionEntry { from { opacity: 0; height: 0; } to { opacity: 1; height: 80px; } }
JavaScript代码
const titleInput = document.querySelector(".title-input"); const inputFrame = document.querySelector(".input-frame"); const addButton = document.querySelector(".add-button"); const inputs = document.querySelector(".inputs"); const descriptionInput = document.querySelector(".description-input"); const dateInputContainer = document.querySelector(".date-input-container"); const dateInput = document.querySelector("#date-input"); const caretUp = document.querySelector(".caret-up"); titleInput.addEventListener("focus", () => { inputFrame.style.cssText = ` padding: 5px; column-gap: 10px`; inputs.style.cssText = ` flex: 1; row-gap: 5px`; descriptionInput.style.cssText = ` display: block; animation: 500ms descriptionEntry forwards;`; addButton.style.borderRadius = "5px"; titleInput.style.cssText = ` padding: 15px 5px 0 5px; border-radius: 0; border-bottom: 2px solid black`; dateInputContainer.style.cssText = ` display: flex;`; caretUp.style.display = "block"; }); caretUp.addEventListener("click", () => { inputFrame.style.cssText = ` padding: 0px; column-gap: 0px`; descriptionInput.style.cssText = ` display: none;`; addButton.style.borderRadius = "0 5px 5px 0"; titleInput.style.cssText = ` border: none; padding: 0 12.5px; border: 7px 0 0 7px;`; dateInputContainer.style.cssText = ` display: none;`; caretUp.style.display = "none"; });
内容的提问来源于stack exchange,提问作者rinzu
相关产品推荐
相关产品推荐

