html+js+css练手小项目

文章目录

  • 练手小项目
    • 前言
    • 1.多轮播图
      • 1.1 效果展示
      • 1.2 实现思路
        • 1.2.1 三张轮播图
        • 1.2.2 左侧轮播图
      • 1.2.3 右侧轮播图
      • 1.2.4 整体结合
    • 2.图片变色
        • 2.1 效果展示
        • 2.2 实现

练手小项目

☀️作者简介:大家好我是言不及行yyds
🐋个人主页:言不及行yyds的CSDN博客
🎁系列专栏:【前端】

前言

今天给大家带来两个练手小项目

  • 多轮播图
  • 图片变色

1.多轮播图

1.1 效果展示

多轮播图

请添加图片描述

1.2 实现思路

实现该小项目主要有三块内容

  • 三张图片依次从上而下展示
  • 左侧轮播图
  • 右侧轮播图
1.2.1 三张轮播图

实现思路:

  • 三张图片一行排列,最外面的盒子设置position: relative;
  • 为每张图片设置position: absolute; top: -100%
  • 设置不同的左偏移量
  • 通过animation实现由 top:-100%到top:0%;

html部分

 <div class="content">........<div class="first" id="first"><img src="./images/1.jfif" class="firstImg1"><img src="./images/2.jfif" class="firstImg2"><img src="./images/3.jfif" class="firstImg3"></div></div>

css 部分

.content{width:1200px;height:530px;margin:150px auto;
}
.first{width:1200px;height:530px;display:flex;position: relative;
}
.first img{width:300px;height:530px;
}.firstImg1{position: absolute; top: -100%; left:0;animation: img1 2s forwards; 
}.firstImg2{position: absolute; top: -100%; left:300px;animation: img1 4s forwards; 
}.firstImg3{position: absolute; top: -100%; left:600px;animation: img1 5s forwards; 
}@keyframes img1{from{top:-100%;}to{top:0;}
}
1.2.2 左侧轮播图

实现思路:通过设置img的src来展示不同的图片

html部分

<div class="content"><div class="imgs" id="imgs"><div class="left"><img src="./images/1.jfif" id="left"></div>......</div>......</div>

js部分

let LeftImgs=document.getElementById('left')
let LeftNth=2
let LeftIndex=0
function handelLeft(){let timeIr=nullclearInterval(timeIr)timeIr=setInterval(() => {LeftIndex+=1if(LeftIndex > LeftNth){LeftIndex=0LeftImgs.src=`./images/1.jfif`}else{LeftImgs.src=`./images/${LeftIndex+1}.jfif`}}, 5000);
}
handelLeft()

css

.imgs{width:1200px;height:530px;display: flex;
}
.left{width:300px;height:100%;
}
.left img{width:300px;position: absolute;
}

1.2.3 右侧轮播图

html部分

<div class="content"><div class="imgs" id="imgs">.....<div class="right"><img src="./images/2-1.jfif" id="right"></div></div>......</div>

css部分

.right{width:900px;height:530px;
}
.right img{width:900px;height:530px;position: absolute;animation: imgChange 1s infinite;
}

js部分

function handelRight(){let timeIr=nullclearInterval(timeIr)timeIr=setInterval(() => {RightIndex+=1if(RightIndex > RightNth){RightIndex=0RightImgs.src=`./images/2-1.jfif`}else{RightImgs.src=`./images/2-${RightIndex+1}.jfif`}}, 1000);
}

1.2.4 整体结合

初始状态: display 三张图片 :block 左右轮播图none
一段时间后: display 三张图片 :none 左右轮播图block
全部代码如下

html 部分

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./index.css">
</head>
<body><div class="content"><div class="imgs" id="imgs"><div class="left"><img src="./images/1.jfif" id="left"></div><div class="right"><img src="./images/2-1.jfif" id="right"></div></div><div class="first" id="first"><img src="./images/1.jfif" class="firstImg1"><img src="./images/2.jfif" class="firstImg2"><img src="./images/3.jfif" class="firstImg3"></div></div><script src="./1.js"></script>
</body>

css 部分

