章节
问答
课签
笔记
评论
占位
占位

表单控件状态(焦点状态)

表单主要用来与用户沟通,好的表单就能更好的与用户进行沟通,而好的表单一定离不开表单的控件状态。

表单状态的作用:

每一种状态都能给用户传递不同的信息,比如表单有焦点的状态可以告诉用户可以输入或选择东西,禁用状态可以告诉用户不可以输入或选择东西,还有就是表单控件验证状态,可以告诉用户的操作是否正确等。那么在Bootstrap框架中的表单控件也具备这些状态。

焦点状态是通过伪类“:focus”来实现。Bootstrap框架中表单控件的焦点状态删除了outline的默认样式,重新添加阴影效果。

源码请查阅bootstrap.css文件第1707行~第1712行:

.form-control:focus {
border-color: #66afe9;
outline: 0;
  -webkit-box-shadow: inset 0 1px 1pxrgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
box-shadow: inset 0 1px 1pxrgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
}

 从源码中我们可以看出,要让控件在焦点状态下有上面样式效果,需要给控件添加类名“form-control”:

<form role="form" class="form-horizontal">
  <div class="form-group">
    <div class="col-xs-6">
      <input class="form-control input-lg" type="text" placeholder="不是焦点状态下效果">
    </div>
    <div class="col-xs-6">
      <input class="form-control input-lg" type="text" placeholder="焦点点状态下效果">
    </div>
  </div>
</form>

运行效果如下或查看右侧结果窗口:

鼠标单击输入框,使其获得焦点就可以看到加入蓝色边框效果

在Bootstrap框架中,fileradiocheckbox控件在焦点状态下的效果也与普通的input控件不太一样,主要是因为Bootstrap对他们做了一些特殊处理:
/*源码查看boostrap.css文件第1676行~第1682行*/

input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}

 

 

任务

我也来试试:完成下面任务

在右侧代码编辑器中输入file、radio、checkbox等控件,体验一下各控件焦点状态下的效果。

(本小节任务没有代码正确性验证)

?不会了怎么办
||
1
2
<!doctype html>
<html lang="en"
    >
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
body{
padding: 10px;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 林果LinJiab
建议你f12查看一下 form-control的作用! 在根据需要自己改

最新回答 / 慕仔5023026
如果radio需要水平排列,只需要在label标签上添加类名“radio-inline”

最新回答 / 陈浮生的二狗
<input type="radio" class="form-control">这样就Ok了,如果想变大,在class中加入input-lg就变大了,点击会有变蓝的样式,这是BootStrap设置好的

最新回答 / 兜小麦
   引用换成这个试试 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">

最赞回答 / 慕哥5543641
这节的表述引起歧义了。添加了form-control并不代表一进入网页就自动获取焦点,文中的意思是Bootstrap自定义了鼠标点击之后获取到焦点的样式,比如边框变蓝变量。文中的两个input框是一样的,只有点击之后才能看到focus的效果。作者的两个placeholder的写法更加令人迷惑了。

最新回答 / 傅煜4118997
焦点状态实说你鼠标点击之后的样子,鼠标没点就不是焦点状态

最新回答 / 梦想的偏执狂
在你单选框里的 class 里再加一个 radio-inline 就可以水平展示了

已采纳回答 / 慕粉3563242
焦点状态是通过伪类“:focus”来实现<...code...><...code...>

已采纳回答 / 然之美
应该是这样的:<div class='radio:focus'><input type='radio' name='sex' ></div>

最新回答 / 茶果Aimerlavie3693805
单选按钮(RadioButton)和复选框(CheckBox)、状态开关按钮(ToggleButton)与开关(Switch)是用户界面中最普通的UI组件,他们都继承了Button类,因此都可直接使用Button支持的各种属性和方法。       RadioButton、CheckBox与普通按钮不同的是,它们多了一个可选中的功能,因此RadioButon、CheckBox都可额外指定一个android:checked属性,该属性用于指定RadioButton、CheckBox初始时是否被选中。     ...

最赞回答 / 好人一生平安_mahy
我也是刚学,但是看了下你的代码,用法有点问题。在例子中<input class="form-control" type="text" >这个输入框中的form-control是为了让输入框在不同风格的表格中不会出错所以加的。见3-4的讲解。在radio和checkbox中并不需要加入form-control类名。你加入了这个类名所以导致单选框和复选框出现了样式的不正确,对于flie类型也是同理。在代码中使用了`radio-inline`和`checkbox-inline`,但是你加到了DIV上...

已采纳回答 / 惊鸦
role="form"是为了语义化,跟容易别人理解,form-hozizontal是封装的css样式,子元素水平排列,这里div.form-group如果不加hirizontal的话子元素不能水平排列的吧
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言