Vue Element UI 之背景图自适应屏幕(多种方法分析,含可取不可取)


需求说明:背景图的 图片高度过高,需要根据设备宽高动态显示图片大小, 多余部分剪掉 / 不显示

尝试以下方法:

一、通过 CSS:background-image

方法一尝试:background-position: 0 0;

不足:需要给div一个固定的高度,不能实现动态高度

/* 需要加背景的div */
.register{
    width: 100%;
	height: 1060px; /* 固定高度 */
	background-image: url(../assets/img/bg1.png);
	background-position: 0 0;
	background-repeat: no-repeat;
}

(OK)方法二尝试:background-size: cover;【可采用】

效果分析:当设备宽高比例和图片宽高比例一致时,图片能够实现自适应;当设备宽高比例和图片宽高比例不一致时,图片中多出部分将不显示。因此可以自适应PC端,但是无法自适应移动端和 iPad

注意:使用 background-size: cover; 时需要带 position: absolute;

.img_box{
	width: 100%;height: 100%;
	background-image: url(../assets/img/bg01.png);
	background-size: cover; /* 使图片平铺满整个浏览器(从宽和高的最大需求方面来满足,会使某些部分无法显示在区域中) */
	position: absolute; /* 不可缺少 */
	z-index: -1;
	background-repeat: no-repeat;
	/* overflow: hidden; */
	/* overflow: auto; */
}
/* 注释部分要不要都一样 */

效果图:宽高比例相同

宽高比例不同:

二、通过 img 标签

(OK)思路 1、img标签动态绑定宽度(:width=“fullWidth”)【可采用,较好】

图片存在的问题:所选的图片宽度撑满时高度溢出,高度撑满时宽度不够

不足1:如果只设置动态获取的高度值,不设置宽度值,可想而知,图片宽度是无法铺满屏幕的,会出现留白部分
不足2:若是同时给图片宽度值,会使图片损失原有比例(因为强制了宽高),如果宽度相差不多的话,损失便不是很明显,没有强迫症或者严格要求也是可以采用的

目前找到的比较好的处理办法是:设置动态宽度 + position:fixed

/* 父级 register 设置动态宽高自适应屏幕大小 */
<div class="register" :height="fullHeight" :width="fullWidth">
	<div class="img_box">
		<img src="../assets/img/bg01.png" :width="fullWidth" />
	</div>
</div>
img{
	position: fixed; /* 添加 position,让图片不随滚动条滚动 */
}

动态获取设备宽高的代码:

data(){
    return{
        fullWidth:document.documentElement.clientWidth
    }
},
created(){
    window.addEventListener('resize', this.handleResize)
},
beforeDestroy: function () {
    window.removeEventListener('resize', this.handleResize)
},
methods: {
    handleResize (event) {
        this.fullWidth = document.documentElement.clientWidth
    }
}  

效果图:

—————————————— 》》有不足的效果展示《《——————————————

/* 同时设置宽高 */
<img src="../assets/img/bg1.png" width="90%" :height="fullHeight" />

效果图:图片损失了原有比例(因为强制了宽高)

/* 只设置动态高度 */
<img src="../assets/img/bg1.png" :height="fullHeight" />

效果图:宽度不足有空白区

/* 只设置动态宽度 */
<img src="../assets/img/bg1.png" :width="fullWidth" />

效果图:高度溢出,出现滚动条

——————————————》》展示结束《《——————————————

思路 2、在动态绑定宽度(:width=“fullWidth”)之后,想方法剪掉多余的高度
方法1、给图片设置clip和position

不足:rect 的参数只有给设置固定值的时候才有效,动态宽高剪切无法实现
特点:position会使得其脱离文档流

方法2、给img父级设置宽高和overflow【在设置固定值下,效果可采用】

overflow:hidden;
不足:只有给父级设置固定高度的时候才有效,动态高度无法实现

这里就不放效果图了

思路 3、给图片加一个父级div,并进行以下设置【否定】

不足:背景图宽高无法同时达到要求,不能自适应PC端,亦不自适应 iPad 和 移动端

.img_box{
	width: 100%;height: 100%;
	position: absolute;
	left: 0;top: 0;
	z-index: -1;
}
img{
	height: 100%;
	left: 0;top: 0;
}

效果:宽高不能统一(宽度足够时,高度溢出;高度足够时,宽度不足),这里就不放图了

