Skip to content
This repository has been archived by the owner on Jun 3, 2021. It is now read-only.

wxc-cell组件里定义的cell-arrow-icon,为什么不把position: absolute样式拿掉 #45

Closed
phoenixsky opened this issue Nov 5, 2017 · 7 comments

Comments

@phoenixsky
Copy link

phoenixsky commented Nov 5, 2017

 .cell-arrow-icon {
    width: 22px;
    height: 22px;
    position: absolute;
    top: 41px;
    right: 24px;
  }

改为

  .cell-arrow-icon {
    width: 22px;
    height: 22px;
  }

这样动态设置cell的高度时,图标还能自动居中.
还是说有别的原因?

@tw93
Copy link
Member

tw93 commented Nov 6, 2017

是当时对很老版本weex的一个兼容,谢谢提醒,我这边下一个版本计划去掉 最新版已经修改

@tw93 tw93 closed this as completed Nov 6, 2017
@phoenixsky
Copy link
Author

phoenixsky commented Nov 6, 2017

插个题外话,在<text>元素中,如果设置了字体为iconfont,如果通过Mustache方式绑定话,x字符会显示为一个类似打印机图标.网上找了原因.

在template中 text写死 &#xe685;时,weex-template-compiler在编译阶段使用了he进行decode,而在template中Mustache进行数据绑定fontName(fontName:"&#xe685;")时不会进行decode

通过引入he模块,he.decode()自己进行解码.
但是导致js包非常大.刚学weex,对前端不太了解.你这边有遇到过么?

@tw93
Copy link
Member

tw93 commented Nov 6, 2017

he 的 encode、encode转换码全部在本地,也是没有办法的,的确很大,我们这边为了减少包体积weex的图标一般会使用cdn形式的图片

@phoenixsky
Copy link
Author

我们app经常在地下室类似没信号的地方使用.导致需要考虑一个离线的情况.无法通过cdn方式.实在不行.我还是走本地加载图片的方式吧.thank you

@hizhengfu
Copy link

@phoenixsky 如果觉得he大可以用String.fromCharCode,这是我字体图标的一个处理。

                if (/^&#x/.test(this.fontCode)) {
                    return String.fromCharCode(this.fontCode.replace(/^&#x/, '0x'))
                } else {
                    return String.fromCharCode('0x' + this.fontCode)
                }

@phoenixsky
Copy link
Author

phoenixsky commented Nov 6, 2017

@hizhengfu 👌. Thank U,
终于解决了这个问题.我顺便把一个文本里有图标和文字都有的情况,也处理了

decode(text) {
        // 正则匹配 图标和文字混排 
        // eg: 我去上学校&#xe600;,天天不&#xe600;迟到
        let regExp = /&#x[a-z]\d{3,4};?/;
        if (regExp.test(text)) {
            return text.replace(new RegExp(regExp, 'g'), function (iconText) {
                let replace = iconText.replace(/&#x/, '0x').replace(/;$/, '');
                return String.fromCharCode(replace);
            });
        } else {
            return text;
        }
    }

@ReedSun
Copy link
Contributor

ReedSun commented Sep 26, 2020

@hizhengfu 👌. Thank U,
终于解决了这个问题.我顺便把一个文本里有图标和文字都有的情况,也处理了

decode(text) {
        // 正则匹配 图标和文字混排 
        // eg: 我去上学校&#xe600;,天天不&#xe600;迟到
        let regExp = /&#x[a-z]\d{3,4};?/;
        if (regExp.test(text)) {
            return text.replace(new RegExp(regExp, 'g'), function (iconText) {
                let replace = iconText.replace(/&#x/, '0x').replace(/;$/, '');
                return String.fromCharCode(replace);
            });
        } else {
            return text;
        }
    }

@phoenixsky 感谢!不过代码里的正则有点问题,不能匹配到类似于 &#xe99f; 这样的内容,我完善了一下。

function decode(value) {
  const regExp = /&#x[a-fA-F\d]{1,4};?/;
  if (regExp.test(value)) {
    return value.replace(new RegExp(regExp, 'g'), iconText => String.fromCharCode(iconText.replace(/&#x/, '0x').replace(/;$/, '')));
  }
  return value;
}

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants