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

如何实现摩尔斯电码翻译器表单元素的响应式布局?

响应式摩尔斯电码翻译器布局方案

一、修复Textarea的响应式布局

用CSS Flexbox替代固定位置偏移,让两个textarea自动适配窗口宽度,小屏幕下自动换行:

修改后的HTML代码:

<form class="boxparent" method="post">
    <textarea class="textbox" id="input" rows="10" placeholder="Enter text here"></textarea>
    <textarea readonly class="textbox" id="output" rows="10"></textarea>
</form>
<button id="switch">Translate to English</button>

修改后的CSS代码:

.boxparent {
    display: flex;
    gap: 1rem; /* 控制两个textarea的间距 */
    flex-wrap: wrap; /* 窗口过窄时自动换行 */
    padding: 1rem;
}

.textbox {
    font-size: .8rem;
    letter-spacing: 1px;
    font-family: Palatino Linotype;
    padding: 10px;
    line-height: 1.5;
    border: 1px solid #444;
    border-radius: 5px;
    box-shadow: 1.25px 1.25px 1.25px #777;
    resize: none;
    outline: none;
    background-color: #222;
    color: white;
    flex: 1; /* 让两个textarea平分容器可用宽度 */
    min-width: 300px; /* 设置最小宽度,避免小屏幕下过窄 */
}

二、修复按钮的响应式布局

去掉绝对定位的固定偏移,将按钮与表单统一纳入容器布局,实现自适应对齐:

新增父容器的HTML:

<div class="container">
    <form class="boxparent" method="post">
        <textarea class="textbox" id="input" rows="10" placeholder="Enter text here"></textarea>
        <textarea readonly class="textbox" id="output" rows="10"></textarea>
    </form>
    <button id="switch">Translate to English</button>
</div>

对应的CSS:

.container {
    max-width: 1200px; /* 可选,限制页面最大宽度避免过宽 */
    margin: 0 auto; /* 让容器居中 */
    padding: 1rem;
}

#switch {
    border-radius: 20px;
    padding: 7px 15px;
    background-color: #444;
    color: #eee;
    border: 1px solid #888;
    margin-top: 1rem;
    /* 实现按钮靠右对齐 */
    display: block;
    margin-left: auto;
}

核心说明

  • Flexbox的flex:1属性让两个textarea自动分配容器内的可用宽度,窗口缩放时同步调整
  • flex-wrap: wrap确保屏幕宽度不足时,textarea自动垂直排列
  • 按钮通过margin-left: auto实现自适应靠右,不再依赖固定像素偏移

内容的提问来源于stack exchange,提问作者1440p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:03:15