———————————————————— 手动分割线 ————————————————————

《 附上background-size的用法 》

background-size 可以取以下的值:

  • length:设置背景图像的高度和宽度,接收两个值。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值会被设置为 “auto”。auto 即为默认,按照图片比例跟随相应的宽度/高度

  • percentage:以父元素的百分比来设置背景图像的宽度和高度。第一个值设置宽度,第二个值设置高度。如果只设置一个值,则第二个值会被设置为 “auto”。

  • cover :把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中。
    简言之,使图片平铺满整个浏览器(从宽和高的最大需求方面来满足,会使某些部分无法显示在区域中)

  • contain:把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。(当浏览器宽度/高度大于图片时,将会出现空白区域)

### 回答1: Vue Element UI可以通过使用响应式布局和弹性盒子布局来实现自适应屏幕。这意味着UI组件可以根据屏幕大小和设备类型自动调整大小和位置,以适应同的屏幕分辨率和设备类型。此外,Vue Element UI还提供了一些响应式工具和组件,如栅格系统和响应式图像,以帮助开发人员更轻松地实现自适应屏幕。 ### 回答2: 随着智能手机的普及,移动设备成为人们日常生活中必可少的工具。在这个现代化快节奏的社会中,web应用程序的多平台展示已经成为一项必须要考虑的因素。针对这个问题,vue element ui中有很多方便的工具可以帮助开发者快速实现自适应屏幕的功能。 首先,vue element ui提供了响应式布局系统。在同的显示设备上展示各种同大小和分辨率的屏幕,我们需要一个方便的布局系统来确保我们的用户界面在所有情况下都得到了良好的呈现,响应式布局正好就是为此而生的。使用vue element ui的响应式布局,您可以轻松地管理对同设备宽度和高度的同响应,使页面始终保持适当的显示效果。 另外,vue element ui还提供了一个主题定制器。通过使用定制器,您可以为您的应用程序创建自己的独特主题样式表,以匹配您的品牌和界面风格,从而增强用户体验。主题定制器能够定义页面中的各个元素的样式,包括大小、颜色、边框、图标等等。仅如此,vue element ui的主题定制器还提供了预定义的主题可供选择,所以您可以快速地开发出符合自己品牌风格的页面。 在移动设备上,往往会遇到诸如屏幕翻转等问题。因此,vue element ui提供了针对移动端开发的常见问题解决方案。比如,鼠标事件就再适用于手机应用,因此各种触摸事件(如swipe、tap等)成为了编程员必备的知识。vue element ui的移动端方案包括了许多移动设备常用的组件,如下拉刷新、上拉加载、标签页、轮播图等等组件,支持多种移动平台,包括iOS、Android、Windows Phone等系统。 综上所述,利用vue element ui自适应屏幕方案,可以轻松地应对同的设备、分辨率、操作系统等等因素,帮助您的应用程序在任何平台上都能够优雅地展示。对于想要开发响应式、移动友好并且符合品牌特色的用户界面的开发人员来说,vue element ui无疑是一个强大的选择。 ### 回答3: Vue Element UI是一种基于Vue.js的框架,用于创建交互式用户界面。该框架集成了Element UI库,这是一组基于Vue.js的组件库,帮助开发人员轻松构建美观且高度可定制化的用户界面。 在移动时代,自适应屏幕已经成为了前端开发必可少的要素。Vue Element UI也提供了一些自适应屏幕的方案,帮助开发人员实现在同设备上的优美显示。 首先,Vue Element UI提供了基于响应式设计的栅格系统。使用栅格系统,可以将页面分为12列,并指定每个列的宽度。这样,页面将自适应地调整布局和元素的大小,并调整以确保在所有设备上都有良好的表现。 其次,Vue Element UI库还提供了一个组件,即“响应式斑马条”,可以帮助您在跨设备时自适应地显示页面,为用户提供更好的体验。通过对同元素的自适应调整,可以确保在屏幕较窄的设备上该组件能够正常显示。 最后,Vue Element UI还提供了响应式断点提示,帮助开发人员更好地检查页面的自适应效果。在调试过程中,可以通过设置同的响应断点来查看页面在同设备上的表现,并进行必要的调整。 总之,在现代Web开发中,自适应屏幕已经成为了一种基本技能。Vue Element UI提供了丰富的工具和组件,可帮助您在设计和开发响应式页面时更加简单和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值