CSS & JS Effect – Hero Banner Swiper
效果

重点
1. 一张图片, 一个 content 定位居中作为一个 slide
2. slider 用了 JavaScript Library – Swiper
3. 当 slide active 的时候做一个 animation 把 content 划出来.
Swiper & Layout
HTML
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="../images/hero-banner-1.jpg" />
<h1>Reliable Air Conditioning</h1>
<h2>Installation, Services & Repair</h2>
<p>100% Satisfaction Guarantee With Everything Thing We Do!</p>
<a href="#">Get an Estimate</a>
</div>
</div>
</div>
.swiper > .swiper-wrapper > .swiper-slide 是 swiper 的布局.
内容是 img 和 4 个行 text
效果

在没有任何 CSS 情况下, swiper 的 height 是 hug content.
Set Dimension
.swiper {
height: 50vh;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
让 swiper 控制高度, 里面的图片 follow
Set Position
<div class="swiper-slide">
<img src="../images/hero-banner-1.jpg" />
<div class="content-container">
<div class="content">
<h1>Reliable Air Conditioning</h1>
<h2>Installation, Services & Repair</h2>
<p>100% Satisfaction Guarantee With Everything Thing We Do!</p>
<a href="#">Get an Estimate</a>
</div>
</div>
</div>
加上 content-container 和 content 把内容 wrap 起来, 然后 CSS 定位 aligh
.swiper {
position: relative;
.content-container {
position: absolute;
inset: 0;
max-width: 1024px;
margin-inline: auto;
display: flex;
align-items: center;
}
}
点缀 CSS

.swiper {
.content-container {
.content {
display: flex;
flex-direction: column;
gap: 1rem;
h1 {
line-height: 1;
letter-spacing: 0;
color: #003056;
font-size: 4rem;
font-weight: 100;
}
h2 {
line-height: 1;
color: #003056;
font-size: 2.5rem;
}
a {
display: inline-block;
padding: 1rem 1.5rem;
text-transform: uppercase;
background-color: hsl(195, 100%, 43%);
color: white;
align-self: flex-start;
text-decoration: none;
border-radius: 4px;
}
}
}
}
效果

到这里就有一个型了, 剩下的就是 animation 了.
Animation

放慢来看, 它的 animation 是字从下面划出来. 大概像上面这样.
做 wrapper
要实现这个效果, 首先要把内容藏起来

为每个 text 做一个 wrapper, overflow-y: hidden, 然后让内容 translateY 100%, 内容就完全藏起来了, 待会交出来就可以了.
.wrapper {
transition: transform 0.4s 0.2s;
transform: translateY(50%);
overflow-y: hidden;
* {
transition: transform 0.4s 0.2s;
transform: translateY(100%);
}
}
wrapper 也设置一个 transition, 这样一起动效果更好哦.
.swiper-slide-active
当 slide active 的时候, swiper 会给一个 swiper-slide-active class, 借助这个 class 就可以设置让内容出现了.
.swiper {
.swiper-slide-active .content-container .content .wrapper {
transform: initial;
* {
transform: initial;
}
}
}
完整代码
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Simple Test (Webpack)</title>
</head>
<body>
<header>Header</header>
<main>
<section class="hero-banner-section">
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="../images/hero-banner-1.jpg" />
<div class="content-container">
<div class="content">
<div class="wrapper">
<h1>Reliable Air Conditioning</h1>
</div>
<div class="wrapper">
<h2>Installation, Services & Repair</h2>
</div>
<div class="wrapper">
<p>100% Satisfaction Guarantee With Everything Thing We Do!</p>
</div>
<div class="wrapper">
<a href="#">Get an Estimate</a>
</div>
</div>
</div>
</div>
<div class="swiper-slide">
<img src="../images/hero-banner-2.jpg" />
<div class="content-container">
<div class="content">
<div class="wrapper">
<h1>Reliable Air Conditioning</h1>
</div>
<div class="wrapper">
<h2>Installation, Services & Repair</h2>
</div>
<div class="wrapper">
<p>100% Satisfaction Guarantee With Everything Thing We Do!</p>
</div>
<div class="wrapper">
<a href="#">Get an Estimate</a>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</section>
</main>
</body>
</html>
CSS Style

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
img,
svg {
display: block;
}
header {
height: 225px;
display: flex;
justify-content: center;
align-items: center;
font-size: 32px;
background-color: pink;
}
.swiper {
height: 400px;
.swiper-slide {
img {
width: 100%;
height: 100%;
object-fit: cover;
}
position: relative;
.content-container {
position: absolute;
inset: 0;
max-width: 1024px;
margin-inline: auto;
display: flex;
align-items: center;
.content {
display: flex;
flex-direction: column;
gap: 1rem;
.wrapper {
transition: transform 0.4s 0.2s;
transform: translateY(50%);
overflow-y: hidden;
* {
transition: transform 0.4s 0.2s;
transform: translateY(100%);
}
}
h1 {
line-height: 1;
letter-spacing: 0;
color: #003056;
font-size: 4rem;
font-weight: 100;
}
h2 {
line-height: 1;
color: #003056;
font-size: 2.5rem;
}
a {
display: inline-block;
padding: 1rem 1.5rem;
text-transform: uppercase;
background-color: hsl(195, 100%, 43%);
color: white;
align-self: flex-start;
text-decoration: none;
border-radius: 4px;
}
}
}
&.swiper-slide-active {
.content-container .content .wrapper {
transform: initial;
* {
transform: initial;
}
}
}
}
}
JavaScript

import './home.scss';
import Swiper, { Navigation } from 'swiper';
import 'swiper/css';
import 'swiper/css/navigation';
new Swiper('.swiper', {
modules: [Navigation],
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
CSS & JS Effect – Hero Banner Swiper的更多相关文章
- css&js实现顶部banner滚动提示效果
以一个小例子来展示滚动提示的代码部分: try.html <div id="scrollobj" > <span class="scrollTxt&qu ...
- html+css+js实现类似音乐app似的列表播放
最近做了一个类似于音乐app里面列表播放的功能,主要是音频播放和按钮状态的联动: 界面如下: 如上图所示 上面有一个播放按钮 下面有一个播放列表 上面还有一个歌曲长度的总时长 上面一个按钮能控制下面所 ...
- HTML/CSS/JS编码规范
最近整理了一份HTML/CSS/JS编码规范,供大家参考.目录:一.HTML编码规范二.CSS编码规范三.JS编码规范 一.HTML编码规范 1. img标签要写alt属性 根据W3C标准,img标签 ...
- 前端小白页面开发注意事项及小工具(html\css\js)
技术一直在向前发展.但是有一些是相通的,要找准重点,将80%的时间放在提升基础问题上,余下的20%再去学习框架,库和工具. HTML 1. HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读 ...
- 用原生js来写一个swiper滑块插件
是不是有点印象了,没错,他的最基本的用法就是左右滑动,插件使用者只需要写几行简单的html和js即可实现一个简单滑动效果,不过你完全可以组合各种元素来适应不同的场景. 当然插件我已经写好了,咱 ...
- CSS & JS 制作滚动幻灯片
==================纯CSS方式==================== <!DOCTYPE html> <html> <head> <met ...
- 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决
Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty ...
- Css Js Loader For Zencart
Css Js Loader 描述:这个插件很早就出来了,可能知道人非常少 这个插件的功能是整合所有的网站的CSS和JS内容到一个文件里边. 因为CSS和JS文件到了一个文件,加快了程序的运行 在配合其 ...
- 购物车数字加减按钮HTML+CSS+JS(有需要嫌麻烦的小伙伴拿走不谢)
之前在写详情页的时候,如下图 因为自己嫌麻烦,就去看其他网站是怎么写的,想直接拿来用,后来看来看去觉得写得很麻烦,于是最后还是决定自己写,附上HTML+CSS+JS代码,一条龙一站式贴心服务2333 ...
- vs合并压缩css,js插件——Bundler & Minifier
之前做了一个大转盘的抽奖活动,因为比较火,部分用户反馈看不到页面的情况,我怀疑js加载请求过慢导致,所以今天针对之前的一个页面进行调试优化. 首先想到的是对页面的js和css进行压缩优化,百度了下vs ...
随机推荐
- 也说一说IDEA热部署Web项目最终解决方案,确实大大提高工作效率
热部署就是正在运行状态的应用,修改了它的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效.热部署为了解决的问题有两个: 1.在开发的时候,修改代码后不需要重启应用 ...
- PN转232网关模块接扫码枪与CPU通讯
在现代物流.汽车生产线等领域,广泛使用条码扫码枪快速扫描产品条码,提高工作效率.为了保证条码扫码枪与CPU之间的准确通信,PN转232网关模块成为关键部件.本文将深入研究PN转232网关模块(BT-P ...
- C# RSA加密解密及RSA签名和验证
1.RSA加密解密 (1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)加密 (3)解密 2.RSA签名和验证 (1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上 ...
- Odoo 自定义form表单按钮点击事件处理程序
实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 方案1 通过研究发现,点击odoo form表单按钮时,会调用odoo14\odoo\addons\w ...
- SEO初学指南之关键词研究(2) - 搜索意图分析
Hi,我是听风.这篇文章我们深入探讨下关键词研究中最重要的一点:搜索意图. 虽然这在本系列教程的第一篇中提到过搜索意图,但是我还是想再写一篇文章来帮助你们了解什么是搜索意图以及如何再关键词研究中使用它 ...
- RHCA rh442 008 oom 故障触发器 内存溢出 swap numa tmpfs shm
OOM out-of-memory killer 进程被莫名其妙杀死 所有内存加swap为活动 zone_normal 没空间 (目前64G时代可以不考虑这个) 溢出就死机 内存溢出前,去杀死进程 因 ...
- wordpress站点转移
title: wordpress站点转移 date: 2024/7/13 11:11:11 tag: linux学习 categories: wordpress建设 description: 搭建后的 ...
- 【郝斌C ST】02
自学视频<郝斌C语言自学教程> 10: https://www.bilibili.com/video/BV1os411h77o C语言大纲 - 1.简介 - 2.基本编译知识 - 3.数据 ...
- vue&element项目实战 之api模块化与公共字典
4.api模块化配置 步骤一:编写字典api即dic.js import request from '@/utils/request' // 查询字典列表 export const getDicLis ...
- 单链表-18个基本操作代码实现C语言
单链表-18个基本操作代码实现C语言 原文地址:https://www.cnblogs.com/actanble/p/6713434.html 无更改,仅复现 运行后如图,运行软件dev-C++,系统 ...