使用输入

时间:2019-03-14 10:25:38

标签: css twitter-bootstrap sass

如何水平插入以下图片的输入<%= image_tag form.object.images_url(:thumb).to_s %>control-fileupload

    input[type=file] {
      display: block !important;
      right: 1px;
      top: 1px;
      height: 34px;
      opacity: 0;
      width: 100%;
      background: none;
      position: absolute;
      overflow: hidden;
      z-index: 2;
    }

    .control-fileupload {
      display: block;
      border: 1px solid #d6d7d6;
      background: #FFF;
      border-radius: 4px;
      width: 100%;
      height: 36px;
      line-height: 36px;
      padding: 0px 10px 2px 10px;
      overflow: hidden;
      position: relative;

      &:before, input, label {
        cursor: pointer !important;
      }

      /* File upload button */
       &:before {
        /* inherit from boostrap btn styles */
        padding: 4px 12px;
        margin-bottom: 0;
        font-size: 14px;
        line-height: 20px;
        color: #333333;
        text-align: center;
        text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
        vertical-align: middle;
        cursor: pointer;
        background-color: #f5f5f5;
        background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
        background-repeat: repeat-x;
        border: 1px solid #cccccc;
        border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
        border-bottom-color: #b3b3b3;
        border-radius: 4px;
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
        transition: color 0.2s ease;

        /* add more custom styles*/
        content: 'Browse';
        display: block;
        position: absolute;
        z-index: 1;
        top: 2px;
        right: 2px;
        line-height: 20px;
        text-align: center;
      }
      &:hover, &:focus {
        &:before {
          color: #333333;
          background-color: #e6e6e6;
          color: #333333;
          text-decoration: none;
          background-position: 0 -15px;
          transition: background-position 0.2s ease-out;
        }
      }

      label {
        line-height: 24px;
        color: #999999;
        font-size: 14px;
        font-weight: normal;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        position: relative;
        z-index: 1;
        margin-right: 90px;
        margin-bottom: 0px;
        cursor: text;
      }
    }
<div class="nested-fields">
  <img src="pic_trulli.jpg" alt="Italian Trulli">
  <span class="control-fileupload">
    <input type="text" name="fname">
  </span>
  <div class="field_with_errors">
    <label class="message">if error exists</label>
      <a href="url">Remove</a>
  </div>
</div>

实现@ mulla.azzi的建议,我明白了:

enter image description here

2 个答案:

答案 0 :(得分:1)

将'control-fileupload'类的'block'更新为'inline-block'并删除width属性将为您工作。

    input[type=file] {
      display: block !important;
      right: 1px;
      top: 1px;
      height: 34px;
      opacity: 0;
      width: 100%;
      background: none;
      position: absolute;
      overflow: hidden;
      z-index: 2;
    }

    .control-fileupload {
      display: inline-block;
      border: 1px solid #d6d7d6;
      background: #FFF;
      border-radius: 4px;
      height: 36px;
      line-height: 36px;
      padding: 0px 10px 2px 10px;
      overflow: hidden;
      position: relative;

      &:before, input, label {
        cursor: pointer !important;
      }

      /* File upload button */
       &:before {
        /* inherit from boostrap btn styles */
        padding: 4px 12px;
        margin-bottom: 0;
        font-size: 14px;
        line-height: 20px;
        color: #333333;
        text-align: center;
        text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
        vertical-align: middle;
        cursor: pointer;
        background-color: #f5f5f5;
        background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
        background-repeat: repeat-x;
        border: 1px solid #cccccc;
        border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
        border-bottom-color: #b3b3b3;
        border-radius: 4px;
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
        transition: color 0.2s ease;

        /* add more custom styles*/
        content: 'Browse';
        display: block;
        position: absolute;
        z-index: 1;
        top: 2px;
        right: 2px;
        line-height: 20px;
        text-align: center;
      }
      &:hover, &:focus {
        &:before {
          color: #333333;
          background-color: #e6e6e6;
          color: #333333;
          text-decoration: none;
          background-position: 0 -15px;
          transition: background-position 0.2s ease-out;
        }
      }

      label {
        line-height: 24px;
        color: #999999;
        font-size: 14px;
        font-weight: normal;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        position: relative;
        z-index: 1;
        margin-right: 90px;
        margin-bottom: 0px;
        cursor: text;
      }
    }
<div class="nested-fields">
  <img src="pic_trulli.jpg" alt="Italian Trulli">
  <span class="control-fileupload">
    <input type="text" name="fname">
  </span>
  <div class="field_with_errors">
    <label class="message">if error exists</label>
      <a href="url">Remove</a>
  </div>
</div>

答案 1 :(得分:0)

这应该可以工作(为img标签添加了样式,并修改了.control-fileupload类)-

Working fiddle

img {
  display: inline-block;
  vertical-align: middle;
  width: 20%;
}

input[type=file] {
  display: block !important;
  right: 1px;
  top: 1px;
  height: 34px;
  opacity: 0;
  width: 100%;
  background: none;
  position: absolute;
  overflow: hidden;
  z-index: 2;
}

.control-fileupload {
  display: inline-block;
  border: 1px solid #d6d7d6;
  background: #FFF;
  border-radius: 4px;
  width: 70%;
  height: 36px;
  line-height: 36px;
  padding: 0px 10px 2px 10px;
  overflow: hidden;
  position: relative;
  &:before,
  input,
  label {
    cursor: pointer !important;
  }
  /* File upload button */
  &:before {
    /* inherit from boostrap btn styles */
    padding: 4px 12px;
    margin-bottom: 0;
    font-size: 14px;
    line-height: 20px;
    color: #333333;
    text-align: center;
    text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
    vertical-align: middle;
    cursor: pointer;
    background-color: #f5f5f5;
    background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
    background-repeat: repeat-x;
    border: 1px solid #cccccc;
    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
    border-bottom-color: #b3b3b3;
    border-radius: 4px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 
    0.05);
    transition: color 0.2s ease;
    /* add more custom styles*/
    content: 'Browse';
    display: block;
    position: absolute;
    z-index: 1;
    top: 2px;
    right: 2px;
    line-height: 20px;
    text-align: center;
  }
  &:hover,
  &:focus {
    &:before {
      color: #333333;
      background-color: #e6e6e6;
      color: #333333;
      text-decoration: none;
      background-position: 0 -15px;
      transition: background-position 0.2s ease-out;
    }
  }
  label {
    line-height: 24px;
    color: #999999;
    font-size: 14px;
    font-weight: normal;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    position: relative;
    z-index: 1;
    margin-right: 90px;
    margin-bottom: 0px;
    cursor: text;
  }
}