高文娣 發表於 2020-6-30 08:44:00

uni-app中仿微信列表长按弹出选择菜单

<p>1、实现效果:</p>
<p><img src="https://img2020.cnblogs.com/blog/1860986/202006/1860986-20200630084232555-1110334727.png"></p>
<p>2、此链接引入uni-app插件:https://ext.dcloud.net.cn/plugin?id=678</p>
<p>3、view段:</p>
<div class="cnblogs_code">
<pre>&lt;template&gt;
    &lt;view&gt;
      &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">list</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
            &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">flex_col</span><span style="color: rgba(128, 0, 0, 1)">"</span> @longpress=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">onLongPress</span><span style="color: rgba(128, 0, 0, 1)">"</span> :<span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{'active':pickerUserIndex==index}</span><span style="color: rgba(128, 0, 0, 1)">"</span> @tap=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">listTap</span><span style="color: rgba(128, 0, 0, 1)">"</span> v-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(item,index) in userList</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
             :key</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">index</span><span style="color: rgba(128, 0, 0, 1)">"</span> :data-index=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">index</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
                &lt;image src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">../../static/logo.png</span><span style="color: rgba(128, 0, 0, 1)">"</span> mode=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">aspectFill</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;&lt;/image&gt;
                &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">flex_grow</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
                  &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">flex_col</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
                        &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">flex_grow</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;{{item.name}}&lt;/view&gt;
                        &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">time</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;{{item.time}}&lt;/view&gt;
                  &lt;/view&gt;
                  &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">info</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;{{item.info}}&lt;/view&gt;
                &lt;/view&gt;
            &lt;/view&gt;
      &lt;/view&gt;
      &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">shade</span><span style="color: rgba(128, 0, 0, 1)">"</span> v-show=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">showShade</span><span style="color: rgba(128, 0, 0, 1)">"</span> @tap=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hidePop</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
            &lt;view <span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pop</span><span style="color: rgba(128, 0, 0, 1)">"</span> :style=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">popStyle</span><span style="color: rgba(128, 0, 0, 1)">"</span> :<span style="color: rgba(0, 0, 255, 1)">class</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">{'show':showPop}</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
                &lt;view v-<span style="color: rgba(0, 0, 255, 1)">for</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">(item,index) in popButton</span><span style="color: rgba(128, 0, 0, 1)">"</span> :key=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">index</span><span style="color: rgba(128, 0, 0, 1)">"</span> @tap=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pickerMenu</span><span style="color: rgba(128, 0, 0, 1)">"</span> :data-index=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">index</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;{{item}}&lt;/view&gt;
            &lt;/view&gt;
      &lt;/view&gt;
    &lt;/view&gt;
