收藏
回答

iPhone真机运行wxss不能获取到内联设置的变量,模拟器,安卓真机就没问题


这里在iPhone中不能获取到margin-left的值啊!!!怎么办,那个值是动态的,但是在模拟器上就没问题,我用的0913版本,最新的基础库

回答关注问题邀请回答
收藏

13 个回答

  • Zzz
    Zzz
    2017-09-25

    机型的话,iPhone真机测试了5s,6s都不行,安卓没问题,问题应该在@keyframes这里的变量获取不到,微信版本是6.5.13

    2017-09-25
    有用
    回复
  • Zzz
    Zzz
    2017-09-25

    wxml

    <view class="marquee_container" style="--marqueeWidth--:{{-marquee.width}}em">
        <view class="marquee_text">{{marquee.text}}</view>

    </view>

    --marqueeWidth是给@keyframes传的变量


    wxss:

    @keyframes around {

    from {

    margin-left: 100%;

    }

    to {

    margin-left: var(--marqueeWidth--);

    }

    }

    .marquee_container {

    background-color: #0099FF;

    font-size: 30rpx;

    height: 2.2em;

    position: relative;

    width: 424rpx;

    margin-top: 55rpx;

    overflow: hidden;

    }


    .marquee_text {

    position: relative;

    width: 100%;

    height: 2.2em;

    display: inline-block;

    white-space: nowrap;

    animation-name: around;

    animation-duration: 5s;

    animation-iteration-count: infinite;

    animation-timing-function: linear;

    }


    .js

    data:{

    // 文字滚动

    marquee: { text: '哈哈哈哈哈哈哈哈!2哈哈哈哈哈哈哈!3哈哈哈哈哈哈哈哈哈哈哈哈!' },

    // 文字滚动

    }

    // 文字滚动

    getWidth: (str) => {

    return [].reduce.call(str, (pre, cur, index, arr) => {

    if (str.charCodeAt(index) > 255) {// charCode大于255是汉字

    pre++;

    } else {

    pre += 0.5;

    }

    return pre;

    }, 0);

    },

    getDuration: (str) => {// 保留,根据文字长度设置时间

    return this.getWidth() / 10;

    },

    // 文字滚动

    onLoad: function () {


    // 文字滚动

    const str = this.data.marquee.text;

    const width = this.getWidth(str);

    // console.log('width', width);

    this.setData({

    [`${'marquee'}.width`]: width

    });

    // 文字滚动

    },


    2017-09-25
    有用
    回复
  • Zzz
    Zzz
    2017-09-25

    @官方

    2017-09-25
    有用
    回复

正在加载...

登录 后发表内容