zoukankan      html  css  js  c++  java
  • 微信小程序spicker-view如何给选中框设定字体颜色

    小程序开发过程中有选身高的功能,用了picker-view。官方文档说indicator-styleindicator-class是设定选中框的样式和类名。我用的是uni-app框架

    然后就设置了上下边框颜色以及字体颜色,但是发现字体颜色并没有效果,代码如下:

    html部分:

    <view class="selectPicker">
       <picker-view class="picker" indicator-class="picker-box"  indicator-style="height:80upx;" :value="value" @change="bindChange">
            <picker-view-column class="item">
                 <view  class="text"  v-for="(item,index) in heights" :key="index">{{item}} cm</view>
            </picker-view-column>
        </picker-view>
    </view> 

    JS部分:

    const heights = []
        for (let i = 100;  i<= 230; i++) {
            heights.push(i)
        }
        export default {
            data: function () {
                return {
                    title: 'picker-view',
                    heights:heights,
                    height:165,
                    value:[65]
                }
            },
            methods: {
                bindChange: function (e) {
                    const val = e.detail.value
                    this.value = val
                    this.height = this.heights[val[0]]
                    console.log(this.height)
                }
            }
        }

    CSS部分:

    .picker-box{
          width:100%;
          border-top:3upx solid #4CD964;
          border-bottom:3upx solid #4CD964;
          color: #4CD964;
        }

    效果图如下:

     后来网上查了,大家都是设置不了,于是就用索引来给选中框选中样式。但是遇到了一个坑,一开始我是为了省几行代码,直接使用:style来添加样式。

    <view class="selectPicker">
        <picker-view class="picker" indicator-class="picker-box"  indicator-style="height:80upx;" :value="value" @change="bindChange">
             <picker-view-column class="item">
                  <view :style="value[0]==index?'color:#4CD964;':''" class="text"  v-for="(item,index) in heights" :key="index">{{item}} cm</view>
              </picker-view-column>
         </picker-view>
    </view> 

    value(是个数组形式,所以需要value[0])的值官方文档介绍了是选中框的索引,一旦滚动就会触发change事件,value的值就会变成选中框的索引。所以用value[0]的值和index来比较是否相等。相等则会增加样式color。这样写,出现了个bug,就是选中框的value和选中框的值不对应。如下图:是我拍的视频然后截图,不是很清晰。

    明明选的是1948,但是选中框显示的是1948和1949之间的内容,越往下滑,越明显。

    然后就改了,用class动态名来绑定样式,发现字体颜色最终改变了。代码如下:

    HTML:

    <view class="selectPicker">
       <picker-view class="picker" indicator-class="picker-box"  indicator-style="height:80upx;" :value="value" @change="bindChange">
            <picker-view-column class="item">
                  <view :class="value[0]==index?'pickerSelected':''" class="text"  v-for="(item,index) in heights" :key="index">{{item}} cm</view>
            </picker-view-column>
       </picker-view>
    </view> 

    增加的CSS代码:

    .pickerSelected{
        color: #4CD964;
    }

      

  • 相关阅读:
    【bzoj4152】[AMPPZ2014]The Captain 堆优化Dijkstra
    【bzoj4547】Hdu5171 小奇的集合 矩阵乘法
    【bzoj1264】[AHOI2006]基因匹配Match 树状数组
    【bzoj3856】Monster 乱搞
    【bzoj4724】[POI2017]Podzielno 二分
    【bzoj4976】宝石镶嵌 乱搞+dp
    【bzoj4070】[Apio2015]雅加达的摩天楼 set+堆优化Dijkstra
    【bzoj4627】[BeiJing2016]回转寿司 离散化+树状数组
    【bzoj2124】等差子序列 STL-bitset
    【bzoj1996】[Hnoi2010]chorus 合唱队 区间dp
  • 原文地址:https://www.cnblogs.com/huangqihui/p/12979391.html
Copyright © 2011-2022 走看看