20240912uniapp学习工作-自定义控件

昨天看到 search 样式,继续.

<template>
	<view class="content">
		<view class="search">
			<input type="text" placeholder="搜索关键字" v-model="key" class="input bg-white font12" />
			<image src="@/static/icon/xxx.png" class="image" @click="clearKey"></image>
			<button class="button font12" @click="search">搜索</button>
		</view>
	</view>
</template>

这句是文本输入,其中 v-model 用于在表单输入元素或组件上创建双向绑定. 是vue的内置指令

<input type="text" placeholder="搜索关键字" v-model="key" class="input bg-white font12" />

创建绑定后,下面脚本中的key发生改变,搜索框中的内容就会跟着改变了.

<script>
	export default {
		name: "custom-search-input",
		data() {
			return {
				key: ''
			};
		},
	}
</script>

下面这句, @是根路径, @click="clearkey" 是 vue 事件处理的监听事件, 我们可以使用 v-on 指令(简写为 @) 来监听 DOM 事件, 并在事件出发时执行对应的 JS.用法: v-on:click="handler" 或 @click="handler". 事件处理器 handler 可以是:

1 内联事件处理器: 事件被处罚时执行的内联 JS 语句(与 onClick 类似)

2 方法事件处理器: 一个指向组件上定义的方法的属性名或是路径.

<image src="@/static/icon/xxx.png" class="image" @click="clearKey"></image>

这里就是指向 script 中定义的 clearkey 方法:

<script>
	export default {
		name: "custom-search-input",
		data() {
			return {
				key: ''
			};
		},
		methods: {
			clearKey() {
				this.key = '';
			},
		}
	}
</script>

class="image" 就是设置样式, absolute 是绝对定位, 元素会被移出正常文档流,并不为元素预留空间, 通过指定元素相对于最近的非 static 定位祖先元素(这里是search)的偏移, 来确定元素位置. 这里设置绝对定位, 才能让image位于input上面. 也就是偏移是相对父元素的, 自然能覆盖在兄弟元素上.

.image {
		position: absolute;
		top: 5px;
		right: 8px;
		width: 22px;
		height: 22px;
	}

至于button, 样式如下,

.button {
		width: 45px;
		height: 26px;
		line-height: 26px;
		padding: 0px;
		border: 1px solid #ff7b0f;
		border-radius: 5px;
		color: #ff7b0f;
		position: absolute;
		top: 3px;
		right: -52px;
	}

其他都容易懂, 只有这个line-height 需要学习一下.

WangMin 写的一篇文章https://www.cnblogs.com/wmbuke/p/17824246.html, 学习一下, 

CSS中的行高(line-height)是指网页中每行文字之间的距离,就是对于同一行内的不同内容,行高决定它们之间的间距。

这第一句就让人有点懵, 既然是行高, 怎么又成了"同一行内的不同内容之间的间距" 了. 我理解应该是同一行块的不同文字行之间的间距.

换一句话来说,在CSS中包括文字的每一行不是只有文字的高度,其实还有上间距、下间距,所以行高指的是文字的高度+上下间距。

换一句话来说,在CSS中包括文字的每一行不是只有文字的高度,其实还有上间距、下间距,所以行高指的是文字的高度+上下间距。

从上面这句看,我理解的应该是对的.

文本中存在有四条线: 顶线、中线、基线、底线

顶线,在中文汉字的顶部位置就是顶线的位置!就是图中绿色线条所在的位置

中线,css中有一个概念叫x-height,意思是小写字母x的高度! 在css中,有些属性值的定义就和这个x-height有关, 最有代表性的就是vertical-align的属性值middle。这里的middle就是中间的意思,指的其实就是基线 往上1/2的位置,也就是小写x字母的中间交叉点那个位置!这里横过小写英文字母x中间交叉点的线就是中线。就是图中蓝色线条所在的位置

基线往上1/2小写x高度的位置就是中线.

基线,要了解基线 ,需要知道在英文中的26个字母当中 ,有一个小写的x字母在CSS中是相当特殊的,基线就是小写x字母的下边缘(线) ! 就是图中红色线条所在的位置

底线,在中文汉字的底部位置 就是底线的位置 !就是图中紫色线条所在的位置

那么从上图中我们就可以看到其实行高 line-height 指的是上下文本行的两条基线之间的距离,即图中两条红线之间的距离。

使用像素单位设置行高是最常见的方法,也是最容易理解的。可以通过以下方式来设定行高

