首页 > 其他分享 >【Vue】图片拉近、全屏背景实战经验总结

【Vue】图片拉近、全屏背景实战经验总结

时间:2022-10-19 10:47:13浏览次数:58  
标签:flex Vue 盒子 background 元素 height 实战经验 全屏 设置


1 图片拉近

缘起是看到了下面的图片,我发现当鼠标悬浮的时候,发现他是可以拉近的,也就是图片的宽高不变,但是图片被放大了

【Vue】图片拉近、全屏背景实战经验总结_Vue

起初我以为是有一个这样的方法,可以实现这个操作,但是查找了很多网站都没有找到。

后来自己慢慢的摸索,才了解了其中的奥妙

子盒子和父盒子的大小一样大,为了能体现出父子盒子,我让父盒子略大,并未黄色,子盒子为白色

【Vue】图片拉近、全屏背景实战经验总结_图像缩放_02

当鼠标悬浮到该子盒子的时候,子盒子被放大(scale),如下图

【Vue】图片拉近、全屏背景实战经验总结_图像缩放_03

同时,我设置子盒子超出父盒子的部分隐藏(overflow:hidden),这样我只能看到黄色部分,但是图片却被放大了,就看到了最初的效果,图片好像被拉进了

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="mystyle.css"/>
</head>
<body>
<div class="div1">
<img src="../作业2/images/5.jpg" class="div2">
</div>
</body>
<style type="text/css">
.div1{
margin-top: 50px;
margin-left: 50px;
height:400px;
width: 400px;
border: 1px solid red;
overflow: hidden;
}
.div2{
width: 400px;
height: 400px;
background-color: #0000FF;
cursor: pointer;
}
.div2:hover{
transform: scale(2);
}
</style>
</html>

【Vue】图片拉近、全屏背景实战经验总结_html_04

这样似乎太突兀了,我们加一个实现的时间 1s transition: 1s;

【Vue】图片拉近、全屏背景实战经验总结_html_05

这样就舒服多了

写这一篇博客,我发现这个图片功能太简单了。我自己用vue做的时候,用的是@mouseover @mouseout 需要两个方法

让其有1s动画效果的时候,我用的是根据类名获取元素,然后鼠标悬浮的时候给他加上动画的效果。

但是动画的效果默认是不会保存的,间隔一秒后又会回到初始化的状态,所以又加了一句animation-fill-mode:forwards,让其保持动画的状态。

写这篇博客之后,原来只需要几行代码就解决了!

2 全屏背景

<template>
<div id="app">

</div>
</template>

<script>

export default {
name: 'App',
}
</script>

<style>
body {
margin: 0;
background: #e8e8e8 url('@/assets/oprea_background02.png') center bottom;
/* 设置背景图片会不会随着屏幕滚动 */
background-attachment: fixed;
/* 此时会保持图像的纵横比并将图像缩放成将完全覆盖背景定位区域的最小大小。 */
background-size: cover;
/* 去掉好像也没什么 */
display: flex;
/* 设置height:100vh,能够保证元素无论是否有没有内容,高度都等于屏幕高度。 */
min-height: 100vh;
flex-direction: column;
}

</style>

【Vue】图片拉近、全屏背景实战经验总结_图像缩放_06

2.1 background-attachment

background-attachment设置背景图像是否固定或者随着页面的其余部分滚动。

scroll就是说,这个背景图片不是固定的,会随着页面高度的改变而变

fixed意味着,图片是固定的,不会随着页面高度的改变而改变


描述

scroll

背景图片随着页面的滚动而滚动,这是默认的。

fixed

背景图片不会随着页面的滚动而滚动。

local

背景图片会随着元素内容的滚动而滚动。

initial

设置该属性的默认值。

inherit

指定 background-attachment 的设置应该从父元素继承。

2.2 background-size


描述

length

设置背景图片高度和宽度。第一个值设置宽度,第二个值设置的高度。如果只给出一个值,第二个是设置为 auto(自动)

percentage

将计算相对于背景定位区域的百分比。第一个值设置宽度,第二个值设置的高度。如果只给出一个值,第二个是设置为"auto(自动)"

cover

此时会保持图像的纵横比并将图像缩放成将完全覆盖背景定位区域的最小大小。

contain