&lt;/template&gt;</pre>
</div>
<p>4、script段代码:</p>
<div class="cnblogs_code">
<pre>&lt;script&gt;<span style="color: rgba(0, 0, 0, 1)">
    export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
      data() {
            </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
                userList: [],
                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 窗口尺寸 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
                winSize: {},
                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 显示遮罩 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
                showShade: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 显示操作弹窗 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
                showPop: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 弹窗按钮列表 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
                popButton: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">标为关注</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">置顶聊天</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">删除该聊天</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">],
                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 弹窗定位样式 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
                popStyle: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择的用户下标 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
                pickerUserIndex: </span>-<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
            }
      },
      onLoad() {
            </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getListData();
            </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.getWindowSize();

            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef H5</span>
            document.onLong =<span style="color: rgba(0, 0, 0, 1)"> function(e) {
                </span><span style="color: rgba(0, 0, 255, 1)">var</span> e = e || window.<span style="color: rgba(0, 0, 255, 1)">event</span><span style="color: rgba(0, 0, 0, 1)">;
                e.preventDefault();
            };
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 0, 0, 1)">      },
      methods: {
            </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 列表触摸事件 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            listTap() {
                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 因弹出遮罩问题,所以需要在遮罩弹出的情况下阻止列表事件的触发 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
                <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.showShade) {
                  </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
                }

                console.log(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">列表触摸事件触发</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
            },
            </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 获取列表数据 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            getListData() {
                let list </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
                </span><span style="color: rgba(0, 0, 255, 1)">for</span> (let i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i &lt; <span style="color: rgba(128, 0, 128, 1)">20</span>; i++<span style="color: rgba(0, 0, 0, 1)">) {
                  list.push({
                        </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>: `第${i+<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}个用户`,
                        </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">time</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">5月20日</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
                        </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">info</span><span style="color: rgba(128, 0, 0, 1)">"</span>: `这是第${i+<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}个用户的聊天信息`
                  })
                }
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.userList =<span style="color: rgba(0, 0, 0, 1)"> list;
            },
            </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 获取窗口尺寸 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            getWindowSize() {
                uni.getSystemInfo({
                  success: (res) </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                        </span><span style="color: rgba(0, 0, 255, 1)">this</span>.winSize =<span style="color: rgba(0, 0, 0, 1)"> {
                            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">witdh</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: res.windowWidth,
                            </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">height</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: res.windowHeight
                        }
                  }
                })
            },
            </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 长按监听 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            onLongPress(e) {
                let </span>= , <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">, e.currentTarget.dataset.index];

                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 因 非H5端不兼容 style 属性绑定 Object ,所以拼接字符 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
                <span style="color: rgba(0, 0, 255, 1)">if</span> (touches.clientY &gt; (<span style="color: rgba(0, 0, 255, 1)">this</span>.winSize.height / <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">)) {
                  style </span>= `bottom:${<span style="color: rgba(0, 0, 255, 1)">this</span>.winSize.height-<span style="color: rgba(0, 0, 0, 1)">touches.clientY}px;`;
                } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
                  style </span>=<span style="color: rgba(0, 0, 0, 1)"> `top:${touches.clientY}px;`;
                }
                </span><span style="color: rgba(0, 0, 255, 1)">if</span> (touches.clientX &gt; (<span style="color: rgba(0, 0, 255, 1)">this</span>.winSize.witdh / <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">)) {
                  style </span>+= `right:${<span style="color: rgba(0, 0, 255, 1)">this</span>.winSize.witdh-<span style="color: rgba(0, 0, 0, 1)">touches.clientX}px`;
                } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
                  style </span>+=<span style="color: rgba(0, 0, 0, 1)"> `left:${touches.clientX}px`;
                }

                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.popStyle =<span style="color: rgba(0, 0, 0, 1)"> style;
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.pickerUserIndex =<span style="color: rgba(0, 0, 0, 1)"> Number(index);
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.showShade = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.$nextTick(() =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                  setTimeout(() </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                        </span><span style="color: rgba(0, 0, 255, 1)">this</span>.showPop = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
                  }, </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">);
                });
            },
            </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 隐藏弹窗 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            hidePop() {
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.showPop = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
                </span><span style="color: rgba(0, 0, 255, 1)">this</span>.pickerUserIndex = -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
                setTimeout(() </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                  </span><span style="color: rgba(0, 0, 255, 1)">this</span>.showShade = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
                }, </span><span style="color: rgba(128, 0, 128, 1)">250</span><span style="color: rgba(0, 0, 0, 1)">);
            },
            </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 选择菜单 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            pickerMenu(e) {
                let index </span>=<span style="color: rgba(0, 0, 0, 1)"> Number(e.currentTarget.dataset.index);
                console.log(`第${</span><span style="color: rgba(0, 0, 255, 1)">this</span>.pickerUserIndex+<span style="color: rgba(128, 0, 128, 1)">1</span>}个用户,第${index+<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}个按钮`);
                </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 在这里开启你的代码秀</span>
<span style="color: rgba(0, 0, 0, 1)">
                uni.showToast({
                  title: `第${</span><span style="color: rgba(0, 0, 255, 1)">this</span>.pickerUserIndex+<span style="color: rgba(128, 0, 128, 1)">1</span>}个用户,第${index+<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}个按钮`,
                  icon: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">none</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
                  mask: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
                  duration: </span><span style="color: rgba(128, 0, 128, 1)">600</span><span style="color: rgba(0, 0, 0, 1)">
                });

                </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">
               因为隐藏弹窗方法中会将当前选择的用户下标还原为-1,
               如果行的菜单方法存在异步情况,请在隐藏之前将该值保存,或通过参数传入异步函数中
               </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
                <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.hidePop();
            }
      }
    }
