xml
<view class="segmentedControl">
    <!-- 循环遍历 -->
    <block wx:for="{{radioValues}}">
        <text data-index="{{index}}" bindtap="indexChanged" class="{{clazz[index]}}">{{item.value}}</text>
    </block>
</view>
 
css
/*LXSegmentedControl容器*/
.segmentedControl {
    /*水平居中*/
    margin: 30px auto;
    /*边框为2px 主色调为蓝*/
    border: 2px solid #39f;
    /*圆角6px*/
    border-radius: 6px;
    /*控件宽度*/
    width: 240px;
    /*控件高度*/
    height: 30px;
}
 
/*普通文本*/
.segmentedControl text {
    /*水平排列*/
    float: left;
    /*宽度为控件宽度的1/3 再减去2px的右边框*/
    width: 78px;
    /*字体大小*/
    font-size: 14px;
    /*主色调*/
    color: #39f;
    /*行高,与控件高度相等*/
    line-height: 30px;
    /*文本水平居中*/
    text-align: center;
    /*右边距*/
    border-right: 2px solid #39f;
}
 
/*选中状态文本*/
.segmentedControl text.selected {
    /*同主色调*/
   
    /*前景色为白色*/
    color: white;
}
 
/*最后一个分组按钮*/
.segmentedControl text.last {
    /*不必右边框*/
    border-right: 0;
    /*高度也不必减少2px,就是控件高度的1/3*/
    width: 80px;
}
 
 
js
Page({
    data: {
        radioValues: [
            {'value': '男','selected': false},
            {'value': '女','selected': true},
            {'value': '保密','selected': false},
        ],
        clazz: []
    },
    indexChanged: function(e){
        // 点中的是组中第个元素
        var index = e.target.dataset.index;
        // 读取原始的数组
        var radioValues = this.data.radioValues;
        for (var i = 0; i < radioValues.length; i++){
            // 全部改为非选中
            radioValues[i].selected = false;
            // 当前那个改为选中
            radioValues[index].selected = true;
        }
        // 写回数据
        this.setData({
            radioValues: radioValues
        });
        // clazz状态
        this.clazzStatus();
    },
    onLoad: function(){
        // onLoad 比 onReady 更早调用,后者为选中时屏幕闪动一下
        this.clazzStatus();
    },
    clazzStatus: function(){
        /* 此方法分别被加载时调用,点击某段时调用 */
        // class样式表如"selected last","selected"
        var clazz = [];
        // 参照数据源
        var radioValues = this.data.radioValues;
        for (var i = 0; i < radioValues.length; i++){
            // 默认为空串,即普通按钮
            var cls = '';
            // 高亮,追回selected
            if (radioValues[i].selected) {
                cls += 'selected ';
            }
            // 最后个元素, 追加last
            if (i == radioValues.length - 1) {
                cls += 'last ';
            }
            //去掉尾部空格
            cls = cls.replace(/(\s*$)/g,'');
            clazz[i] = cls;
        }
        // 写回数据
        this.setData({
            clazz: clazz
        });
    }
})
 
 
/*普通文本*/
.segmentedControl text {
    /*水平排列*/
    float: left;
    /*宽度为控件宽度的1/3 再减去2px的右边框*/
    width: 78px;
    /*字体大小*/
    font-size: 14px;
    /*主色调*/
    color: #39f;
    /*行高,与控件高度相等*/
    line-height: 30px;
    /*文本水平居中*/
    text-align: center;
    /*右边距*/
    border-right: 2px solid #39f;
}
 
/*选中状态文本*/
.segmentedControl text.selected {
    /*同主色调*/
   
    /*前景色为白色*/
    color: white;
}
 
/*最后一个分组按钮*/
.segmentedControl text.last {
    /*不必右边框*/
    border-right: 0;
    /*高度也不必减少2px,就是控件高度的1/3*/
    width: 80px;
}

segmentController的更多相关文章

  1. 函数响应式编程及ReactiveObjC学习笔记 (四)

    今天我们继续看其他的类别 UIImagePickerController+RACSignalSupport.h #import <UIKit/UIKit.h> @class RACDele ...

  2. ios 点餐系统

    这个程序的主要界面就是一个TabBarController.总共三个标签,第一个是所有的可点的菜,第二个是已点的菜,第三个是可以留言或者查看所有留言. 下面是第一个页面: 右上角的i按钮是添加新菜,每 ...

  3. ios之UIToolBar

    toolbar除了可以和navigationController一起用之外,也可以独立用到view里.工具栏UIToolbar – 一般显示在底部,用于提供一组选项,让用户执行一些功能,而并非用于在完 ...

  4. 第三方MBXPageViewController的使用和注意事项

    GitHub的地址: https://github.com/Moblox/MBXPageViewController 介绍SegmentController的使用: - (void)createSeg ...

随机推荐

  1. 网页导出PDF文件

    转自-----出道诗人 var downPdf = document.getElementById("exportToPdf"); downPdf.onclick = functi ...

  2. day39数据库之基本数据类型

    数据库之数据类型1.数据存储引擎 一个功能的核心部分,回到mysql        核心功能是存储数据  涉及到存储数据的代码 就称之为存储引擎        根据不同的需求 也有着不同的引擎分类 不 ...

  3. 网络编程 tftp下载文件的编程

    一.代码 操作码 功能 1 读请求,即下载 2 写请求,即上传 3 表示数据包,即DATA 4 确认码,即ACK 5 错误 from socket import * import struct s=s ...

  4. mysql 表映射为java bean 手动生成。

    在日常工作中,一般是先建表.后建类.当然也有先UML构建类与类的层级关系,直接生成表.(建模)这里只针对先有表后有类的情况.不采用代码生成器的情况. 例如: 原表结构: ),)) BEGIN ); ) ...

  5. Java -- XStreamAlias 处理节点中的属性和值

    XStreamAlias 可以把objec和xml相互转换,但是有时候节点带有属性和值就需要特殊处理下: <?xml version="1.0" encoding=" ...

  6. python——列表入门

    学习列表先分析一段程序: list = ['zx', 'xkd', 1997, 2018] list1=list+[1,2,3]#列表拼接 list2=[list,list1] print('嵌套的列 ...

  7. 获取电脑的 SN 码

    wmic bios get serialnumber

  8. css实现文本超出部分省略号显示

    一般超出文本显示分为两种:单行超出文本和多行超出文本省略号显示,实现方式使用纯css实现: div { // 单行 white-space: nowrap; overflow: hidden; tex ...

  9. js 模拟css3 动画

    <html> <head> <title> javaScript缓动入门 </title> </head> <body> < ...

  10. Signals的使用(通知)

    https://docs.djangoproject.com/en/2.1/topics/signals/