<style>
p{
  font-size: 16px;
  line-height: 32px;
}
</style>

设置行高之前:

设置行高之后:

可以看到每行文字之间明显出现了一定的距离,对比之下,一定是设置行高之后文字看起来更加清晰。

在上述例子中,字体大小font-size为16px,行高line-height为32px,也就是说一行文字的高度为32个像素。用这种方式设置行高时,行高最好是文字大小的2倍。当然这不是强制性的,你可以根据自己的需求来调整。

我们的button, 文字高度12px, button 高度26px, line-height设为26px, 效果如下,

可以看到文字上边距比下边距大, 这里文字之所以没有居中, 是因为 height 指的是包括边框的距离, 而 line-height 设为区域内容高度时才会居中, 所以 line-height = height - border * 2, 这样设置才会居中,比如把 line-height 设为24px, 效果如下

 

到这里, 这个自定义控件就搞明白了.

4点半, 还有一小时下班, 剩点时间继续看看vue吧,

调用函数

可以在绑定的表达式中使用一个组件暴露的方法, toTitleDate() 和 formatDate() 应该就是组件暴露的方法:

<time :title="toTitleDate(date)" :datetime="date">
  {{ formatDate(date) }}
</time>

### 回答1: 好的,我会用中文回答你的问题。 Uniapp 中的 web-view 组件可以用来在小程序中展示网页内容。在 web-view 中播放视频时,如果不希望视频进入全屏横屏模式,可以在网页端的视频标签中加入如下属性来禁止全屏横屏模式: ``` <video playsinline webkit-playsinline> ``` 这样在 web-view 中播放的视频就不会进入全屏横屏模式了。 希望这个回答能帮到你! ### 回答2: uniapp的web-view组件在播放视频时,全屏显示的方式并不是强制横屏模式。在uniapp中,web-view组件是基于WebView技术实现的,它会在应用内嵌一个浏览器窗口,使用此组件可以在页面中加载并显示指定URL的网页内容。 针对web-view组件在播放视频时全屏显示的方式,uniapp并没有提供直接的横屏模式的支持。但是我们可以通过一些额外的方法来实现视频的横屏全屏效果。 一种可能的解决方案是利用uniapp提供的原生插件功能。可以通过编写原生的插件代码,针对特定设备平台进行横屏模式的支持。通过调用原生插件提供的接口,在视频播放时切换为横屏模式,从而实现全屏显示。 另一种可行的方法是通过使用特定的CSS样式来实现全屏显示。在视频播放时,通过添加CSS样式,将web-view组件的宽度和高度设置为100%或者屏幕尺寸的宽度和高度。这样,视频内容将会占据整个屏幕空间,实现全屏显示效果。 需要注意的是,不同设备和浏览器对于web-view组件的支持和显示效果可能会有所差异。因此,在实际开发中,需要对不同设备和平台进行兼容性测试,确保视频全屏显示的效果能够符合预期。 总结起来,uniapp的web-view组件在视频全屏显示方面并不是强制横屏模式,但我们可以通过原生插件或者CSS样式的方式来实现横屏全屏效果。希望以上回答能够对你有所帮助! ### 回答3: 在UniApp中,使用web-view组件嵌入网页中的视频播放器,通常情况下点击全屏按钮会触发视频进入全屏模式,但该全屏模式并非横屏模式。 UniApp的web-view组件是基于系统的WebView实现的,而WebView在移动设备上的全屏模式表现是根据系统的设置和浏览器的支持而定的。在大多数移动浏览器中,进入全屏模式会让网页占据整个屏幕,但并不一定会自动旋转屏幕为横屏模式。 要实现web-view中的视频全屏横屏播放效果,可以考虑以下解决方案: 1. 监听web-view的全屏事件:在进入全屏时,使用uni.hideTabBar()隐藏底部的导航栏,调用uni.setScreenOrientation({orientation: 'landscape'})进行屏幕旋转为横屏模式,同时将web-view的width和height设置为100vw和100vh,使其占满整个屏幕。 2. 自定义视频播放器控件:通过uni.ui或uni.ui-palette自定义视频播放器,在全屏按钮点击时,通过uni.requestFullScreen接口请求全屏模式,并手动旋转屏幕为横屏模式。 需要注意的是,以上方案仅在移动设备上生效,PC端的Web平台对于全屏模式可能有不同的实现方式。另外,不同浏览器对于WebView中的全屏模式支持程度可能不同,建议在开发过程中进行测试和兼容性处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值