css - 如何在 Grails 中将字段标签放置在字段顶部而不是左侧

标签 css grails grails-2.4

我正在使用 Grails 2.4.2。我想使用 Grails 默认 CSS 并进行一些修改。现在我需要将字段标签放置在字段顶部而不是左侧。

这是我的表单元素,我想在其中连续显示 4 个字段:

    <div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'fullName', 'error')} required">
    <label for="fullName">
        <g:message code="users.fullName.label" default="Full Name"/>
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="fullName" required="" value="${usersInstance?.fullName}"/>

    <label for="email">
        <g:message code="users.email.label" default="Email"/>
        <span class="required-indicator">*</span>
    </label>
    <g:field type="email" name="email" required="" value="${usersInstance?.email}"/>

</div>

上述代码的输出如下:

enter image description here

现在我想连续添加 4 个字段,并且所有字段的标签都将位于顶部。

每行一个字段:

enter image description here

表单元素:

    <div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'username', 'error')} required">
    <label for="username">
        <g:message code="users.username.label" default="Username"/>
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="username" required="" value="${usersInstance?.username}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'password', 'error')} required">
    <label for="password">
        <g:message code="users.password.label" default="Password"/>
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="password" required="" value="${usersInstance?.password}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'fullName', 'error')} required">
    <label for="fullName">
        <g:message code="users.fullName.label" default="Full Name"/>
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="fullName" required="" value="${usersInstance?.fullName}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'email', 'error')} required">
    <label for="email">
        <g:message code="users.email.label" default="Email"/>
        <span class="required-indicator">*</span>
    </label>
    <g:field type="email" name="email" required="" value="${usersInstance?.email}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'phone', 'error')} required">
    <label for="phone">
        <g:message code="users.phone.label" default="Phone"/>
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="phone" required="" value="${usersInstance?.phone}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'fax', 'error')} required">
    <label for="fax">
        <g:message code="users.fax.label" default="Fax"/>
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="fax" required="" value="${usersInstance?.fax}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: usersInstance, field: 'address', 'error')} required">
    <label for="address">
        <g:message code="users.address.label" default="Address"/>
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="address" required="" value="${usersInstance?.address}"/>

</div>

最佳答案

给你。只需定义以下 CSS:

* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
.fieldcontain label, .fieldcontain .property-label {
    display: block;
    text-align: left;
    width: 100%
}

.fieldcontain input {
    width: 100%;
}

.fieldcontain {
    width: 25%;
    display: inline-block;
    float: left
}

.row:before, .row:after {
     display: table;
    content: " ";
}

您的 HTML 应该如下所示:

<fieldset class="form">
    <div class="row">
        <div class="fieldcontain  required">
            <label for="firstName">
                First Name
                <span class="required-indicator">*</span>
            </label>
            <input type="text" name="firstName" required="" value="" id="firstName">
        </div>

        <div class="fieldcontain  required">
            <label for="lastName">
                Last Name
                <span class="required-indicator">*</span>
            </label>
            <input type="text" name="lastName" required="" value="" id="lastName">
        </div>

        <div class="fieldcontain  required">
            <label for="email">
                Email
                <span class="required-indicator">*</span>
            </label>
            <input type="text" name="email" required="" value="" id="email">
        </div>

        <div class="fieldcontain  required">
            <label for="number">
                Number
                <span class="required-indicator">*</span>
            </label>
            <input type="text" name="number" required="" value="" id="number">
        </div>
    </div>
</fieldset>

换行,您的 4 个元素集,即 .fieldcontain 位于 div 中,类为 .row,就像我在示例中所示的那样。

虽然,Grails 提供了基本的 CSS 样式,因此可以快速启动新元素,但我建议您使用 Twitter Bootstrap .

关于css - 如何在 Grails 中将字段标签放置在字段顶部而不是左侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852990/

相关文章:

java - Tapestry 5 中 radio 的 CSS 样式

grails - 在 Cloud Foundry 上部署需要 HTTPS 的 Grails Web 应用程序

Grails 2.4.3 无法重新加载 Controller 或服务

grails - 通过GORM手动更新自动生成的ID

grails - 是否可以强制刷新保存在服务中的域?

html - <ul> 在 div 容器内水平居中

html - 使用 CSS 延长按钮的长度

javascript - 如何使 iframe 的高度始终延伸到浏览器窗口的底部?

Grails VM 因错误退出

java - Ruby on Rails vs Grails vs Spring ROO vs Spring App