.content{width:1200px;height:530px;margin:150px auto;
}
.imgs{width:1200px;height:530px;display: flex;
}
.left{width:300px;height:100%;
}
.left img{width:300px;position: absolute;
}
.right{width:900px;height:530px;
}
.right img{width:900px;height:530px;position: absolute;animation: imgChange 1s infinite;
}
.first{width:1200px;height:530px;display:flex;position: relative;
}
.first img{width:300px;height:530px;
}.firstImg1{position: absolute; top: -100%; left:0;animation: img1 2s forwards; 
}.firstImg2{position: absolute; top: -100%; left:300px;animation: img1 4s forwards; 
}.firstImg3{position: absolute; top: -100%; left:600px;animation: img1 5s forwards; 
}@keyframes img1{from{top:-100%;}to{top:0;}
}
@keyframes imgChange {from{transform: scale(0.5);}to{transform: scale(1);}
}

js部分

let LeftImgs=document.getElementById('left')
let LeftNth=2
let LeftIndex=0let RightImgs=document.getElementById('right')
let Right=document.querySelector('.right')
let RightNth=14
let RightIndex=0let first=document.getElementById('first')
let imgs=document.getElementById('imgs')function handelLeft(){let timeIr=nullclearInterval(timeIr)timeIr=setInterval(() => {LeftIndex+=1if(LeftIndex > LeftNth){LeftIndex=0LeftImgs.src=`./images/1.jfif`}else{LeftImgs.src=`./images/${LeftIndex+1}.jfif`}}, 5000);
}function handelRight(){let timeIr=nullclearInterval(timeIr)timeIr=setInterval(() => {RightIndex+=1if(RightIndex > RightNth){RightIndex=0RightImgs.src=`./images/2-1.jfif`}else{RightImgs.src=`./images/2-${RightIndex+1}.jfif`}}, 1000);
}window.onload = function(){addAudio()
}function addAudio() {let audio=document.createElement('audio')audio.controls = true //这样控件才能显示出来 audio.autoplay=trueaudio.preload = 'auto';audio.src='./Dino Sor - Geisha (3D环绕版).mp3'document.body.appendChild(audio)
}imgs.style.display='none'
setTimeout(()=>{first.style.display='none'imgs.style.display='block'Right.style.margin='-530px 0px 0px 300px'handelLeft()handelRight()
},5000)

2.图片变色

2.1 效果展示

请添加图片描述

2.2 实现

实现思路

  • 通过css的filter: grayscale(100%);来实现对图片进行处理
  • 通过css的clip-path对生成的内容进行切割

扩展

  • filter: grayscale(100%); 是CSS中的一个过滤器应用,
    它将图像转换为完全的灰度。
    这意味着图片中的所有颜色都会被转换成不同程度的灰色,
    从而创建出黑白效果
  • clip-path 允许你裁剪元素的可见区域,
    只显示元素的某一部分。
    这个属性可以使用预定义的裁剪形状或自定义的路径来实现

html 部分

<div class="content"><ul><li><div class="other"></div><img src="./images/1.webp" alt=""><p>Charles Aubert de La Chesnaye</p></li><li><div class="other"></div><img src="./images/2.webp" alt=""><p>Gilles Trottier and Catherine Loyseau</p></li><li><div class="other"></div><img src="./images/3.webp" alt=""><p>Antoine Trottier Desruisseaux</p></li><li><div class="other"></div><img src="./images/4.webp" alt=""><p>Marie-Catherine Trottier</p></li></ul></div>

css部分

body{background-color: #1d1d1d;height:100vh;overflow: hidden;
}
.content{margin:300px auto;width:900px;height:400px;
}
.content ul{width:100%;height:100%;list-style: none;display:grid;grid-template-columns: repeat(4,1fr);gap:15px;
}
li img{width:170px;height:161px;position: relative;
}
li{width:100%;height:100%;text-align: center;color:#726f6f;font-size: 26px;filter: grayscale(100%);
}
li:hover{filter: grayscale(0%);color:#fff;position: relative;
}
li:hover .other{display:block;animation: img1 3s forwards; 
}
.other{content: '';position: absolute;top:-30px;left:30px;width:144px;height:144px;border:1px solid #f8ece7;border-radius: 50%;display:none;clip-path: polygon(0% 0%, 100% 0%, 100% 80%, 0% 80%);
}
@keyframes img1 {from{opacity: 0;}to{opacity: 1;}
}

