|
|

楼主 |
发表于 2024-1-16 08:39
|
显示全部楼层
帖子代码
- <style>
- #mydiv {
- margin: 0 0 0 calc(50% - 631px);
- width: 1100px;
- position: relative;
- height: 734px;
- box-shadow: inset 0 0 60px lightblue, 3px 3px 12px gray;
- background: url('https://638183.freep.cn/638183/t24/jpg/01.jpg') no-repeat center/cover;
- overflow: hidden;
- z-index: 1;
- }
- #vid {
- position: absolute;
- width: 100%;
- height: calc(100% + 64px);
- bottom: -64px;
- object-fit: cover;
- opacity: .5;
- mix-blend-mode: screen;
- transform: rotateX(180deg);
- pointer-events: none;
- }
- #mypic {
- position: absolute;
- left: 10px;
- top: 10px;
- width: 200px;
- height: 200px;
- filter: opacity(.75) hue-rotate(60deg) invert(80%);
- transition: filter 1s;
- cursor: pointer;
- animation: rot 5s infinite linear var(--state);
- }
- #mypic:hover { filter: unset; }
- @keyframes rot {
- to { transform: rotate(1turn); }
- }
- </style>
- <div id="mydiv">
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1481218602" autoplay loop></audio>
- <video id="vid" src="https://img.tukuppt.com/video_show/2418175/00/02/20/5b51ff7192d45.mp4" loop></video>
- <img id="mypic" src="https://638183.freep.cn/638183/t23/btn/001.png" alt="" />
- </div>
- <script>
- (function() {
- let mState = () => {
- aud.paused ? (mypic.style.setProperty('--state','paused'), vid.pause()) : (mypic.style.setProperty('--state','running'), vid.play());
- };
- aud.addEventListener('playing', mState, false);
- aud.addEventListener('pause', mState, false);
- mypic.onclick = () => aud.paused ? aud.play() : aud.pause();
- })();
- </script>
复制代码 结构:(帖子元素)底图+视频背景+图片按钮
帖子元素使用的 inset 内阴影,是为了配合整体色彩效果,盒子四周有雾化凝结的感觉,用以烘托氛围。
视频绝对定位、上下倒转,尺寸在100%基础上高度+64px并下移64px,同时禁用鼠标事件。此外,object-fit: cover; 是视频铺满帖子的关键设置(但可能会对个别视频无效);fix-blend-mode滤镜是为了去其背景,此时不必使用opacity属性令其透明。
图片按钮通过CSS系列滤镜营造奇特外观,令其主色系与帖子整体效果配套。它可以回归本我:鼠标滑过是,解除所有滤镜。
|
评分
-
| 参与人数 1 | 威望 +50 |
金钱 +100 |
经验 +50 |
收起
理由
|
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|