weex引入iconfont之input的placeholder显示icon

本文探讨了在Weex框架下,如何在输入框的占位符中显示图标。提供了两种方案,一种是在placeholder直接使用iconfont代码,另一种是通过绝对定位实现。详细介绍了每种方法的实现步骤及在iOS和Android平台上的表现。

这是本次开发的设计图,不难看出是在input的placeholder里显示icon。

反正我是第一次遇到,以往搜索框的icon不是放前,就是放后。

 

关于怎么引入iconfont,可以去看我的另一篇weex引入iconfont

因为placeholder也不好插入icon图片,经查阅资料以后提供两种方案。

第一种解决方案:

尝试在placeholder里直接写iconfont的代码,需要通过vue的绑定方式,绑定到placeholder上,原本为的代码要将&#替换成\u。

<!-- 搜索框 iconfont方案 -->
<div class="sm-search">
    <input type="text" class="input iconfont" :placeholder="iconPH" :value="txtInput"/>
</div>
data() {
	return {
	    iconPH: '\ue611 搜索小程序',
	    txtInput: '', // input值
	}
},	

运行结果:

android:

       ios:    

这个方式在ios上是没问题的,但是android却显示不出来,然后我找了很久都没找到原因,放弃了,

如果你们知道,可以留言告诉我,我先换种方式处理。

 

 

第二解决方案:

通过利用绝对定位去展示,搭配@blur和@focus来控制显隐

<!-- 搜索框 定位方案-->
<div class="sm-search">
  <input type="text" class="input" @focus="onfocus" @blur="onblur" @input="onSearchInput" />
  <text class="iconfont input-placeholder" v-if="showPlaceholder">&#xe611; 搜索小程序</text>
</div>
data() {
  return {
	showPlaceholder: true, // input框是否展示placeholder
	txtInput: '', // input值
  }
},
methods: {
	// 获取搜索框输入的值
	onSearchInput(event) {
		this.txtInput = event.value;
	},
	onfocus() {
		this.showPlaceholder = false;
	},
	onblur() {
		if (!this.txtInput) {
			this.showPlaceholder = true;
		}
	},
}

运行结果是ios和android都可以显示出来。

在网页开发中,使用 IconFont 时可能会遇到图标占位但不显示的问题,尤其是在 inputplaceholder、动态绑定内容或跨平台框架(如 Weex、nvue)中使用时更为常见。以下是几种常见场景的解决方案: ### IconFont 占位但不显示的解决方案 #### 1. 在 `input` 的 `placeholder` 中使用 IconFont 直接在 HTML 中插入 Unicode 字符的方式可能不生效,因为浏览器对 `placeholder` 内容的解析方式不同。正确的做法是通过 Vue 的数据绑定方式将 Unicode 字符传入 `placeholder` 属性,例如: ```html <div class="sm-search"> <input type="text" class="input iconfont" :placeholder="iconPH" :value="txtInput" /> </div> ``` ```javascript data() { return { iconPH: '\ue611 搜索小程序', txtInput: '' } } ``` 该方法通过 Vue 的响应式机制绑定 Unicode 字符,确保 `placeholder` 正确渲染图标[^3]。 #### 2. 在 Weex 或 nvue 页面中使用 IconFont Weex 或 nvue 环境中使用 IconFont 时,需确保以下几点: - 使用网络地址引入字体文件,例如阿里图标库提供的 CDN 地址。 - 在 CSS 中正确声明 `@font-face`,并设置 `font-family`。 - 使用 `<text>` 标签包裹图标字符,而不是 `<view>` 或 `<div>`。 - 确保字符使用正确的 Unicode 编码格式,如 `` 或 `\ue60a`。 示例 CSS: ```css @font-face { font-family: 'iconfont'; src: url('https://at.alicdn.com/t/font_1234567890abcdef.eot'); font-weight: normal; font-style: normal; } .iconfont { font-family: 'iconfont'; } ``` HTML 使用: ```html <text class="iconfont"></text> ``` 确保字体文件地址无误且服务器支持跨域访问,否则图标将无法加载[^2]。 #### 3. 使用 CSS 伪类实现图标显示 在支持 CSS3 的环境中,可以通过伪类 `::before` 或 `::after` 动态插入图标内容,避免频繁修改 HTML 结构。例如: ```css .icon { display: inline-block; width: 16px; height: 16px; position: relative; } .icon::after { font-family: 'iconfont'; display: inline-block; content: "i"; width: 16px; height: 16px; margin-left: -16px; } ``` HTML 使用: ```html <span class="icon"></span> ``` 这种方式便于维护和动态切换图标内容,适用于图标频繁变更的场景[^4]。 #### 4. 检查字体文件加载与样式设置 图标不显示的常见原因包括: - 字体文件未正确加载,检查浏览器控制台是否有 404 错误。 - `font-family` 名称与字体文件定义不一致。 - 图标字符未使用正确的 Unicode 编码。 - 没有设置 `font-size` 导致图标过小而不可见。 - 某些平台(如 Weex)对字体文件的支持有限,需确认平台兼容性。 建议使用浏览器开发者工具检查 DOM 元素样式和字体加载状态,确保所有资源正确加载[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值