图片资源链接

好了这次的文章就到这了
如果觉得还不错的话,帮忙点个关注吧
希望能给博主点赞哎🎨,评论🧶,收藏🥼三连一波加粗样式

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

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

相关文章

字节码编程javassist之打印方法耗时和入参

写在前面 本文看下如何实现打印方法耗时和入参。 1&#xff1a;程序 需要增强的类&#xff1a; public class ApiTest1 {public Integer strToInt(String str01, String str02) {return Integer.parseInt(str01);}}插桩类 package com.dahuyou.javassist.huohuo.aa;import…

tableau条形图绘制 - 2

tableau条形图绘制 1. 条形图绘制-11.1 创建工作表1.2 修改工作表名称1.3 条形图绘制1.4 显示标签1.5 行列转换 2. 条形图绘制-22.1 新建工作表2.2 修改工作表名称2.3 条形图绘制2.4 价格度量选平均值2.5 标签度量选平均值2.6 升序&#xff0c;整个视图显示2.7 行列转换 3. 堆积…

模型训练结果可视化

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

AntDesign上传组件upload二次封装+全局上传hook使用

文章目录 前言a-upload组件二次封装1. 功能分析2. 代码详细注释3. 使用到的全局上传hook代码4. 使用方式5. 效果展示 总结 前言 在项目中&#xff0c;ant-design是我们常用的UI库之一&#xff0c;今天就来二次封装常用的组件a-upload批量上传组件,让它用起来更方便。 a-uploa…

Spring Cloud: Nacos配置中心与注册中心的使用

一、配置中心(配置管理) 配置中心是一种集中化管理配置的服务。它的主要作用包括集中管理配置信息&#xff0c;将不同服务的配置信息集中存储和管理&#xff1b;支持动态更新配置&#xff0c;通过操作界面或 API 无需重启服务即可应用最新配置信息&#xff1b;实现配置信息共享…

如何解决亚马逊环境技术问题?自养号测评助力下单成功率飙升

在构建针对测评任务的环境系统时&#xff0c;确保系统的稳定性和操作成功率至关重要。面对市场上纷繁复杂的解决方案&#xff0c;如虚拟机、模拟器、GCS服务、云手机及VPS等&#xff0c;虽选择众多&#xff0c;但往往伴随着高昂成本与低成功率的挑战。因此&#xff0c;构建一个…

数据库课设---酒店管理系统(MySQL、VBNet)

目录 一. 知识技术 二. 需求分析 2.1 功能需求 2.2 数据需求 三. 数据流图与数据字典 3.1 数据流图 3.1.1 业务流图 3.1.2 数据流图 3.1.3 关系图 3.2 数据字典 四. 数据库设计 4.1 概念模型设计 4.2 逻辑模型设计 4.3 数据库实现 …

网络规划与设计————期末复习

一、选择题&#xff08;每题1分&#xff09; 1、光纤线组建的标准以太网是______。 A.10BASE-5 B.10BASE-2 C.10BASE-T D.10BASE-F 其实也很好记&#xff0c;光纤的英文是 "Fiber Optic"&#xff0c;双绞线的英文是 "Twisted Pair"。 5呢…

苹果电脑压缩软件哪个好用一些? mac电脑用什么压缩软件 mac电脑压缩文件怎么设置密码

压缩软件是Mac电脑必不可少的工具&#xff0c;虽然Mac系统自带了一款“归档实用工具”&#xff0c;但是其功能实在匮乏&#xff0c;若你需要加密压缩文件或者把文件压缩成指定格式&#xff0c;那么该工具无法满足你的需求。Mac用户应该怎么选择压缩软件呢&#xff1f;本文就来告…

股票数据分析(K线图、均值图、MACD图、RSI图)--股票日数据

数据 数据是上证指数日行情数据&#xff0c;股票代码000002.sz&#xff0c;原始数据shdata示例如下&#xff1a; 读取数据&#xff1a; import numpy as np import pandas as pd import mplfinance as mpf import matplotlib.pyplot as plt from datetime import datetime imp…