此时会保持图像的纵横比并将图像缩放成将适合背景定位区域的最大大小。

2.3 display:flex;

弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

弹性容器内包含了一个或多个弹性子元素。

不加display:flex

【Vue】图片拉近、全屏背景实战经验总结_背景图片_07

加上display:flex

【Vue】图片拉近、全屏背景实战经验总结_背景图片_08

还是挺有用的以前一直用,float:left,float:right解决布局,现在又学到了一个方法。

2.4 flex-direction

flex-direction 属性规定灵活项目的方向。

**注意:**如果元素不是弹性盒对象的元素,则 flex-direction 属性不起作用。

本来是按行排序的,flex-direction可以灵活的排序,可以按列排序,也可以按行反着来 一些效果如下:

【Vue】图片拉近、全屏背景实战经验总结_背景图片_09

【Vue】图片拉近、全屏背景实战经验总结_html_10

2.5 100vh

vh就是当前屏幕可见高度的1%,也就是说

height:100vh == height:100%;

但是当元素没有内容时候,设置height:100%,该元素不会被撑开,此时高度为0,

但是设置height:100vh,该元素会被撑开与屏幕高度一致

对比

100%

【Vue】图片拉近、全屏背景实战经验总结_图像缩放_11

100vh

【Vue】图片拉近、全屏背景实战经验总结_html_12

标签:flex,Vue,盒子,background,元素,height,实战经验,全屏,设置
From: https://blog.51cto.com/u_15807146/5764925

相关文章

  • 从0搭建vue3组件库:Shake抖动组件
    先看下效果其实就是个抖动效果组件,实现起来也非常简单。之所以做这样一个组件是为了后面写Form表单的时候会用到它做一个规则校验,比如下面一个简单的登录页面,当点击登录......
  • vue组件通信6种方式总结(常问知识点)
    前言在Vue组件库开发过程中,Vue组件之间的通信一直是一个重要的话题,虽然官方推出的Vuex状态管理方案可以很好的解决组件之间的通信问题,但是在组件库内部使用Vuex往往会......
  • VUE 代码压缩优化
    1、设置productionSourceMap为false如果不需要生产环境的sourcemap,可以将其设置为false以加速生产环境构建。设置为false打包时候不会出现.map文件module.exports......
  • 用Typescript 的方式封装Vue3的表单绑定,支持防抖等功能。
    Vue3的父子组件传值、绑定表单数据、UI库的二次封装、防抖等,想来大家都很熟悉了,本篇介绍一种使用Typescript的方式进行统一的封装的方法。基础使用方法Vue3对于表单的绑......
  • 快速卸载Vue脚手架(vue-cli
    一、卸载vue-cli执行命令:npmuninstallvue-cli-g或者npmunivue-cli-g检查vue-cli卸载成功没执行命令:vue-V出现‘vue’不是内部或外部命令,也不是可运行的程序,代......
  • vue路由传参,query和params的区别
    路由传参是使用vue最常用的方法,而其中query和params都能实现传参效果,不过这两者还是有区别的首先路由配置{path:'/admin',//组件路径name:'admin',//组件别名com......
  • 解决Vue打印el-table不完全的pdf问题
    智能中医项目中的打印报告要新增一项异常检测表格的显示,纸张定为A4纸张竖向打印,在使用el-table后发现,虽然页面中显示无误,但不管怎么样设置table的宽度,打印的pdf中最后一列......
  • vue中页面调用多次组件,会出现组件之间相互影响
    这个大部分发生在echarts和地图中,我们为了节省性能把echarts和map对象没有绑定在vue对象上导致,一个页面多次调用时会出现问题,解决办法:如果确定一个页面调用多次了,就把echa......
  • RuoYi-Vue切换达梦数据库(一)
    一、达梦数据库安装这里使用的达梦8开发版 ,安装过程没什么且包内有说明文档。要注意的点是创建数据库实例时,记得取消勾选字符串比较大小写敏感。二、达梦数据库用户设......
  • RuoYi-Vue切换达梦数据库(二)
    一、JDBC依赖代码部分适配 RuoYi-Vuev3.8.4前后端分离版1、修改admin模块下的pom.xml文件Maven仓库中存在,直接替换注意jdbc包的版本:Dm7JdbcDriver18中7是DM数据库的......