表单自定义样式

总结自定义表单样式的控件,涉及到一些css伪类伪元素知识

css组合选择符

css组合选择符在自定义表单控件中扮演着连接的作用,便于控制元素样式,css3中有四种组合选择符。

后代选择器 :以空格分离,选择后代相匹配的元素;#div p 选择的是#div下所有的p元素

子元素选择器 :以大于号分离,选择子元素相匹配的元素;#div>p 选择的是#div下直接子元素为p元素

相邻兄弟选择器 :以加号分离,选择紧接的元素,二者有相同父级,#div+p选择的是#div相邻的p,只是第一个,因为第一个相邻的

后续兄弟选择器 :以波浪线分离,选择所有相邻兄弟元素,都有相同的父级,#div~p 选择的是#div相邻的所有的p元素

伪类和伪元素

伪类 通过选择器找到不存在DOM树中的信息以及一些css选择器获得不到的信息,一般用冒号开头

常见的伪类

  anchors伪类                                             a:link      //未访问的链接                                 a:visited   //已访问的链接  a:hover     //鼠标滑过的链接  a:active    //已选中的链接  ?  css-伪类  :first-child  //元素的第一个子元素  :last-child   //元素的最后一个子元素  :nth-child(n) //元素的第n个子元素  :first-letter //常用作文本,选择元素的第一个字母  :first-line   //常用作文本,选择元素的第一行  :checked      //选中的表单元素,比如radio Checkbox option  :disabled     //禁用的表单元素  :focused      //元素输入后具有焦点的元素

伪元素 在DOM树中创建一些抽象的元素,不存在与文档语言中,css为区分伪类和伪元素,伪元素为::

常见的伪元素有

  ::before 作为元素的第一个子节点插入DOM中
  ::after 作为元素的左右一个子节点插入DOM中  //常常与content相匹配生成内容,这里content有点意思,后面详细说

label标签

此标签表示用户界面中项目的标题,是内联元素inline,通常关联表单控件,或者放入其中

  //直接嵌套型
  <label>click <input type=‘text‘ id=‘user‘ name=‘username‘></label>
  //for绑定id型
  <label for=‘user‘>click</label>
  <input type=‘text‘ id=‘user‘ name=‘username‘>

除了绑定这些控件,还搭配选择组

optgroup

<optgroup label=‘fruit‘>

自定义控件样式的实现

主要原理:

  • 隐藏原生的input控件
  • 使用label,对label添加样式,使其代替原来的控件

因为,label可以关联到所指定的控件,因而既可以为label添加样式,显示出控件样子;又可以使checkbox有原来的动态(即单选、多选)

雪碧图和图标字体

雪碧图

css图像合成技术,主要用来弄小图标的,雪碧图直接合成在一张图片上;作用:减少过多的文件请求,减少http请求。

图标字体

font-awesome

代码部分

方法一: 利用checked和:after

HTML结构

  <div id="first">
        Checkbox控件<br>
        <input type="checkbox" name="box" id="box1">
        <label for="box1"></label>
        <input type="checkbox" name="box" id="box2">
        <label for="box2"></label>
        <input type="checkbox" name="box" id="box3">
        <label for="box3"></label><br>
        radio控件<br>
        <input type="radio" name="radios" id="radio1">
        <label for="radio1"></label>
        <input type="radio" name="radios" id="radio2">
        <label for="radio2"></label>
  </div>

CSS样式

     //隐藏原来的input控件
     #first input{
        display:none;
     }
     /*checkbox  设置label*/
     #first input[type=‘checkbox‘]+label{
        width:16px;
        height:16px;
        display:inline-block;
        border:1px solid #d9d9d9;
     }
     /*:checked后*/
     #first input[type=‘checkbox‘]:checked+label:after{
        content:‘\2714‘;                   /*这里的content内容有点意思,另一篇文章中再总结*/
        color:red;
        width:8px;
        height:8px;
        line-height:8px;
        text-align:center;
        font-size:20px;
     }
     /*radio   设置label*/
     #first input[type=‘radio‘]+label{
        width:16px;
        height:16px;
        display:flex;                     /*这里必须用flex布局,radio的label中的点才会出现*/
        border:1px solid #d9d9d9;
        border-radius:50%;
     }
     /*:checked后*/
     #first input[type=‘radio‘]:checked+label::after{
        border-radius: 50%;
              width: 8px;
              height: 8px;
              line-height: 8px;
              content: ‘‘;
              margin:auto;
              background: #d73d32;
     }
     /*:checked的input的边框变化*/
     #first input:checked+label{
        border:1px solid #d73d32;
     }

方法二: 直接利用雪碧图定位获取