出书流程/专著/合著/年内下号

出书流程/专著/合著/年内下号 年内书号&#xff0c;年内书号&#xff0c;年内书号 独著&#xff0c;合著&#xff0c;一书一号&#xff0c;正规出版。省级出版社&#xff0c;国家级出版社&#xff0c;985&#xff0c;211大学出版社&#xff0c;百佳出版社&#xff0c;均可安排…

刷题之删除有序数组中的重复项(leetcode)

删除有序数组中的重复项 这题简单题&#xff0c;双指针&#xff0c;一个指针记录未重复的数的个数&#xff0c;另一个记录遍历的位置。 以下是简单模拟&#xff0c;可以优化&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {int l0…

JVM专题之G1垃圾收集器下

索引(记录)的源码的工作流程图如下: CSet(Collection Set 回收集合) 收集集合(CSet)代表每次GC暂停时回收的一系列目标分区。在任意一次收集暂停中,CSet所有分区都会被释放,内部存活的对象都会被转移到分配的空闲分区中。因此无论是年轻代收集,还是混合收集,工作的机…

主流电商平台营销中大数据的应用◆

随着经济的不断发展&#xff0c;网络信息技术不断加强&#xff0c;电子商务和大数据的蓬勃发展极大地方便了人们的生活。本文章主要阐述大数据分析与电商营销的含义、大数据分析在电子商务营销中的应用&#xff0c;以及该应用的作用和存在哪些不足及解决方法。探究大数据分析在…

Geoserver源码解读六 插件(怎么在开发模式下使用)

系列文章目录 Geoserver源码解读一 环境搭建 Geoserver源码解读二 主入口 Geoserver源码解读三 GeoServerBasePage Geoserver源码解读四 REST服务 Geoserver源码解读五 Catalog Geoserver源码解读六 插件&#xff08;怎么在开发模式下使用&#xff09; 文章目录 系列文…

希亦、小吉、觉飞内衣洗衣机值得买吗?王牌对决测评还不来看看!

内衣洗衣机是近几年新兴的家电产品&#xff0c;以清洁效果好、除菌能力强&#xff0c;被很多人种草入手了&#xff01;但网上有不少人虽感兴趣&#xff0c;但不清楚如何选。担心买到质量差&#xff0c;清洗不干净的产品。所以为了帮助大家可以更好的了解哪个品牌的内衣洗衣机比…

latex改写字体和字号

文章目录 字体使用宏包设置命令声明命令 字号例子设置特定字号 设置行间距用\setlength{\baselineskip}{24pt}设置\renewcommand{\baselinestretch}{2} \selectfont中文行距&#xff08;{ctex}&#xff09; 补充&#xff1a; 字体 使用宏包 \usepackage{ctex}设置命令 只对确…

04-Haproxy搭建Web群集

理论讲解 Haproxy 是目前比较流行的一种群集调度工具&#xff0c;同类群集调度工具有很多&#xff0c;如LVS 和Nginx。相比较而言&#xff0c;LVS 性能最好&#xff0c;但是搭建相对复杂:Nginx的upstream模块支持群集功能&#xff0c;但是对群集节点健康检查功能不强&#xff…

大模型面试笔试常见问题汇总(精心准备)

1 GPT和Bert的区别? 1.模型结构和训练方式 BERT通过掩码语言模型(Masked Language Model, MLM)和下一句预测(Next Sentence Prediction, NSP)任务进行训练: 掩码语言模型(MLM):在输入序列中,BERT随机掩盖一些词语,并要求模型预测这些被掩盖的词语。这使得BERT能够学…

WordPress作品设计素材图片站资讯文章教程uigreat主题

主题介绍 uigreat主题是一款wordpress作品主题&#xff0c;发布设计作品素材文章&#xff0c;适合作品展示、设计等站点使用等&#xff0c;这款主题都非常合适。 1、自适应设计&#xff0c;PC、平板、手机等均可正常浏览&#xff1b; 2、图片缩略图可自定义高度&#xff0c;主…