# 容易被忽略的label标签

## 原始作用

`label`标签是HTML原生的标签,其原始的作用参考[这里](http://www.w3school.com.cn/tags/tag_label.asp)

        label 标签为 input 元素定义标注(标记)。
label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。
label 标签的 for 属性应当与相关元素的 id 属性相同 ## 用户体验 label在提高用户体验的作用是非常大的,参考下面一段代码 ```
<input type="radio" name="demo" value="1"/>选项1
<input type="radio" name="demo" value="2"/>选项2
<input type="radio" name="demo" value="3"/>选项3
<input type="radio" name="demo" value="4"/>选项4
<input type="radio" name="demo" value="5"/>选项5
``` 渲染在浏览器的效果是,一排并列的单选,但是你一定要选到单选的圆圈上,才能把选项点上 假如我们把代码改成
```
<input type="radio" id="demo1" name="demo" value="1"/><label for="demo1">选项1</label>
<input type="radio" id="demo2" name="demo" value="2"/><label for="demo2">选项2</label>
<input type="radio" id="demo3" name="demo" value="3"/><label for="demo3">选项3</label>
<input type="radio" id="demo4" name="demo" value="4"/><label for="demo4">选项4</label>
<input type="radio" id="demo5" name="demo" value="5"/><label for="demo5">选项5</label>
``` 则用户体验一下子提高了,因为当你点击文字的时候,对应的单选圆圈就勾上了。当然如果你觉得每个radio都要起个id太麻烦,还可以这样
```
<label><input type="radio" name="demo" value="1"/>选项1</label>
<label><input type="radio" name="demo" value="2"/>选项2</label>
<label><input type="radio" name="demo" value="3"/>选项3</label>
<label><input type="radio" name="demo" value="4"/>选项4</label>
<label><input type="radio" name="demo" value="5"/>选项5</label>
``` 可以在少死很多脑细胞(因为要起id名!)的情况下达到相同的用户体验。 ## 移动端 在移动设备上,由于传统的鼠标变成手指,点击的精确度差了很多,所以我们有必要提高input获得焦点的区域。这时候label的作用就非常大了,参考以下代码
```
.mobi-input{
display: block;
width: 300px;
height: 30px;
}
```
`<label class="mobi-input">提示1<input type="text" name="demo"/></label>` 调整`.mobi-input`的定义,我们可以较为自由地定义input获得焦点的盒子大小,从而达到上述目的。 ## 兼容性 在三星的手机上,使用上述代码,除了input在获得焦点时会有很明显的outline外,还会把label的innerText变成input的placeholder(视觉上是这样的)。一开始看到这个问题,一般人会这样解决: ```
.mobi-input{
display: block;
width: 300px;
height: 30px;
} .mobi-input input,.mobi-input input:focus{
outline:none;
}
```
`<label class="mobi-input">提示1<input type="text" name="demo" placeholder=""/></label>` **然后发现是不能解决的!** 于是我在网上找一些现成的UI框架,然后用手机上,兼容性好的参考其源代码,终于找到一款UI: http://joapp.com/live/samples/kitchensink/index.html 能解决这个问题,查看其代码,原来非常简单的一句`contenteditable="true"`就能解决了~~~~ ```
.mobi-input{
display: block;
width: 300px;
height: 30px;
} ```
`<label class="mobi-input">提示1<input type="text" name="demo" contenteditable="true"/></label>` 然后就可以基于以上基础去封装个性化的移动设备UI控件了。 20160116补充:label所指向的input,如果display:none的话,在IE8下是无效的

容易被忽略的label标签的更多相关文章

  1. 转:label标签的特殊用法

    容易被忽略的label标签 原始作用 label标签是HTML原生的标签,其原始的作用参考这里 label 标签为 input 元素定义标注(标记). label 元素不会向用户呈现任何特殊效果.不过 ...

  2. WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展

    一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要是对文本 ...

  3. HTML label标签的一点理解

    label标签为input元素定义标注. label元素不呈现任何特殊效果.不过他为鼠标用户改进了可用性.如果你在label元素内点击文本就会触发此控件.就是说当用户选择该标签是,浏览器就会自动的将焦 ...

  4. HTML <label> 标签

    定义:<label> 标签为 input 元素定义标注(标记). 用法: label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如果您在 label 元素内点击文本, ...

  5. label标签使用过程中遇到的问题

    最近在做东西时候使用到了label标签,由于之前很少使用label标签,所以就遇到一个很奇怪的问题.什么问题呢?下面来看一个效果 <!DOCTYPE html> <html> ...

  6. [Cocos2D-x For WP8]Label标签

    Label标签主要会用于在游戏中显示一些文字字符串类型的信息.那么在Cocos2D-x里面主要会有下面的一些创建标签的方式: 1.使用CCLabelTTF类生成系统文字的标签,编程语法如下: CCLa ...

  7. [HTML5]label标签使用以及建议

    for 属性规定 label 与哪个表单元素绑定. 隐式和显式的联系 标记通常以下面两种方式中的一种来和表单控件相联系:将表单控件作为标记标签的内容,这样的就是隐式形式,或者为 <label&g ...

  8. label标签跳出循环

    出场: 首先我们来说说为什么需要label标签,虽然我们已经知道有break,continue跳出循环,但如果是多重循环那么它们就显的无能为力了,所以就出现了label这个标签来为我们服务. 我们先来 ...

  9. html之label标签

    label标签为input元素定义标注,label标签与相关元素通过id属性绑定在一起. 相关属性: for:规定label绑定到哪个表单元素 form:规定label字段所属的一个或多个表单 示例代 ...

随机推荐

  1. Spring Data Redis 让 NoSQL 快如闪电(2)

    [编者按]本文作者为 Xinyu Liu,文章的第一部分重点概述了 Redis 方方面面的特性.在第二部分,将介绍详细的用例.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 把 Redis ...

  2. distribution 分发数据库 灾难恢复 备份恢复

    参考: http://www.sqlservercentral.com/articles/Replication/117265/ 前提:     准备一台电脑,主机名和以前的分发数据库一致.并且安装s ...

  3. Linux进程核心调度器之主调度器schedule--Linux进程的管理与调度(十九)

    主调度器 在内核中的许多地方, 如果要将CPU分配给与当前活动进程不同的另一个进程, 都会直接调用主调度器函数schedule, 从系统调用返回后, 内核也会检查当前进程是否设置了重调度标志TLF_N ...

  4. AndroidStudio2.2.x以上使用cMake编译调用底层c生成依赖库

    最近使用AndroidStudio的最新ndk编译方式cMake来编译底层cpp文件,由于之前没有接触过cMake语法,先附上官方学习文档地址:https://developer.android.co ...

  5. MATLAB求马氏距离(Mahalanobis distance)

    MATLAB求马氏距离(Mahalanobis distance) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1.马氏距离计算公式 d2(xi,  ...

  6. linux学习笔记整理(九)

    第十章 Centos7-系统进程管理本节所讲内容:10.1 进程概述和ps查看进程工具10.2 uptime查看系统负载-top动态管理进程10.3 前后台进程切换- nice进程优先级-实战scre ...

  7. centos7下kubernetes(10。kubernetes-daemonset)

    deployment部署得副本pod会分布在各个node上,每个node上可以运行很多个pod. daemonset的不同之处就在于,daemonset可以让每个node上只运行一个pod daemo ...

  8. UVA120-Stacks of Flapjacks(思维)

    Problem UVA120-Stacks of Flapjacks Accept: 9232  Submit: 38455Time Limit: 10000 mSec Problem Descrip ...

  9. skip-thought vector 实现Sentence2vector

    1.常见文本相似度计算方法 常见的短文本相似度计算方法目前有很多中,但这些短文本相似度计算方法都只是提取了短文本中的浅层特征,而无法提取短文本中的深层特征.目前常见的文本相似度计算方法有: 1)简单共 ...

  10. Request Body可以反复读取的方法

    org.springframework.web.filter.HiddenHttpMethodFilter:过滤器已经读取流了,因此想频繁读取流的话,自定义Filter必须在org.springfra ...