• Vue利用flex布局实现TV端城市列表


    Vue利用flex布局实现TV端城市列表

    vue中城市列表和搜索很常见,这篇博客就来说说咋实现搜索和城市列表

    1.实现搜索布局代码:

    2.搜索布局css样式代码:

    .search-bar-root {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      margin-top: 140px;
    }
    ​
    .index-root-search-title-css {
      flex-direction: column;
      align-items: center;
      justify-content: center;
      margin-bottom: 40px;
    }
    ​
    .search-bar-root .search-bar {
      background-color: #ffffff;
      width: 1000px;
      height: 100px;
      display: flex;
      justify-content: center;
      border-radius: 8px;
    }
    ​
    .search-input {
      width: 780px;
      border-radius: 8px;
      font-size: 36px;
      font-family: PingFangSC-Regular, PingFang SC;
      font-weight: 400;
      color: #000000;
      margin-left: 40px;
      text-indent: 40px;
    }
    ​
    .index-root-search-image-view-css {
      position: absolute;
      width: 32px;
      height: 32px;
      top: 35px;
      bottom: 35px;
      right: 0;
      margin-right: 102px;
      text-align: center;
    }
    ​
    .index-root-search-flex-view-css {
      display: flex;
      flex-wrap: wrap;
      flex-direction: row;
      width: 1450px;
      margin-left: 245px;
      margin-right: 245px;
      margin-top: 40px;
    }
    ​
    .index-root-search-text-view-css {
      font-size: 30px;
      font-family: PingFangSC-Regular, PingFang SC;
      color: #000000;
      text-align: center;
      font-weight: 400;
      top: 0;
      bottom: 0;
      right: 0;
      position: absolute;
      margin-right: 30px;
    }
    ​
    .index-root-search-title-text-view-css {
      font-size: 70px;
      font-family: PingFangSC-Regular, PingFang SC;
      color: #ffffff;
      text-align: center;
      opacity: 1.0;
    }
    ​
    .search-city-button-view-css {
      width: 270px;
      height: 100px;
      background-color: rgba(0, 0, 0, .1);
      margin-right: 20px;
      margin-top: 40px;
      border-radius: 11px;
      border-width: 2px;
      border-color: rgba(255, 255, 255, 0.1);
      focus-background-color: #fff;
    }
    ​
    .search-city-button-view-css .city-sel-box {
      border-width: 2px;
      border-color: #32C5FF;
    }

    3.城市列表布局代码:

     
             
      {{item.cityName}}

    4.城市列表css样式代码:

    .index-root-search-flex-view-css {
      display: flex;
      flex-wrap: wrap;
      flex-direction: row;
      width: 1450px;
      margin-left: 245px;
      margin-right: 245px;
      margin-top: 40px;
    }
    ​
    .index-root-search-text-view-css {
      font-size: 30px;
      font-family: PingFangSC-Regular, PingFang SC;
      color: #000000;
      text-align: center;
      font-weight: 400;
      top: 0;
      bottom: 0;
      right: 0;
      position: absolute;
      margin-right: 30px;
    }
    ​
    .index-root-search-title-text-view-css {
      font-size: 70px;
      font-family: PingFangSC-Regular, PingFang SC;
      color: #ffffff;
      text-align: center;
      opacity: 1.0;
    }
    ​
    .search-city-button-view-css {
      width: 270px;
      height: 100px;
      background-color: rgba(0, 0, 0, .1);
      margin-right: 20px;
      margin-top: 40px;
      border-radius: 11px;
      border-width: 2px;
      border-color: rgba(255, 255, 255, 0.1);
      focus-background-color: #fff;
    }
    ​
    .search-city-button-view-css .city-sel-box {
      border-width: 2px;
      border-color: #32C5FF;
    }
    ​
    .icon-location-reactive {
      position: absolute;
      width: 26px;
      height: 34px;
      margin-left: 60px;
      margin-top: 30px;
      margin-bottom: 30px;
    }
    ​
    .icon-location {
      width: 26px;
      height: 34px;
      position: absolute;
      left: 0;
      top: 0;
      z-index: 9;
    }
    ​
    .search-city-hot-text-iew-css {
      width: 270px;
      height: 100px;
      background-color: rgba(50, 197, 255, 0.1);
      border-radius: 11px;
      border: 2px solid #32C5FF;
      font-size: 36px;
      font-family: PingFangSC-Regular, PingFang SC;
      text-align: center;
      color: white;
    }
    ​
    .search-city-empty {
      margin-top: 40px;
      width: 425px;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      margin-left: 535px;
    }
    ​
    .search-city-empty .icon-no-connect {
      width: 425px;
      height: 307px;
    }
    ​
    .search-city-empty .empty-txt {
      font-size: 32px;
      font-family: PingFangSC-Light, PingFang SC;
      font-weight: 300;
      color: #FFFFFF;
      margin-top: 60px;
    }

    5.城市列表获取焦点的事件:

    主要是在div设置:focusable="true"和@focus="onFocus"

           
                       

    6.设置焦点背景颜色和字体效果:

    主要是设置:duplicateParentState="true"当文本获得焦点时颜色不受父布局影响,还可以设置焦点放大和带边框效果

    :enableFocusBorder="true"//设置获得焦点时的边框
    :focusScale="1.0"//设置焦点放大时的倍数

    焦点效果的样式::style="{focusColor: focusHotTextColor,fontSize: textFontSize,fontWeight: textFontWeight,}

    {{item.cityName}}

    7.搜索框输入事件:

    //输入内容之后请求城市列表接口刷新数据
    endEditing(e) {
      console.log("--resultData--", this.citySearchResult)
    },

    8.搜索框获取焦点的事件:

    onFocus(e) {
      this.focused = e.isFocused;
      this.$emit("onButtonFocused", e.isFocused);
    },

    9.默认弹出TV软键盘:

    mounted() {
      this.hotCity = hotCity;
      this.showHot = true;
      this.pageLoading = true
      //弹出软键盘
      this.$refs.searchInput.focus()
      //搜索框默认获取焦点
      this.setHideLoading()
    },

    10.完整代码如下:

    11.实现的效果截图如下:

     

  • 相关阅读:
    egret白鹭引擎RES资源管理模块,资源动态加载失效BUG,加载卡死BUG,完整解决方案与超详细调试漏洞过程
    【机器学习课程】第三章特征工程 1.特征构造1.2 多变量特征构造(特征衍生)
    leetcode-06-[454]四数相加II[383]赎金信 [15] 三数之和 [18] 四数之和
    startUML设计
    LeetCode:1155. 掷骰子等于目标和的方法数(C++)
    EVPN VXLAN报文交互
    03【设计模式的七大原则】
    StoneDB for MySQL 5.7 版本发布
    python写的 自定义连点器 的开发全过程(抢票、信息轰炸等、游戏连招等)——思路及解析【内附完整源码】
    编程内功心法「底层原理系列」 回归与本质,让本文带你认识什么是计算机软件系统
  • 原文地址:https://blog.csdn.net/u012556114/article/details/127722353