You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:35:55