图片或视频充当网页背景+过渡动画

这是目前的主页预览图。上一个版本带有学校logo,根据比赛规则,删掉了学校logo。
image.png

图片背景

也就是将图片作为背景。
这个需求产生的场景是:如果直接用img标签显示界面左上角的logo,那么鼠标右键是可以直接选中图片的,也可以通过拖动的方式选中,跟文字一样。
image.png
而对于大多数现代化网页,左上角的logo都是只能点,不能选的。右键显示的也是打开链接,而非打开图片。
image.png
因为要实现一个跳转链接的效果,所以logo需要定义为<a>标签<a class="logo" href="/"></a>
<a>标签属于行内元素,里面可以嵌套块级元素。
但我只想精简的通过一个<a>标签实现logo显示和跳转链接。那么就需要定义成block块级元素。
定义成块级元素的原因包括:

  • 完全控制宽高:行内元素的宽高取决于元素内部嵌套的标签内容,本标签只想显示logo,不想嵌套内容。背景图片填充也需要知道所在容器的宽高。
  • 独立元素:我不希望导航栏的其他元素会和logo重叠,需要占据空间。
.logo {display: block;position: relative;height: 100%;font-size: 39px;width: 44px;background-image: url('@/assets/image/CCCC.png');background-position: left;background-repeat: no-repeat;background-size: contain;
}
  • background-position: left;背景图片靠左显示,其实居中也可以。
  • background-repeat: no-repeat;不重复,只显示一个。
  • background-size: contain;恰好包含在父容器中。不会被裁剪。

为什么已经指定了background-size: contain;还要设置height: 100%;

  • background-size设置的是背景。溢出部分会被隐藏。标签内没有内容,宽高默认都是0。背景图片会全部隐藏,无法显示。

亲测只设置height,不设置width,也可以显示。为什么还要设置宽度?
可以加一个background-color辅助调试。
image.png
目前logo是块级元素,会导致导航栏的剩余内容没有地方存放,因此需要指定宽度。

视频背景

视频背景的思路是,创建一个视频元素,置于底层,静音、自动播放。

<div class="videoBackground"><video autoplay loop muted><source src="@/assets/video/beautifulChicken.mp4" type="video/mp4"></video>
</div>

在图片背景显示logo中,用于显示背景图片的标签直接作为了最外层标签。
但在视频背景中,不能直接将video标签作为最外层标签。
原因包括:

  • 作为视频背景,需要设置宽高为100%。但视频100%可能会溢出父元素,而且是相对窗口大小的溢出。无论多大的窗口,都对多出一段滚动条。需要设置一个与视图大小相同的div标签,设置为overflow: hidden;

代码中各标签及属性的作用:

  • autoplay:自动播放,但可能被拦截。
  • loop:循环播放。
  • muted:静音播放。
  • source:视频源,浏览器会按顺序查找,播放第一个可用的视频源。

image.png
这一段的作用是全屏覆盖。
overflow的作用前面有提到,需要裁剪多余的部分。
z-index的作用是确保视频能显示在最底层。并且显然,右键网页也不会出现视频控件的提示,更好地实现“作为背景”这一需求。
image.png
object-fit是设置填充方案,以下引用自MDN文档:

  • contain:被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比。整个对象在填充盒子的同时保留其长宽比,因此如果宽高比与框的宽高比不匹配,该对象将被添加“黑边”。
  • cover:被替换的内容在保持其宽高比的同时填充元素的整个内容框。如果对象的宽高比与内容框不相匹配,该对象将被剪裁以适应内容框。
  • fill:被替换的内容正好填充元素的内容框。整个对象将完全填充此框。如果对象的宽高比与内容框不相匹配,那么该对象将被拉伸以适应内容框。
  • none:被替换的内容将保持其原有的尺寸。
  • scale-down:内容的尺寸与 none 或 contain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。

组件过渡动画

页面中的文字也有过渡动画,gif原因画质比较差。
PixPin_2024-03-14_21-17-54.gif
动画的原理就是,
编写一个class,描述开始状态。编写一个class,描述结束状态。
默认添加开始状态,要执行动画的时候,添加上结束状态。样式就会切换成结束的样式。
这是在瞬间完成的。要实现动画效果,需要元素样式中添加transition属性,描述动画的:生效范围、持续时长、动画效果。

* {transition: all 0.8s ease-in-out;text-decoration: none;color: #333;
}

这为视图中的每一个元素都添加了过渡动画。
不只是添加类名。即使是拖动窗口大小,如果元素采用了相对定位,也会有一个过渡的动画。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538839.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DirectPV的故事

