• uni-app:实现简易自定义下拉列表


    效果 

    代码

    1. <template>
    2. <view>
    3. <view class="dropdown-trigger" @tap="showDropdown">
    4. {{ selectedItem }}
    5. view>
    6. <view class="dropdown-list" v-if="showList">
    7. <view class="dropdown-item" v-for="item in listData" @tap="selectItem(item)" :key="item">
    8. {{ item }}
    9. view>
    10. view>
    11. view>
    12. template>
    13. <script>
    14. export default {
    15. data() {
    16. return {
    17. showList: false, // 控制下拉列表的显示和隐藏
    18. listData: ['选项1', '选项2', '选项3'], // 下拉列表的数据
    19. selectedItem: '选项1' // 选中的下拉列表项
    20. }
    21. },
    22. methods: {
    23. showDropdown() {
    24. this.showList = !this.showList; // 切换下拉列表的显示状态
    25. },
    26. selectItem(item) {
    27. this.selectedItem = item; // 选择下拉列表项
    28. this.showList = false; // 隐藏下拉列表
    29. }
    30. }
    31. };
    32. script>
    33. <style>
    34. .dropdown-trigger{
    35. border:1px solid black;
    36. width: 250rpx;
    37. }
    38. .dropdown-list{
    39. border:1px solid black;
    40. width: 250rpx;
    41. }
    42. style>

    扩展-下拉列表位置

    如果下拉列表下方有内容,当下拉列表的内容出现时,会造成下拉列表占据一定的高度,将内容挤压至下拉列表的下方(正常是下拉列表的内容可以覆盖内容,而不占据一定高度)

    效果

    被挤压的效果

     正常效果:由于没设置背景色,现在看着就是这样的效果

    更换背景色就展示出希望得到的效果

    核心代码

    一、在需要出现下拉列表的元素上设置相对定位(position: relative),用于作为下拉列表的参考位置。

    .dropdown-trigger { position: relative; }

    二、下拉列表使用绝对定位(position: absolute),并设置top或bottom属性来控制其在参考元素上方或下方的位置。

    .dropdown-list { position: absolute;}

    完整代码

    1. <template>
    2. <view>
    3. <view class="dropdown-trigger" @tap="showDropdown">
    4. {{ selectedItem }}
    5. view>
    6. <view class="dropdown-list" v-if="showList">
    7. <view class="dropdown-item" v-for="item in listData" @tap="selectItem(item)" :key="item">
    8. {{ item }}
    9. view>
    10. view>
    11. <view>
    12. 我是内容
    13. view>
    14. view>
    15. template>
    16. <script>
    17. export default {
    18. data() {
    19. return {
    20. showList: false, // 控制下拉列表的显示和隐藏
    21. listData: ['选项1', '选项2', '选项3'], // 下拉列表的数据
    22. selectedItem: '选项1' // 选中的下拉列表项
    23. }
    24. },
    25. methods: {
    26. showDropdown() {
    27. this.showList = !this.showList; // 切换下拉列表的显示状态
    28. },
    29. selectItem(item) {
    30. this.selectedItem = item; // 选择下拉列表项
    31. this.showList = false; // 隐藏下拉列表
    32. }
    33. }
    34. };
    35. script>
    36. <style>
    37. .dropdown-trigger {
    38. border: 1px solid black;
    39. width: 250rpx;
    40. position:relative;
    41. }
    42. .dropdown-list {
    43. border: 1px solid black;
    44. width: 250rpx;
    45. position:absolute;
    46. background-color: aquamarine;
    47. }
    48. style>

    扩展-下拉列表选中颜色改变

    效果

    核心代码

    三目运算给出样式

    :class="{selected: selectedItem === item}"

    完整代码

    1. <template>
    2. <view>
    3. <view class="dropdown-trigger" @tap="showDropdown">
    4. <text>{{ selectedItem }}text>
    5. view>
    6. <view class="dropdown-list" v-if="showList">
    7. <view class="dropdown-item" v-for="item in listData" @tap="selectItem(item)" :key="item" :class="{selected: selectedItem === item}">
    8. {{ item }}
    9. view>
    10. view>
    11. <view>
    12. 我是内容
    13. view>
    14. view>
    15. template>
    16. <script>
    17. export default {
    18. data() {
    19. return {
    20. showList: false, // 控制下拉列表的显示和隐藏
    21. listData: ['选项1', '选项2', '选项3'], // 下拉列表的数据
    22. selectedItem: '选项1' // 选中的下拉列表项
    23. }
    24. },
    25. methods: {
    26. showDropdown() {
    27. this.showList = !this.showList; // 切换下拉列表的显示状态
    28. },
    29. selectItem(item) {
    30. this.selectedItem = item; // 选择下拉列表项
    31. this.showList = false; // 隐藏下拉列表
    32. }
    33. }
    34. };
    35. script>
    36. <style>
    37. .dropdown-trigger {
    38. border: 1px solid black;
    39. width: 250rpx;
    40. position:relative;
    41. }
    42. .dropdown-list {
    43. border: 1px solid black;
    44. width: 250rpx;
    45. position:absolute;
    46. background-color: aquamarine;
    47. }
    48. /* 自定义选中项的样式 */
    49. .selected {
    50. color: red;
    51. font-weight: bold;
    52. }
    53. style>

  • 相关阅读:
    iOS-iOS在h5中判断手机是否装了app
    JVM 第四部分—垃圾回收概念 和 算法 1
    java 堆外内存常见误解
    Python爬虫实战系列3:今日BBNews编程新闻采集
    Python 分形算法__代码里开出来的艺术之花
    JAVA计算机毕业设计扶贫信息管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
    18Java封装/private与public关键字
    同一台电脑安装多个版本的idea开发工具
    【数据结构】排序算法(一)—>插入排序、希尔排序、选择排序、堆排序
    【JavaScript复习十二】数组内置对象方法二
  • 原文地址:https://blog.csdn.net/weixin_46001736/article/details/133736954