• 小程序自定义组件的制作的使用(文字流动效果示例)


    组件wxml代码

    <scroll-view class="container">
       <view class="scrolltxt">
          <view class="marquee_box">
             <view class="marquee_text" style="transform: translateX(-{{marqueeDistance}}px)">
                <text>{{text}}</text>
                <text style="margin-right:{{marquee_margin}}px;"></text>
                <text style="margin-right:{{marquee_margin}}px;">{{text}}</text>
             </view>
          </view>
       </view>
    </scroll-view>

    组件wxss代码

     1 .container {
     2    width: 100%;
     3    height: 100%;
     4    display: flex;
     5    flex-direction: column;
     6    justify-content: space-between;
     7    flex-wrap: nowrap;
     8    box-sizing: border-box;
     9    background: #f9db84;
    10 }
    11 
    12 .scrolltxt {
    13    padding: 0 10rpx;
    14    box-shadow: 0px 0px 10rpx 2rpx red inset;
    15 }
    16 
    17 .marquee_box {
    18    position: relative; /*相对定位*/
    19    color: #333;
    20    height: 50rpx;
    21    display: block; /*此元素将显示为块级元素,此元素前后会带有换行符。*/
    22    overflow: hidden; /*溢出部分隐藏*/
    23 }
    24 
    25 .marquee_text {
    26    white-space: nowrap; /*    文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。*/
    27    position: absolute; /*绝对定位*/
    28    height: 50rpx;
    29    color: #6b5924;
    30    top: 0;
    31    font-size: 24rpx;
    32    font-weight: 700; /*字体加粗*/
    33    letter-spacing: 2rpx; /*字体间隔*/
    34    line-height: 50rpx; /*行高*/
    35 }

    组件js代码

     1 // com/gonggao/gonggao.js
     2 Component({
     3    /**
     4     * 组件的属性列表
     5     */
     6    properties: {
     7       text: String,
     8    },
     9 
    10    /**
    11     * 组件的初始数据
    12     */
    13    data: {
    14       marqueePace: 1,//滚动速度
    15       marqueeDistance: 0,//初始滚动距离
    16       marquee_margin: 30,
    17       size: 14,
    18       interval: 25 // 时间间隔
    19    },
    20 
    21    attached: function() {
    22       var that = this;
    23       var length = that.data.text.length * that.data.size;//文字长度
    24       var windowWidth = wx.getSystemInfoSync().windowWidth;// 屏幕宽度
    25       that.setData({
    26          length: length,
    27          windowWidth: windowWidth
    28       });
    29       that.scrolltxt();// 第一个字消失后立即从右边出现
    30    },
    31    /**
    32     * 组件的方法列表
    33     */
    34    methods: {
    35       scrolltxt: function () {
    36          var that = this;
    37          var length = that.data.length;//滚动文字的宽度
    38          var windowWidth = that.data.windowWidth;//屏幕宽度
    39          if (length > windowWidth) {
    40             var interval = setInterval(function () {
    41                var maxscrollwidth = length + that.data.marquee_margin;//滚动的最大宽度,文字宽度+间距,如果需要一行文字滚完后再显示第二行可以修改marquee_margin值等于windowWidth即可
    42                var crentleft = that.data.marqueeDistance;
    43                if (crentleft < maxscrollwidth) {//判断是否滚动到最大宽度
    44                   that.setData({
    45                      marqueeDistance: crentleft + that.data.marqueePace
    46                   })
    47                }
    48                else {
    49                   //  console.log("替换");
    50                   that.setData({
    51                      marqueeDistance: 0 // 直接重新滚动
    52                   });
    53                   clearInterval(interval);
    54                   that.scrolltxt();
    55                }
    56             }, that.data.interval);
    57          }
    58          else {
    59             that.setData({ marquee_margin: "1000" });//只显示一条不滚动右边间距加大,防止重复显示
    60          }
    61       }
    62    }
    63 })

    系统创建JS的时候是没有attached的,可以自行创建,把直接需要运行的js代码写进去 ;

    而properties和data在运行的时候是合并起来的,不管是用this.data.xxx或者this.properties.xxx都能调用,但是往js里面传值的就要把要传的值提前在properties里面定义类型,无需改变的值可以写在data里面;

    自定义的方法要写在methods里面

    引用页面的json代码:

    1 {
    2    "usingComponents": {
    3       "gonggao":"/com/gonggao/gonggao"
    4    }
    5 }

    这里注意usingComponents里面的格式是"key":"路径",KEY是定义的组件名,路径建议是绝对路径

    引用页面的wxml代码:

    <gonggao text="{{content}}"/>

    这里面的text这个名称要和组件js里面 properties: {text: String,}这个名称做对照  gonggao标签就是在json里面定义的组件名 

    引用页面的js代码:

     1 Page({
     2    /**
     3     * 页面的初始数据
     4     */
     5    data: {
     6       content: "这是一条测试数据 这是一条测试数据 这是一条测试数据 这是一条测试数据"
     7    },
     8 
     9    /**
    10     * 生命周期函数--监听页面加载
    11     */
    12    onLoad: function (options) {
    13 
    14    }
    15 
    16 })
  • 相关阅读:
    优雅的将hbase的数据导入hive表
    大数据技术-spark+hive+hbase研究
    第0001课
    线程池-实际生产使用
    H5学习系列之文件读取API--本文转自http://blog.csdn.net/jackfrued/article/details/8967667
    H5学习系列之Communication API
    H5学习系列之Geolocation API
    H5学习系列之Audio和Video
    H5学习系列之webSocket入门
    百度UEditor基本使用
  • 原文地址:https://www.cnblogs.com/chbyl/p/9746423.html
Copyright © 2020-2023  润新知