</span>&lt;/script&gt;</pre>
</div>
<p>5、style代码</p>
<div class="cnblogs_code">
<pre>&lt;style scoped lang=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scss</span><span style="color: rgba(128, 0, 0, 1)">"</span>&gt;
    <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 列式弹性盒子 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
    .flex_col {
      display: flex;
      flex</span>-<span style="color: rgba(0, 0, 0, 1)">direction: row;
      flex</span>-<span style="color: rgba(0, 0, 0, 1)">wrap: nowrap;
      justify</span>-content: flex-<span style="color: rgba(0, 0, 0, 1)">start;
      align</span>-<span style="color: rgba(0, 0, 0, 1)">items: center;
      align</span>-<span style="color: rgba(0, 0, 0, 1)">content: center;
    }

    </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 弹性盒子弹性容器 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
    .flex_col .flex_grow {
      width: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
      </span>-webkit-box-flex: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
      </span>-ms-flex-positive: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
      flex</span>-grow: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
    }

    .flex_row .flex_grow {
      </span>-webkit-box-flex: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
      </span>-ms-flex-positive: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
      flex</span>-grow: <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">;
    }

    </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 弹性盒子允许换行 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
    .flex_col.flex_wrap {
      </span>-ms-flex-<span style="color: rgba(0, 0, 0, 1)">wrap: wrap;
      flex</span>-<span style="color: rgba(0, 0, 0, 1)">wrap: wrap;
    }

    </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 列表 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
    .list {
      background</span>-<span style="color: rgba(0, 0, 0, 1)">color: #fff;
      font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 28upx;
      color: #</span><span style="color: rgba(128, 0, 128, 1)">333</span><span style="color: rgba(0, 0, 0, 1)">;
      user</span>-<span style="color: rgba(0, 0, 255, 1)">select</span><span style="color: rgba(0, 0, 0, 1)">: none;
      touch</span>-<span style="color: rgba(0, 0, 0, 1)">callout: none;

      </span>&amp;&gt;<span style="color: rgba(0, 0, 0, 1)">view {
            padding: 24upx 30upx;
            position: relative;

            </span>&amp;<span style="color: rgba(0, 0, 0, 1)">:active,
            </span>&amp;<span style="color: rgba(0, 0, 0, 1)">.active {
                background</span>-<span style="color: rgba(0, 0, 0, 1)">color: #f3f3f3;
            }

            image {
                height: 80upx;
                width: 80upx;
                border</span>-<span style="color: rgba(0, 0, 0, 1)">radius: 4px;
                margin</span>-<span style="color: rgba(0, 0, 0, 1)">right: 20upx;
            }

            </span>&amp;&gt;<span style="color: rgba(0, 0, 0, 1)">view {
                line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 40upx;

                .time,
                .info {
                  color: #</span><span style="color: rgba(128, 0, 128, 1)">999</span><span style="color: rgba(0, 0, 0, 1)">;
                  font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 24upx;
                }

                .time {
                  width: 150upx;
                  text</span>-<span style="color: rgba(0, 0, 0, 1)">align: right;
                }

                .info {
                  overflow: hidden;
                  text</span>-<span style="color: rgba(0, 0, 0, 1)">overflow: ellipsis;
                  white</span>-<span style="color: rgba(0, 0, 0, 1)">space: nowrap;
                }
            }
      }

      </span>&amp;&gt;view:not(:first-<span style="color: rgba(0, 0, 0, 1)">child) {
            margin</span>-<span style="color: rgba(0, 0, 0, 1)">top: 1px;

            </span>&amp;<span style="color: rgba(0, 0, 0, 1)">::after {
                content: </span><span style="color: rgba(128, 0, 0, 1)">''</span><span style="color: rgba(0, 0, 0, 1)">;
                display: block;
                height: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
                border</span>-<span style="color: rgba(0, 0, 0, 1)">top: #CCC solid 1px;
                width: 620upx;
                position: absolute;
                top: </span>-<span style="color: rgba(0, 0, 0, 1)">1px;
                right: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
                transform:scaleY(</span><span style="color: rgba(128, 0, 128, 1)">0.5</span>);    <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 1px像素 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
            }
      }
    }

    </span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> 遮罩 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
    .shade {
      position: </span><span style="color: rgba(0, 0, 255, 1)">fixed</span><span style="color: rgba(0, 0, 0, 1)">;
      z</span>-index: <span style="color: rgba(128, 0, 128, 1)">100</span><span style="color: rgba(0, 0, 0, 1)">;
      top: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
      right: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
      bottom: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
      left: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">;
      </span>-webkit-touch-<span style="color: rgba(0, 0, 0, 1)">callout: none;

      .pop {
            position: </span><span style="color: rgba(0, 0, 255, 1)">fixed</span><span style="color: rgba(0, 0, 0, 1)">;
            z</span>-index: <span style="color: rgba(128, 0, 128, 1)">101</span><span style="color: rgba(0, 0, 0, 1)">;
            width: 200upx;
            box</span>-sizing: border-<span style="color: rgba(0, 0, 0, 1)">box;
            font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 28upx;
            text</span>-<span style="color: rgba(0, 0, 0, 1)">align: left;
            color: #</span><span style="color: rgba(128, 0, 128, 1)">333</span><span style="color: rgba(0, 0, 0, 1)">;
            background</span>-<span style="color: rgba(0, 0, 0, 1)">color: #fff;
            box</span>-shadow: <span style="color: rgba(128, 0, 128, 1)">0</span> <span style="color: rgba(128, 0, 128, 1)">0</span> 5px rgba(<span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0.5</span><span style="color: rgba(0, 0, 0, 1)">);
            line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 80upx;
            transition: transform </span><span style="color: rgba(128, 0, 128, 1)">0</span>.15s ease-<span style="color: rgba(0, 0, 255, 1)">in</span>-<span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)"> 0s;
            user</span>-<span style="color: rgba(0, 0, 255, 1)">select</span><span style="color: rgba(0, 0, 0, 1)">: none;
            </span>-webkit-touch-<span style="color: rgba(0, 0, 0, 1)">callout: none;
            transform: scale(</span><span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">);

            </span>&amp;<span style="color: rgba(0, 0, 0, 1)">.show {
                transform: scale(</span><span style="color: rgba(128, 0, 128, 1)">1</span>, <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">);
            }

            </span>&amp;&gt;<span style="color: rgba(0, 0, 0, 1)">view {
                padding: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 20upx;
                overflow: hidden;
                text</span>-<span style="color: rgba(0, 0, 0, 1)">overflow: ellipsis;
                white</span>-<span style="color: rgba(0, 0, 0, 1)">space: nowrap;
                user</span>-<span style="color: rgba(0, 0, 255, 1)">select</span><span style="color: rgba(0, 0, 0, 1)">: none;
                </span>-webkit-touch-<span style="color: rgba(0, 0, 0, 1)">callout: none;

                </span>&amp;<span style="color: rgba(0, 0, 0, 1)">:active {
                  background</span>-<span style="color: rgba(0, 0, 0, 1)">color: #f3f3f3;
                }
            }
      }
    }
</span>&lt;/style&gt;</pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/menxiaojin/p/13211714.html
頁: [1]
查看完整版本: uni-app中仿微信列表长按弹出选择菜单