将textarea样式化为看起来像单独的输入框

时间:2013-11-08 16:55:30

标签: javascript html css formatting textarea

我设计了一个文本区域,使其看起来像三个单独的文本输入框。出于样式目的,需要在每行文本之间分隔一条黑线。

但是,我无法弄清楚如何对齐文本,使他们感觉到各个部分的中心。任何人都可以伸出援手吗?

jsfiddle example

HTML

<div id="formPage">
   <div id="formBox">
      <div class="formSection" style="border:1px solid black;">
          <div class="formLine" style="height:49px;position:relative;">
          <div class="indent">This is a needed label that I put over the textarea that describes what people are filling out.</div>
          <div class="whiteIndent"></div>
          <div class="borderIndent"></div>
          <div class="whiteIndent2"></div>
          <div class="borderIndent2"></div>
          <textarea name="text1" class="indent" rows="3" maxlength="360"></textarea>
      </div>
   </div>
</div>

CSS

* { }
*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }

#formPage {
  font-family: 'Arial Narrow', Arial, sans-serif;font-size:13px;
  background:#fff;
  border: 1px solid #d8d8d8;
  border-bottom-width: 2px;
  border-top-width: 0;
  width:910px;
  margin:0 auto;
  padding:30px;
  height:100px;
 }

.formLine > textarea.indent { 
   position:absolute;
   font-family: 'Arial Narrow', Arial, sans-serif;
   font-size:13px;
   background-color:#E2F4FE;
   width:818px;
   z-index:0;
   top:0px;
   padding: 0;
   outline: 0;
   border:0;
   resize:none;
   overflow:hidden;
   box-sizing: border-box;
  }
  .formLine > div.indent { position:absolute;z-index:2;top:0;background-color:#fff;padding:2px 2px 2px 1px; }
  .formLine > div.whiteIndent { position:absolute;z-index:2;top:16px;width:820px;height:3px;background-color:#fff; }
  .formLine > div.borderIndent { position:absolute;z-index:2;top:17px;left:0;border-top:1px solid #000;width:823px;height:1px; }
  .formLine > div.whiteIndent2 { position:absolute;z-index:2;top:32px;width:820px;height:3px;background-color:#fff; }
  .formLine > div.borderIndent2 { position:absolute;z-index:2;top:33px;left:0;border-top:1px solid #000;width:823px;height:1px; }

  .formSection { float:left;width:825px;border-right:2px solid #000;border-bottom:1px solid #000;font-size:13px;}

1 个答案:

答案 0 :(得分:0)

不确定您正在寻找什么完全。你还想要白色的吗?如果你再详细说明,我可以相应地修改我的答案。这是一个可能的解决方案:

http://jsfiddle.net/rY9um/1/

.formLine > textarea.indent { 
  margin: 0;
  line-height: 17px;
}

.formLine > div.indent { 
  /* remove padding:2px 2px 2px 1px; from css - you can use line-height to achieve the same effect and consistency */
  line-height: 17px; 
  }

line-height设置为您希望每行文字占据的高度。这允许你设置一个小的字体大小(13px),同时使文本行仍然占用高度17px。

(稍微不相关的说明,清理你的CSS并使用更好的命名约定会帮助你更好地理解它。例如,没有必要通过.formLine > textarea.indent调用textarea。你可以简单地给它一个班级.textarea-indent并通过它来调用它。请参阅Writing Efficient CSS Selectors