【问题标题】:Right alignment in Form elements wrong表单元素中的右对齐错误
【发布时间】:2014-12-25 01:22:15
【问题描述】:

我有一个问题,我认为这可能很愚蠢,但我想不通。 我有一个表格,我想对齐两边的元素,问题是我不能把它对齐到右边(红线所在的地方),这是一张图片来展示它:

这是我的 SASS(抱歉,如果不是很整洁,我已经在其中工作了一段时间,可能会很乱):

.contact {
margin: 100px auto 0;
max-width: $half-width;
form {
    letter-spacing: 2px;
    color: $color4;
    input, textarea {
        border: 3px solid $color5;
        padding: 10px;
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        font-size: 16px;
        background: $color6;
        &:focus {
            outline: none !important;
            border-color: $color3 !important;
        }
        textarea {
            height: 10em;
            width: 100%;
            overflow: inherit;
        }
    }
    .info-group {
        margin-top: 10px;
        label {
            display: inline-block;
            width: 45%;
            float: left;
            &:nth-child(2) {
                float: right !important;
                margin: 0 auto;
            }
        }
    }
    .tell-group {
        width: 100%;
        label {
            display: inline-block;
            margin-top: 10px;
        }
        textarea {
            height: 10em;
            width: 100%;
            float: left;
        }
    }
    .submit-wrap {
        margin-top: 10px;
        float: right;
        input {
            width: 100px;
            font-size: 18px;
            text-transform: uppercase;
            color: $color6;
            background-color: $color5;
            border: none;
            &:hover {
                color: $color1;
            }
        }
    }
}
}

谢谢!

【问题讨论】:

  • 转到您的控制台/开发人员工具,并定位所需的元素。它会显示任何影响元素的padding/margin。相应地删除它。您可能正在使用一些具有预定义样式的框架。
  • 只是一种快速测试的方法,在样式表的开头使用*{padding:0 !important; margin:0 !important;} 看看有什么变化。
  • 如果你有纯 CSS 问题,我们不需要 Sass。您需要提供重现问题所需的最少 量代码(没有标记,CSS 太多)。

标签: html css forms sass


【解决方案1】:

padding: 10px; 将在宽度上增加 20px,这个额外的宽度很可能是导致问题的原因。您可以将 width 属性更改为 width: calc(100% - 20px); 以考虑元素每一侧的 10px 填充。

以下是支持 calc 的列表:http://caniuse.com/#feat=calc

您也可以尝试将这些 css 规则添加到问题元素中以将它们移动:

position: relative;
left: -20px;

您可能还需要将position: relative; 添加到父元素

这是一个显示left -20px 方法的小提琴:http://jsfiddle.net/0f153w8e/

旁注:您可能需要稍微调整left 的数量,以使其准确地确定您的文本区域是否有边框(它们可能有)

【讨论】:

  • Calc 的支持比 box-sizing 差。相对定位的元素上的 top/right/bottom/left 为 0 不会做任何事情,除非它覆盖了先前声明的值。
  • 编辑到 left: -20px,不知道为什么我认为 0px 会做任何事情,谢谢指出
  • 谢谢乔,您的解决方案适用于前 2 个框,虽然对齐发送按钮的唯一方法是添加一个“margin-right:-6px”,它是否与边框相关?
  • 看起来您图片中的发送按钮已经对齐,但这可能是由于填充或边框,不确定。您也可以在此处应用left 属性而不是margin-right,但这并不重要。我只是想让您知道,这是一种针对困难情况的快速解决方案,您应该始终尝试在不使用 leftmargin 的情况下正确对齐,然后再使用该方法。尝试在浏览器中按 f12 打开 DOM 编辑器,您可以在其中快速添加和删除属性以查看它们的效果,这非常有用
猜你喜欢
  • 2016-03-16
  • 2021-12-02
  • 2020-12-07
  • 1970-01-01
  • 2017-06-22
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多