BillKnow.com

Who Know ? Bill Know!

02 八月
0Comments

textarea技巧

关于textarea的9个知识点:

1. Image as textarea background, disappears when text is entered

设置背景图片:

textarea {
background: url(images/benice.png) center center no-repeat; /* This ruins default border */
border: 1px solid #888;
}

需要注意的是设置background后会影响textarea的本身的style,因此要重新设置border。

焦点离开textara的时候显示背景图片,获取焦点的时候图片消失:


            $('textarea')
  .focus(function() { $(this).css("background", "none") })
  .blur(function() { if ($(this)[0].value == '') { $(this).css("background", "url(images/benice.png) center center no-repeat") } });

2. HTML5 placeholder text

对于支持placeholder的浏览器可以直接使用此属性:

<textarea placeholder="Remember, be nice!" cols="30" rows="5"></textarea>

3. Placeholder text, HTML5 with jQuery fallback

不支持placeholder的浏览器可以通过Jquery来实现:

判断一个元素是否支持某属性:

function elementSupportsAttribute(element, attribute) {
  var test = document.createElement(element);
  if (attribute in test) {
    return true;
  } else {
    return false;
  }
};

如果支持Placeholder则直接设置,否则通过Jquery来实现:

if (!elementSupportsAttribute('textarea', 'placeholder')) {
  // Fallback for browsers that don't support HTML5 placeholder attribute
  $("#example-three")
    .data("originalText", $("#example-three").text())
    .css("color", "#999")
    .focus(function() {
        var $el = $(this);
        if (this.value == $el.data("originalText")) {
          this.value = "";
        }
    })
    .blur(function() {
      if (this.value == "") {
          this.value = $(this).data("originalText");
      }
    });
} else {
  // Browser does support HTML5 placeholder attribute, so use it.
  $("#example-three")
    .attr("placeholder", $("#example-three").text())
    .text("");
}

4. Remove the blue glow

移除textarea获取焦点后显示的蓝色边框:

            textarea {
  outline: none;
}
          
需要注意的是此蓝色边框基本上作为了一种标准,去掉请慎重考虑。关于去边框,可以参见sofish写的文章:去除按钮、链接中的虚线框

5. Remove resize handle

 
去掉重新设置大小的功能:
textarea {
  resize: none;
}


6. Add resize handle
增加边框大小调整功能:

需要用到Jquery ui的插件: resizeable interaction ,调用方法是:
$("textarea").resizable();

7. Auto-resize to fit content


根据内容自适应大小:

同样需要用到jquery插件:auto resizing textareas,使用方法如下:
$('textarea').autoResize();

8. Nowrap



通常可以使用如下方法来使文字不换行 #whatever { white-space: nowrap; },但此方法对textarea无效,textarea需要用如下方法
<textarea wrap="off" cols="30" rows="5"></textarea>

9. Remove default scrollbars in Internet Explorer


去掉默认的滚动条:
textarea {
  overflow: auto;
} 
所有的demo参见这里,文章来自Textarea Tricks