发表于: 2019-02-25 21:42:11

1 682


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

input[type="radio"]的样式

对单选按钮自定义样式,我们以前一直用的脚本来实现,不过现在可以使用新的伪类 :checkbox 来实现。

如果直接对单选按钮设置样式,那么这个伪类并不实用,因为没有多少样式能够对单选按钮起作用。不过,倒是可以基于单选按钮的勾选状态借助组合选择符来给其他元素设置样式。

很多时候,无论是为了表单元素统一,还是为了用户体验良好,我们都会选择 label 元素和 input[type="radio"] 一起使用。当<label>元素与单选按钮关联之后,也可以起到触发开关的作用

思路:

1. 可以为<label>元素添加生成性内容(伪元素),并基于单选按钮的状态来为其设置样式;

2. 然后把真正的单选按钮隐藏起来;

3. 最后把生成内容美化一下。

1. 一段简单的结构代码:

<div class="female"> 

<input type="radio" id="female" name="sex" />

   <label for="female"></label>

</div>

<div class="male">

                   <input type="radio" id="male" name="sex" />

   <label for="male"></label>

</div>

2. 生成一个伪元素,作为美化版的单选按钮,先给伪元素添加一些样式:

input[type="radio"] + label::before {

   content: "\a0"; /*不换行空格*/

   display: inline-block;

   vertical-align: middle;

   font-size: 18px;

   width: 1em;

   height: 1em;

   margin-right: .4em;

   border-radius: 50%;

   border: 1px solid #01cd78;

   text-indent: .15em;

   line-height: 1

 }

原来的单选按钮仍然可见,但是我们先给单选按钮的勾选状态添加样式:

3. 给单选按钮的勾选状态添加不同的样式: 

input[type="radio"]:checked + label::before {

   background-color: #01cd78;

   background-clip: content-box;

   padding: .2em;

 }

4. 现在把原来的单选按钮隐藏:

input[type="radio"] {

   position: absolute;

   clip: rect(0, 0, 0, 0)

}

隐藏原来的单选按钮时,如果使用 display: none; 的话,那样会把它从键盘 tab 键切换焦点的队列中完全删除。

于是可采用剪切的方式,让剪切后的尺寸为零,这样就隐藏了原来的单选按钮。


解决transform调整后边框变模糊的问题

在css中加个padding-bottom:1px就可以了


明天计划的事情:(一定要写非常细致的内容) 

继续完成任务
遇到的问题:(遇到什么困难,怎么解决的) 

暂无
收获:(通过今天的学习,学到了什么知识)

同今天完成的事情


返回列表 返回列表
评论

    分享到