【问题标题】:How do you style form file fields with zurb foundation?您如何使用 zurb 基础设置表单文件字段的样式?
【发布时间】:2013-02-25 04:51:54
【问题描述】:

我正在尝试使用 Rails 为 Zurb Foundation 创建一个按钮来上传图片。我试过这个:

<input class="tiny round disabled button" name="picture[picture]" type="file">

不幸的是,它没有用,并创建了两个不同的按钮让您选择图片。我需要专门针对文件字段做些什么吗?

【问题讨论】:

    标签: html css zurb-foundation


    【解决方案1】:

    我发现此资源对设置 input type="file" 的样式非常有帮助:

    http://www.quirksmode.org/dom/inputfile.html

    这是出了名的困难,但这基本上涉及将实际输入与应用了您的样式的假输入分层。

    <div class="file-inputs">
        <input type="file" class="hidden-input">
        <div class="fake-input">
            <input>
            <img src="images/YOURBUTTON.png">
        </div>
    </div>
    

    使用以下 CSS:

    div.file-inputs {
    position: relative;
    }
    
    div.hidden-input {
    position: absolute;
    top: 0px;
    left: 0px;
    z-index: 1;
    }
    
    input.file {
    position: relative;
        text-align: right;
    -moz-opacity:0 ;
    filter:alpha(opacity: 0);
    opacity: 0;
    z-index: 2;
    }
    

    【讨论】:

    【解决方案2】:

    使用html css和js自定义文件上传按钮

    HTML代码:

        <div class="custom-file-upload">
        <!--<label for="file">File: </label>--> 
        <input type="file" id="file" name="myfiles[]" multiple />
        </div>
    

    CSS:

    .custom-file-upload-hidden {
      display: none;
      visibility: hidden;
      position: absolute;
      left: -9999px;
    }
    
    .custom-file-upload {
      display: block;
      width: auto;
      font-size: 16px;
      margin-top: 30px;
    }
      .custom-file-upload label {
      display: block;
      margin-bottom: 5px;
    }
    
    .file-upload-wrapper {
      position: relative;
      margin-bottom: 5px;
    }
    
    .file-upload-input {
      width: 300px;
      color: #fff;
      font-size: 16px;
      padding: 11px 17px;
      border: none;
      background-color: #c0392b;
      -moz-transition: all 0.2s ease-in;
      -o-transition: all 0.2s ease-in;
      -webkit-transition: all 0.2s ease-in;
      transition: all 0.2s ease-in;
      float: left;
      /* IE 9 Fix */
    }
    
    .file-upload-input:hover, .file-upload-input:focus {
       background-color: #ab3326;
       outline: none;
     }
    
    .file-upload-button {
      cursor: pointer;
      display: inline-block;
      color: #fff;
      font-size: 16px;
      text-transform: uppercase;
      padding: 11px 20px;
      border: none;
      margin-left: -1px;
      background-color: #962d22;
      float: left;
      /* IE 9 Fix */
      -moz-transition: all 0.2s ease-in;
      -o-transition: all 0.2s ease-in;
      -webkit-transition: all 0.2s ease-in;
       transition: all 0.2s ease-in;
     }
    
    .file-upload-button:hover {
      background-color: #6d2018;
    }
    

    JS 代码: http://codepen.io/wallaceerick/pen/fEdrz查看完整详情

    【讨论】:

      【解决方案3】:

      诀窍是做一些看起来像这样的事情:

      HTML

      <button class="file-upload">Upload
        <input type="file" name="files" />
      </button>
      

      CSS

      button.file-upload > input[type='file'] {
          cursor: pointer;
          position: absolute;
          font-size: 0;
          top: 0;
          left: 0;
          opacity: 0;
          height: 100%;
          width: 100%;
      }
      

      使用基础 v5.5.2:http://codepen.io/soyuka/pen/xGMPKJ

      【讨论】:

      • 这个解决方案有一个大问题 - 你不知道你是否已经上传了一些东西......这会立即杀死用户体验。
      • 我当然不同意你的观点,只是回答了这个问题。此外,技巧保持不变,您只需调整按钮大小,以便您仍然可以看到文本。或者,您可以使用 javascript 处理文件 :)。
      • 我确实做到了——检查文件更改并将上传的文件名放在按钮旁边的只读输入中,但我希望 Zurb 基金会能提供开箱即用的解决方案..
      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 2013-11-23
      相关资源
      最近更新 更多