一个丝滑的视频背景网页样式

参考地址:科学上网后点击
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码如下:

<!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>Website with Video Background</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
    <header>
        <a href="#" class="logo">Logo</a>
        <div class="rightSide">
            <div class="btns dayNight">
                <ion-icon name="moon-outline"></ion-icon>
                <ion-icon name="sunny-outline"></ion-icon>
            </div>
            <div class="btns menuToggle">
                <ion-icon name="menu-outline"></ion-icon>
                <ion-icon name="close-outline"></ion-icon>
            </div>


        </div>
    </header>
    <section class='main'>
        <video src="./asset/video.mp4" autoplay loop muted type='mp4'></video>
        <img src='./asset/mask.jpg' class='mask'>
        <h2>Ocean</h2>
    </section>

    <!-- Sidebar Navigation -->
    <ul class="navigation">
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Package</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
    <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
    <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
    <script type="text/javascript" src="./index.js"></script>
</body>
</html>

css:

@import url("https://fonts.googleapis.com/css?family=Poppins:200,300,400,500,600,700,800,900&display=swap");
* {
  margin: 0;
  padding: 0;
  font-family: "Poppins", sans-serif;
}

:root {
  --black: #333;
  --white: #fff;
  height: 100vh;
}
.dark {
  --black: #fff;
  --white: #333;
}
.dark .mask {
  filter: invert(1);
  mix-blend-mode: multiply;
}
header {
  position: absolute;
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 90vw;
  padding: 5vh 5vw;
  z-index: 10000;
}
header .logo {
  position: relative;
  display: inline-block;
  color: var(--black);
  text-decoration: none;
  font-size: 2em;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

header .rightSide {
  display: flex;
}
.btns {
  position: relative;
  width: 40px;
  height: 40px;
  /* background: #ccc; */
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  margin-left: 10px;
}
.btns ion-icon {
  font-size: 1.5em;
  color: var(--black);
}
.btns.menuToggle ion-icon {
  font-size: 3em;
}
.btns ion-icon:nth-child(2) {
  display: none;
}

.btns.active ion-icon:nth-child(2) {
  display: block;
}

.btns.active ion-icon:nth-child(1) {
  display: none;
}

.main {
  position: relative;
  width: 100%;
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.main video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.mask {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  user-select: none;
  mix-blend-mode: screen;
}
.main h2 {
  position: relative;
  z-index: 3;
  font-size: 14vw;
  color: #fff;
  text-shadow: 0 20px 30px rgba(0, 0, 0, 0.2);
}
.navigation {
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  background: var(--white);
  z-index: 4;
  transition: 0.5s;
}
.navigation.active {
  left: 0;
}
.navigation li {
  list-style: none;
}
.navigation li a {
  display: inline-flex;
  margin: 5px 0;
  font-size: 1.35em;
  text-decoration: none;
  color: var(--black);
  padding: 5px 20px;
  border-radius: 40px;
}
.navigation li a:hover {
  background-color: var(--black);
  color: var(--white);
}

js

let dayNight = document.querySelector('.dayNight')
let menuToggle = document.querySelector('.menuToggle')
let body = document.querySelector('body');
let navigation = document.querySelector(".navigation")
console.log('===========')
dayNight.onclick = function () {
    body.classList.toggle('dark')
    dayNight.classList.toggle('active')
    console.log(body.classList)
    console.log(dayNight.classList)

}

menuToggle.onclick = function () {
    menuToggle.classList.toggle('active');
    navigation.classList.toggle('active');
}

一点收获

1、css定义变量
首先:CSS 变量可以有全局或局部作用域。

全局变量可以在整个文档中进行访问/使用,而局部变量只能在声明它的选择器内部使用。

如需创建具有全局作用域的变量,请在 :root 选择器中声明它。 :root 选择器匹配文档的根元素。

如需创建具有局部作用域的变量,请在将要使用它的选择器中声明它。

下面的例子与上面的例子相同,但是在这里我们使用 var() 函数。

首先,我们声明两个全局变量(–blue 和 --white)。然后,我们使用 var() 函数稍后在样式表中插入变量的值:

:root {
  --black: #333;
  --white: #fff;
  height: 100vh;
}
header .logo {
  color: var(--black);
}

2、在css中引入谷歌在线字体库
参考官方文档(http://www.googlefonts.net/english),国内的话记得用国内站。

3、图片样式的filter属性
参考菜鸟教程
这个小案例,用这一属性反转图片,

在这里插入图片描述

.dark .mask {
  filter: invert(1);//1是100%的意思
}

反转后的效果如下:
在这里插入图片描述
4.图片的mix-blend-mode属性
详细介绍参考这篇文章(https://www.zhangxinxu.com/wordpress/2015/05/css3-mix-blend-mode-background-blend-mode/)。

这个案例中用了这两个值:

  • multiply混合后通常颜色会加深,多用在白色背景图片和其他元素的混合,以及彩色纹理的合并上。
  • screen混合后颜色会减淡,非常适合实现霓虹灯光效果,适合黑色背景素材和其他元素混合,非常实用。

1、

.mask {
  mix-blend-mode: screen;
}

在这里插入图片描述
在这里插入图片描述

效果如下:

在这里插入图片描述

2、

.dark .mask {
  mix-blend-mode: multiply;
}

在这里插入图片描述
在这里插入图片描述
效果如下:
在这里插入图片描述

以下是一个使用JavaScript和CSS实现左右滑动的表格示例: ```html <!DOCTYPE html> <html> <head> <title>可左右拖动的表格</title> <style> .table-wrapper { overflow-x: auto; white-space: nowrap; } table { border-collapse: collapse; width: 100%; } th, td { padding: 8px; text-align: left; border-bottom: 1px solid #ddd; } th { background-color: #f2f2f2; } </style> </head> <body> <div class="table-wrapper"> <table> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>城市</th> <th>学历</th> </tr> </thead> <tbody> <tr> <td>张三</td> <td>25</td> <td>男</td> <td>北京</td> <td>本科</td> </tr> <tr> <td>李四</td> <td>30</td> <td>女</td> <td>上海</td> <td>硕士</td> </tr> <tr> <td>王五</td> <td>28</td> <td>男</td> <td>广州</td> <td>本科</td> </tr> <tr> <td>赵六</td> <td>35</td> <td>女</td> <td>深圳</td> <td>博士</td> </tr> </tbody> </table> </div> <script> // 获取表格包裹器和表格 var tableWrapper = document.querySelector('.table-wrapper'); var table = document.querySelector('table'); // 当鼠标在表格上按下时记录位置 var isDown = false; var startX; var scrollLeft; tableWrapper.addEventListener('mousedown', function(e) { isDown = true; startX = e.pageX - tableWrapper.offsetLeft; scrollLeft = tableWrapper.scrollLeft; }); // 当鼠标移动时拖动表格 tableWrapper.addEventListener('mousemove', function(e) { if (!isDown) return; e.preventDefault(); var x = e.pageX - tableWrapper.offsetLeft; var walk = (x - startX) * 3; tableWrapper.scrollLeft = scrollLeft - walk; }); // 当鼠标松开时停止拖动 tableWrapper.addEventListener('mouseup', function() { isDown = false; }); // 当鼠标离开表格时停止拖动 tableWrapper.addEventListener('mouseleave', function() { isDown = false; }); </script> </body> </html> ``` 在这个示例中,我们首先创建了一个table-wrapper类的div元素,用于包裹表格。然后在CSS中设置了表格和单元格的样式,并将table-wrapper元素的overflow-x属性设置为auto,以便在表格宽度超出容器宽度时显示水平滚动条。 接下来,我们使用JavaScript监听table-wrapper元素上的mousedown、mousemove和mouseup事件。当按下鼠标时,我们记录当前鼠标位置和表格包裹器的scrollLeft值。然后在鼠标移动时,我们计算出鼠标相对于起始位置的偏移量,将其乘以一个常数(3)并将结果减去初始的scrollLeft值,以获得新的scrollLeft值。最后,在鼠标松开或离开表格时,我们停止拖动。 这样就可以实现一个可以左右丝滑拖动的表格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值