表单样式美化
因浏览器不同,部份输入框样式存在差异或受应用场景限制,需要统一效果及优化。
默认样式
因input的radio、checkbox、file不适用.input
样式,因些我们需要针对性的美化,默认效果如下:
单选
单选为多个选项中,只能选择其中一个。
<div class="input-check"> <label><input type="radio" name="radio" /><i></i> 单选1</label> <label><input type="radio" name="radio" checked="checked" /><i></i> 单选2</label> <label><input type="radio" name="radio" disabled /><i></i> 单选3(禁用)</label> </div>
内联显示
内联显示,则叠加样式.input-check-inline
:
<div class="input-check input-check-inline"> <label><input type="radio" name="radio" /><i></i> 单选1</label> <label><input type="radio" name="radio" checked="checked" /><i></i> 单选2</label> <label><input type="radio" name="radio" disabled /><i></i> 单选3(禁用)</label> </div>
复选
复选为多个选项中,可选择一个及以上选项的。
<div class="input-check"> <label><input type="checkbox" name="checkbox" /><i></i> 复选1</label> <label><input type="checkbox" name="checkbox" checked="checked" /><i></i> 复选2</label> <label><input type="checkbox" name="checkbox" disabled /><i></i> 复选3(禁用)</label> </div>
内联显示
内联显示,同样,叠加样式.input-check-inline
:
<div class="input-check input-check-inline"> <label><input type="checkbox" name="checkbox" /><i></i> 复选1</label> <label><input type="checkbox" name="checkbox" checked="checked" /><i></i> 复选2</label> <label><input type="checkbox" name="checkbox" disabled /><i></i> 复选3(禁用)</label> </div>
开关
开关为单个复选框勾选及未勾选时的效果。
<form> <label class="input-switch"><input type="checkbox" name="switch" /><i></i> 开关</label> <label class="input-switch"><input type="checkbox" name="switch" checked="checked" /><i></i> 开关</label> <label class="input-switch"><input type="checkbox" name="switch" disabled /><i></i> 开关(禁用)</label> </form>
下拉菜单
当数量比较多的单选或复选时,使用下拉菜单选项。
<form> <div class="input-select drop drop-toggle" data-form="select"> <select class="input"> <option value="1">下拉菜单1</option> <option value="2">下拉菜单2</option> <option value="3">下拉菜单3</option> </select> <div class="input input-text"></div> <div class="dropdown"> <ul class="list-group list-box bg-white"></ul> </div> </div> </form>
验证框
密码或验证码输入分隔显示框,需要设置输入框属性data-form="verify"
,同时也需设置最大长度值maxlength;同时支持密码输入。
<form> <div class="input-verify" data-form="verify"> <input type="text" maxlength="6" class="input" /> <ul><li></li><li></li><li></li><li></li><li></li><li></li></ul> </div> </form>
浏览文件
上传文件,显示上传文件名称,同时可对上传文件的后缀、大小做验证。
<form class="demo-div"> <div class="input-upfile"> <a class="button border" href="javascript:;"><input type="file" data-form="upfile" data-validate='{"file":{"ext":"doc,docx","size":"<1024"},"invalid":"请上传1M以内的doc文件"}' />浏览 ...</a> <span>未选择文件</span> </div> <div class="input-upfile input-upfile-block"> <span>未选择文件</span> <a class="button text" href="javascript:;"><input type="file" data-form="upfile" data-validate='{"file":{"ext":"doc,docx","size":"<1024"},"invalid":"请上传1M以内的doc文件"}' />浏览 ...</a> </div> <div class="input-upfile"> <a class="button border" disabled href="javascript:;"><input type="file" />浏览(禁用) ...</a> <span>未选择文件</span> </div> </form>
提示:data-validate为表单验证属性,值为JSON格式数据,包含文件验证file及错误提示invalid;其中file包含后缀ext及文件大小size。
浏览图片
上传图片,可预览图片,同时可对上传图片的后缀、大小做验证,验证方式与上传文件相同;如需改变图片框的尺寸,直接在.input-upimage元素上定义尺寸大小即可。
<form> <div class="input-upimage"> <a href="javascript:;"> <input type="file" data-form="upimage" data-validate='{"file":{"ext":"jpg,jpeg,png,gif","size":"<2048"},"invalid":"请上传2M以内的图片"}' /> </a> <span></span> <img name="image" /> </div> <div class="input-upimage"> <a href="javascript:;" disabled><input type="file" data-form="upimage" /></a> <span></span> <img name="image" /> </div> <div class="input-upimage input-imgnote" style="width:150px;height:120px;"> <a href="javascript:;"><input type="file" data-form="upimage" /></a> <span>提示</span> <img name="image" /> <i data-dismiss="upimage"></i> </div> </form>
开发提示:文件浏览及图片浏览均为前端效果展示,未执行文件上传,上传需要异步或提交后端处理,建议在后端再次对文件格式及文件大小判断。
提示样式,在异步操作时,可显示上传百分比或其他信息。
在部份浏览器中,需要在input上添加accept
限制文件类似属性,值为image/gif,image/jpeg
等才能正常使用。