【问题标题】:CSS: Extending input box in a form generated with Rails' `form_for`?CSS:在使用 Rails 的“form_for”生成的表单中扩展输入框?
【发布时间】:2013-12-29 03:56:08
【问题描述】:

所以我对前端很陌生,所以我有一个简单的 CSS 问题:

我有一个使用 form_for 方法使用 Devise 生成的表单,如下所示:

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => "form-signin"} ) do |f| %>

  <div class="account-wall">    
      <%= f.email_field :email, class: 'form-control', autofocus: true, placeholder: 'Email' %><br />

      <%= f.password_field :password, class: 'form-control', autofocus: true, placeholder: 'Password' %>

      <% if devise_mapping.rememberable? -%>
        <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
      <% end %>

      <%= f.submit "Sign in" %>

  </div>

<% end %>

<%= render "devise/shared/links" %>

我的样式表:

.form-signin
{
    max-width: 330px;
    padding: 15px;
    margin: 0 auto;
    padding-top: 5px;
}

.account-wall
{
    margin-top: 20px;
    padding: 40px 0px 20px 0px;
    background-color: #f7f7f7;
    -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
    -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
}
.form-signin .form-control
{
    position: relative;
    font-size: 12px;
    height: auto;
    padding: 6px;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

这是上面的代码产生的:

在account-wall 中将输入框/记住我/按钮居中并使它们更宽一点的最简单方法是什么?

生成的 HTML:

 <div class="container">
      <form accept-charset="UTF-8" action="/guest/actives/sign_in" class="form-signin" id="new_active" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="kCoKZR1wtX5dTGuvw8p+P0ZsTi3vBEv08IQXh+IOWhM=" /></div>

  <div class="account-wall">    
      <img class="profile-img" src="../../assets/akpsi_bw_200.png" alt="akpsi_color_200">
      <input autofocus="autofocus" class="form-control" id="active_email" name="active[email]" placeholder="Email" type="email" value="" /><br />

      <input autofocus="autofocus" class="form-control" id="active_password" name="active[password]" placeholder="Password" type="password" />

        <div><input name="active[remember_me]" type="hidden" value="0" /><input id="active_remember_me" name="active[remember_me]" type="checkbox" value="1" /> <label for="active_remember_me">Remember me</label></div>

      <input name="commit" type="submit" value="Sign in" />

  </div>

</form>

【问题讨论】:

  • 你能发布你当前生成的html吗?
  • 我认为设置margin-left: auto; margin-right: auto; 在应用于帐户墙内的元素时会起作用,但您需要手动设置元素的宽度。但是,既然你想让它们更宽,那应该不是问题,只需在 CSS 中为它们设置一个 width 值。
  • 你只需要添加 text-align:center;到您的 .form-signin 类,元素将居中。 .account-wall input[type=email], .account-wall input[type=password]{margin:5px 5px;width:280px;} .account-wall div{display:inline-block;} 这些将帮助您放大输入并使复选框和按钮在一行内。请看下面的演示

标签: html css ruby-on-rails devise


【解决方案1】:

See demo here

.form-signin
{
    max-width: 330px;
    padding: 15px;
    margin: 0 auto;
    padding-top: 5px;
    text-align:center; /*add this;*/
}

.account-wall
{
    margin-top: 20px;
    padding: 40px 0px 20px 0px;
    background-color: #f7f7f7;
    -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
    -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
}
/*add below*/
.account-wall input[type=email], .account-wall input[type=password]{margin:5px 5px;width:280px;}
.account-wall div{display:inline-block;}
.account-wall button{display:inline-block;}

Updated demo here

/*add below*/
.account-wall input[type=email], .account-wall input[type=password]{margin:5px 5px;width:280px;}
.account-wall div{display:inline-block; width:165px;}
.account-wall input[type=submit]{width:110px;}

【讨论】:

  • 谢谢。还有一件事——现在,所有内容都居中,包括输入字段、复选框、文本“记住我”和按钮。如何just将复选框和“记住我”对齐到输入字段框的左边缘?
  • 谢谢,接受了答案!最后一件事,如果可以的话:假设我的用户模型的一个属性是一个简短的段落“传记”,我生成这样一个字段的代码是这样的:&lt;%= f.text_area :biography, class: 'form-control bio-field', autofocus: true, placeholder: 'Biography' %&gt;。我的样式是这样的:.bio-field { width: 80%; height: 50%; }为什么我应用这个样式后,输入框的宽度会适当地伸展,但高度却永远不会超过大约 2.5~ 行?
  • 2 建议:1。在 textarea 中使用 rows="10" cols="10" 以防某些浏览器不支持高度,在这种情况下,您可以在 css 中使用 height:auto; 2.你的高度百分比值不起作用,因为你没有要继承的父值,如果你给它一个固定值,比如 80px,它将完美地工作,否则你必须定义你父母的高度包装器不是最好的解决方案
猜你喜欢
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 2010-11-12
  • 2016-08-12
  • 1970-01-01
相关资源
最近更新 更多