css样式

      /*为所有的label设置宽高 背景*/
      #fisrt input+label{
          width: 16px;
          height:16px;
          border:none;
          display: inline-block;
          background:url(‘bg.png‘) no-repeat;
      }
      /*利用雪碧图定位一开始的CheckBox radio背景*/
      #first input[type=‘checkbox‘]+label{
         background-position:-25px -32px;
      }
      #first input[type=‘radio‘]+label{
          background-position: -24px -10px;
      }
      /*利用雪碧图定位选中后的CheckBox radio背景*/
      #first input[type=‘checkbox‘]:checked+label{
          background-position: -60px -32px;
      }
      #first input[type=‘radio‘]:checked+label{
          background-position: -59px -10px;
      }

总结

两种方法都是通过设置label的样式代替原生的样式;前者是利用:before,:after来添加内容;后者是利用图片直接添加;这个过程都利用:checked触发动作而生成。

欢迎访问我的个人网站:博客地址

原文地址:https://www.cnblogs.com/iDouble/p/8560945.html

时间: 2024-10-30 21:29:49

表单自定义样式的相关文章

Yii2 ActiveForm表单自定义样式

实例: <?php $form = ActiveForm::begin([ 'fieldConfig' => [ 'template' => '<div class="col-lg-3 control-label color666 fontweight">{label}:</div> <div class="col-lg-5" style="padding-left: 15px;padding-right:

封装表单自定义错误信息。(阻止默认错误信息提示,添加自定义错误信息提示)

1 前台提交信息到后台,两种表单验证: 2 1,form 表单验证 3 2,ajax 无刷新页面提交 4 5 表单验证方法一般有: 6 1,浏览器端验证 7 2,服务器端验证 8 3,ajax验证 9 4,浏览器和服务器双重验证 10 11 html5表单新增类型: 12 email,url,number,range,data(date,month,week,time,datetime,datetime-local),search,color,tel等 13 ======== 14 重点:pat

BPM实例分享:如何设置表单字体样式

系统版本:V10.0 一些业务场景中,时尔需要改变表单字体 那如何设置表单字体样式? 本文将会针对全局表单和单个表单进行阐述! 1.全局表单:  修改WFRES\CSS\MvcSheet.css ,在body节点里面增加 font-family:"字体名" !important;  2.单个表单: 添加以下样式body{    font-family:"字体名" !important;  } PS:若设置后没有变化,按F12,并查看控制整个页面的div,找到相应的C

jQuery_review之一行语句搞定表单焦点样式

众所周知,各种浏览器对于HTML.CSS以及原生JS的支持不尽相同.但是jQuery很好地封装了各种浏览器不同的实现,能够很好地解决跨浏览器的CSS问题.下面就是在review表单操作的时候的一个DEMO,记录在这个地方,方便后面做项目的时候查找使用. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="

表格表单及样式重置、特性

1.表格 用table标签,标签 table的标签基本特性是 display:table; <thead> 表格头部 <tbody> 表格主体 <tfoot> 表格尾部 <tr>行 <th>表格标题 <td>单元格 一般只用<tbody> colspan 属性规定单元格可横跨的列数 只能放在th,td标签中<th colspan='2'> rowspan 属性规定单元格可横跨的行数 只能放在td标签中<t

BootStrap的table表格,栅格系统,form表单的样式

BootStrap BootStrap的简介 1.    什么是Bootstrap 由两个前端设计师开发的一个前端的框架(Html,css,js) 简化了程序员写css的代码 2.    为什么使用BootStrap,有什么特点 l  学习比较简单,有了Html,css和js就能学习 l  响应式布局,可以适应多种的设备 l  移动设备优先 BootStrap的使用 环境的安装 官网上下载包 要想使用bootStrap 必须加载jquery bootStrap的基本模板 1.     Html文

表单和样式表

[表单] <form id="" name="" method="post/get" action="负责处理的服务端"> id不可重复,name可重复,get提交有长度限制,并且编码后的内容在地址栏可见, post提交没有长度限制,且编码后内容不可见. </form> 1.文本输入 文本框<input type="text" name="" id=&quo

Validform和aui2.0结合使用的表单自定义验证提示和列表页异步获取数据Demo

二.添加自定义验证演示       Validform验证提示大多都是在输入框或下拉框的右边或下面.感觉就是不美观,特别是表单字段少的时候,这种在相应对象旁边的提示就没必要了,      它会给人一种不友好的感觉(只是自己的感觉).所以下面写了三种添加演示,希望大家能给出建议,以免下次用起来纠结,不知道用哪种好.        表单验证插件是我们经常使用的Validform_v5.3.2_min.js.先上添加1演示的表单验证js代码,这里我设置了点击提交按钮后才验证.其他添加演示的区别不大,详

HTML表单 CSS样式

1.HTML表单 <body rightmargin="50" leftmargin="50" background="未标题-1.jpg"> <from> <table border="0" cellspacing="3" align="center"> <tr> <td>邮箱:</td> <td>&l