2020 年&#xff0c;MinIO 为基于 Kubernetes 的 MinIO 存储部署实施了直接持久卷 &#xff08;DirectPV&#xff09;。DirectPV 类似于 LocalPV&#xff0c;但动态预配。 在这篇文章中&#xff0c;我将介绍创建 DirectPV 的有趣设计决策。但在深入了解设计细节之前&#xff0c…

Logseq电脑端+安卓端同步gitee或github

文章目录 0.初衷1.电脑端1.1 新建仓库1.2 克隆项目&#xff0c;生成秘钥1.3 添加图谱&#xff0c;选择文件目录&#xff0c;我是原本就有笔记&#xff0c;所以会如下所示。1.4 下载脚本文件1.5赋权限 &#xff08;windows可跳过&#xff09;1.6 修改脚本命令1.7 logseq设置同步…

es 聚合操作(二)

书接上文&#xff0c;示例数据在上一篇&#xff0c;这里就不展示了 一、Pipeline Aggregation 支持对聚合分析的结果&#xff0c;再次进行聚合分析。 Pipeline 的分析结果会输出到原结果中&#xff0c;根据位置的不同&#xff0c;分为两类&#xff1a; Sibling - 结果和现有…

CentOS无法解析部分网站(域名)

我正在安装helm软件&#xff0c;参考官方文档&#xff0c;要求下载 get-helm-3 这个文件。 但是我执行该条命令后&#xff0c;报错 连接被拒绝&#xff1a; curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 # curl: (7) Fai…

2.MongoDB与关系数据库对比

MongoDB的简单操作与比较 与关系数据库对比 MySQL与MongoDB都是开源的常用数据库&#xff0c;但是MySQL是传统的关系型数据库&#xff0c;MongoDB则是非关系型数据库&#xff0c;也叫文档型数据库&#xff0c;是一种NoSQL的数据库。它们各有各的优点&#xff0c;来看看他们之…

两个高斯分布的KL散度绘制动画

KL散度 KL散度用于衡量两个变量分布之间的差异性 K L ( P ∣ ∣ Q ) ∫ − ∞ ∞ p ( x ) log ⁡ p ( x ) q ( x ) d x (1) KL(P\ ||\ Q)\int_{-\infty}^{\infty}p(x)\log\frac{p(x)}{q(x)}dx\tag{1} KL(P ∣∣ Q)∫−∞∞​p(x)logq(x)p(x)​dx(1) P、Q为随机变量X的两个概…

经典数组和指针笔试题解析——C语言

【本节内容】 1. 数组和指针笔试题解析 2. 指针运算笔试题解析 1. 数组和指针笔试题解析 1.1 一维数组 #include <stdio.h> int main() {int a[] { 1,2,3,4 };printf("%zd\n", sizeof(a));printf("%zd\n", sizeof(a 0));printf("%zd\n&qu…

Docker常见指令

1.docker search mysql &#xff1a;从docker镜像仓库搜索和mysql有关的镜像 docker search mysql 2.docker pull mysql &#xff1a;从docker仓库拉取mysql镜像 docker pull mysql 3.docker run mysql &#xff1a;启动mysql镜像 docker run mysql 4.docker ps &#xff…

消除PyCharm的黄色波浪线和右侧黄色短线

旧版pycharm看这个链接&#xff1a;https://blog.csdn.net/weixin_39450145/article/details/113574921 新版pycharm往下看 消除代码中的黄色波浪线&#xff1a;在设置&#xff0c;编辑器&#xff0c;配色方案&#xff0c;常规里面。然后选择错误和警告。 消除右侧黄色短线&am…

msfconsole数据库连接不了的问题【已解决】

msfconsole数据库连接 1.msf数据库端口 msf使用的是postgresql&#xff0c;这个数据库默认端口是5432 单个模块的使用可以不需要数据库&#xff0c;但是模块与模块之间需要沟通的时候就会用到数据库。 2.查看msf数据库连接状态 db_status #msf内部查看systemctl status p…

想零基础转行Python开发,怎么学习呢?

转行零基础学Python编程开发难度大吗&#xff1f;从哪学起&#xff1f;近期很多小伙伴问我&#xff0c;如果自己转行学习Python&#xff0c;完全0基础能否学会呢&#xff1f;Python的难度到底有多大&#xff1f;今天&#xff0c;小编就来为大家详细解读一下这个问题。 学习 Py…

MySQL:概念简章

1.SQL通用语法 SQL单行、多行书写&#xff0c;以分号结尾SQL可以以空格有缩进增加代码可读性SQL语句不区分大小写 2.SQL语句分类 2.1 DDL&#xff08;数据定义语言&#xff09; 用于数据库、数据表、字段的定义的语言 create by 表名 &#xff08;表里有什么字段&#xff09;…