ul、li模仿ios的TableView实现城市选择
最近项目一个接着一个,之前说的精创环的项目还没做完,今天说先把那个放一下,先做访客系统,销售会见客户之后可以对客户进行一个跟踪记录,原型图也给了,今日头条的频道自定义页面一样。

如果是在IOS上让我来做我能很快搞定,但是让用web来做可是难着我了,由于上一博客也写了关于ul、li的导航的demo,我也知道这个也可以用ul、li来做,但是真自己动手做的时候完全不是那回事,搞了半天都没搞定,华为那边客户说让两天搞定,真是压力山大。今天晚上下班吃完饭就坐在电脑前来解决这个问题,功夫不负有心人,可算是解决了。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Demo</title>
<script src="jquery-3.1.1.min.js"></script>
</head>
<style type="text/css"'>
div.menu
{
width:300px;
}
/* 所有class为menu的div中的ul样式 */
div.menu ul
{
list-style:none; /* 去掉ul前面的符号 */
margin: 5px; /* 与外界元素的距离为0 */
padding: 0px; /* 与内部元素的距离为0 */
width:auto; /*宽度根据元素内容调整*/
}
/* 所有class为menu的div中的ul中的li样式 */
div.menu ul li
{
float:left;
width:300px;
margin:0px;
font-size:24;
font-weight:bold;
}
div.menu ul li ul
{
list-style:none; /* 去掉ul前面的符号 */
margin: 0px; /* 与外界元素的距离为0 */
padding: 0px; /* 与内部元素的距离为0 */
width:auto; /*宽度根据元素内容调整*/
}
div.menu ul li ul li
{
float:left; /* 向左漂移,将竖排变为横排 */
width:auto;
}
ul button {
background:#fff;
border-width:0.5px;
border-color:gray;
display: block;
margin:5px;
padding: 4px 20px; /* 内部填充的距离 */
border-top-left-radius: 2px;
border-top-right-radius: 2px;
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
ul button.active{
background:gray;
border-color:transparent;
}
</style>
<body>
<div class="menu">
<ul>
<li>
<div>关键字1<div>
<ul signalSelect='0' id="key">
<li><button type='button'>按钮</button></li>
<li> <button type='button'>按钮</button></li>
<li> <button type='button'>按钮</button></li>
<li> <button type='button'>按钮</button></li>
</ul>
</li>
<li>
<div>类别<div>
<ul signalSelect='1' id="typeClass">
<li><button type='button' >按钮</button></li>
<li><button type='button' >按钮</button></li>
<li> <button type='button' >按钮</button></li>
<li> <button type='button'>按钮</button></li>
</ul>
</li>
</ul>
<button type='button' style="margin:30px;text-align:center;height:30px; width:120px;align:center;" id="saveBtn">保存</button>
</div>
</body>
<script>
$('ul button').click(function(){
$(this).toggleClass('active');
if($(this).parent().parent().attr('signalSelect')=='1')
{
$(this).parent().siblings().find("button").toggleClass('active',false);
}
});
$('#saveBtn').click(function(){
$('#key button.active').each(function(){
alert($(this).text());
});
});
</script>
</html>
1.这里要说明一下,不知道大家有没有注意,在ul中我增加了一个signalSelect属性,用它来做什么的呢,其实用它是来做单选和多选判断的,如果signalSelect=1,则是单选,否则是多选。
2.平时大家也会操作过类似的页面,在选中和取消选中的时候,button按钮选中状态会改变,不同的状态显示不同的样式,在上面的css中可以看到,给button定义button.active,那怎么判断按钮是active还是不是呢?这个就要用到jquery的toggleClass,$(selector).toggleClass(class,switch),关于它的具体使用可以参考w3school.使用toggleClass可以改变样式,或者是新增、删除样式。
3.关于文字位置的问题,这个问题是困扰我很久的,回家自己又按照公司做的做了一遍,还是有问题,类别会跑到上面的那行,搞得我很郁闷,之前想着关键字、类别这些个li使用默认的float,而二级的li使用float:left,左浮动,但是这样子是有问题的,因为我设置display:block,一级的li宽度也没设置,导致错位。回来想了又想终于把这个bug解决了。首先是要设置大的div的宽度,不然一级二级的li的float都是left,这样会关键字并排着,设置宽度之和类别的那个li会自动在下面。
4.如何获得选中的按钮
这个问题我开始以为是很麻烦的问题,想着判断按钮是否是.active的状态,这个感觉不知道该怎么获得,不过在写css的时候使用ul button.active来设置选中的按钮,那也可以采用这样的方式直接过得选中的按钮。

ul、li模仿ios的TableView实现城市选择的更多相关文章
- js模仿ios select效果
github:https://github.com/zhoushengmufc/iosselect webapp模仿ios下拉菜单 html下拉菜单select在安卓和IOS下表现不一样,iossel ...
- js:for循环ul/li,获取当前被点击元素的id,以及给其他li设置属性
js:for循环ul/li,获取当前被点击元素的id,以及给其他li设置属性 <!doctype html> <html> <head> <meta char ...
- ul li设置横排,并除去li前的圆点
效果预览:http://hovertree.com/texiao/css/ 如何用CSS制作横向菜单 让ul li横向排列及圆点处理 我们先建立一个无序列表,来建立菜单的结构.代码是: <ul& ...
- 使用CSS把ul,li制作成表格
查看效果:http://hovertree.com/texiao/css/7.htm 具体实现请看样式部分. 完整代码: <!DOCTYPE html> <html> < ...
- html ul li的学习
DIV+CSS里,我们用得最多的就是ul li来显示数据,如新闻按钮等. <div id="menu"> <ul> <li><a href ...
- ul li 下的元素内容垂直居中
CSS: <style> * {;; } li { list-style: none; } li span { border: 1px solid red; height: 100px; ...
- DIV UL LI
<style type="text/css"> .productDetailTabNav{ width:960px;} .productDetailTabNav ul{ ...
- 怎样去除ul li a标签文字下的下划线
这个主要是text-decoration属性,颜色的话就是普通的了 <style> ul li a{ text-decoration:none; } ul li a { color: ...
- ul li横向排列及圆点处理
如何用CSS制作横向菜单 让ul li横向排列及圆点处理 第一步:建立一个无序列表 我们先建立一个无序列表,来建立菜单的结构.代码是:<ul> <li><a href ...
随机推荐
- 深入理解Nginx之调试优化技巧
在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好Nginx本身提供了很 ...
- [原]ubuntu14.04 网卡逻辑修改没有文件/etc/udev/rules.d/70-persistent-net.rules
-----问题出现------ 在新装的ubuntu14.04系统中没有发现文件/etc/udev/rule.d/70-persistent-net.rules, 无法修改网络的逻辑名称(即把第一张网 ...
- 烂泥:学习Nagios(二):Nagios配置
本文由秀依林枫提供友情赞助,首发于烂泥行天下 nagios安装完毕后,我们现在就来配置nagios.有关nagios的安装,可以参考<烂泥:学习Nagios(一):Nagios安装>这篇文 ...
- linux系统的任务计划crontab使用详解
linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ...
- Qt回忆录之配置开发环境
光阴荏苒,用Qt开发已经一年多了.在Windows上开发GUI,最常用的莫过于MFC,WinForm,WPF以及Qt.MFC和Qt是基于C++,而WinForm和WPF一般是基于C#,当然在PC上基于 ...
- linux进程间通信-信号量(semaphore)
一 为什么要使用信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问 代码的临界区域.临界区域是指执 ...
- Redhat下如何搭建NFS
环境: OS:Red Hat Linux As 5 服务器ip:192.168.50.199客户端ip:192.168.50.200 1.服务器上创建共享目录同时修改权限mkdir /bak1/nfs ...
- 彻底理解JavaScript原型
原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有"[[prototype]]"属性,函数对象有"prototype"属性,原型对 ...
- [转] OpenStack Kilo 更新日志
OpenStack 2015.1.0 (Kilo)更新日志 原文: https://wiki.openstack.org/wiki/ReleaseNotes/Kilo/zh-hans 目录 [隐藏] ...
- 好好写,好好干-PHP基础(二)
hi 好久没写,昨儿一写,感觉还是有人看的,至少是有一两个评论的~~好好干! 每天需要坚持的就那么4件事儿:写这个,学一点法语,看会儿书,锻炼.单身狗也有好处. 1.PHP 一.PHP基础(二) 1. ...