html+css实现多种动态相册

电子相册

原理:由a标签的锚点进行图片上的切换,左侧大图用verflow: hidden进行隐藏,右侧小图用overflow: scroll进行显示。
HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="../css/ElectronAlbum.css"/>
	</head>
	<body>
		<div class="box">
			<h1>电子相册</h1>
			<ul class="list1">
				<li><img src="../img/danji.jpg" id="img1"></li>
				<li><img src="../img/dianwei.jpg" id="img2"></li>
				<li><img src="../img/diaochan.jpg" id="img3"></li>
				<li><img src="../img/lanlinwang.jpg" id="img4"></li>
				<li><img src="../img/luban.jpg" id="img5"></li>
				<li><img src="../img/zhaoyun.jpg" id="img6"></li>
				<li><img src="../img/zhugeliang.jpg" id="img7"></li>
				<li><img src="../img/kai.jpg" id="img8"></li>
			</ul>
			<ul class="list2">
				<li><a href="#img1"><img src="../img/danji.jpg"></a></li>
				<li><a href="#img2"><img src="../img/dianwei.jpg"></a></li>
				<li><a href="#img3"><img src="../img/diaochan.jpg"></a></li>
				<li><a href="#img4"><img src="../img/lanlinwang.jpg"></a></li>
				<li><a href="#img5"><img src="../img/luban.jpg"></a></li>
				<li><a href="#img6"><img src="../img/zhaoyun.jpg"></a></li>
				<li><a href="#img7"><img src="../img/zhugeliang.jpg"></a></li>
				<li><a href="#img8"><img src="../img/kai.jpg"></a></li>
			</ul>
		</div>
	</body>
</html>

CSS

* {
	margin: 0;
	padding: 0;
}

body {
	background: #333;
}

li {
	list-style: none;
}

h1 {
	text-align: center;
	height: 50px;
	line-height: 50px;
	color: #FFFFFF;
}
.box{
	width: 660px;
	height: 320px;
	margin: 200px auto;
	border: 5px solid white;
	box-shadow: 0px 0px 10px black;
}
.list1,.list2{
	float: left;
}
.list1{
	width: 480px;
	height: 270px;
	overflow: hidden;
}
.list2{
	width: 180px;
	height: 270px;
	overflow: scroll;
}
.list1 img{
	width: 480px;
	height: 270px;
}
.list2 img{
	width: 160px;
	height: 90px;
}

全屏背景切换

原理:和电子相册类似用a标签进行图片的切换,设置图片原来的位置以及点击a标签后的:target属性,设置动画效果。
HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>FullPhoto</title>
		<link rel="stylesheet" type="text/css" href="../css/FullPhoto.css"/>
	</head>
	<body>
		<div class="box">
			<img src="../img/dianwei.jpg" id="img1">
			<img src="../img/diaochan.jpg" id="img2">
			<img src="../img/lanlinwang.jpg" id="img3">
			<img src="../img/sunshangxiang.jpg" id="img4">
			<img src="../img/luban.jpg" id="img5">
		</div>
		<div class="list">
			<ul>
				<li><a href="#img1"><img src="../img/dianwei.jpg"></a></li>
				<li><a href="#img2"><img src="../img/diaochan.jpg"></a></li>
				<li><a href="#img3"><img src="../img/lanlinwang.jpg"></a></li>
				<li><a href="#img4"><img src="../img/sunshangxiang.jpg"></a></li>
				<li><a href="#img5"><img src="../img/luban.jpg"></a></li>
			</ul>
		</div>
	</body>
</html>

CSS:

* {
	margin: 0;
	padding: 0;
}

.box {
	width: 100%;
	height: 100%;
}

.box img {
	width: 100%;
	height: 100%;
	position: fixed;
	transition: all 1s linear;
}

.list {
	position: absolute;
	z-index: 999;
	width: 1000px;
	height: auto;
	bottom: 20px;
	left: 0;
	right: 0;
	margin: auto;
}

.list li {
	list-style: none;
	width: 130px;
	height: 130px;
	border: 5px solid lightskyblue;
	float: left;
	margin-left: 60px;
	overflow: hidden;
	border-radius: 50%;

}

.list li img {
	width: 200%;
}

.box img:nth-child(1) {
	opacity: 0;
	left: -100%;
}

.box img:nth-child(1):target {
	z-index: 1;
	opacity: 1;
	left: 0;
}

.box img:nth-child(2) {
	top: -100%;
}

.box img:nth-child(2):target {
	z-index: 1;
	transform: rotate(360deg);
	top: 0;
}

.box img:nth-child(3) {
	opacity: 0;
	right: -100%;
}

.box img:nth-child(3):target {
	z-index: 1;
	opacity: 1;
	right: 0;
}

.box img:nth-child(4) {
	bottom: -100%;
}

.box img:nth-child(4):target {
	z-index: 1;
	transform: rotate(360deg);
	bottom: 0;
}

.box img:nth-child(5) {
	opacity: 0;
}

.box img:nth-child(5):target {
	z-index: 1;
	opacity: 1;
	transform: rotate(360deg);
}

照片墙

原理:利用悬浮属性,使鼠标悬浮在上面的图片进行相应的变化
版本1:
HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>PhotoWall1</title>
		<link rel="stylesheet" type="text/css" href="../css/PhotoWall1.css"/>
	</head>
	<body>
		<ul>
			<li><img src="../img/danji.jpg" ></li>
			<li><img src="../img/dianwei.jpg" ></li>
			<li><img src="../img/diaochan.jpg" ></li>
			<li><img src="../img/sunshangxiang.jpg" ></li>
			<li><img src="../img/sunwukong.jpg" ></li>
			<li><img src="../img/luban.jpg" ></li>
			<li><img src="../img/lanlinwang.jpg" ></li>
			<li><img src="../img/kai.jpg" ></li>
			<li><img src="../img/donghuang.jpg" ></li>
		</ul>
	</body>
</html>

CSS:

* {
	margin: 0;
	padding: 0;
}

body {
	background-color: #333;
}

ul {
	width: 1020px;
	height: 600px;
	border: white solid 5px;
	margin: 60px auto;
	box-shadow: 0px 0px 10px #ccc;
}

li {
	width: 320px;
	height: 180px;
	list-style: none;
	float: left;
	margin: 10px;
	/* x y 扩散程度 阴影颜色*/
	box-shadow: 0px 0px 10px white;
}

img {
	width: 100%;
	height: 100%;
}

img:hover {
	width: 150%;
	height: 150%;
	position: relative;
	top: -40px;
	left: -40px;
}

版本2:
HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>PhotoWall2</title>
		<link rel="stylesheet" type="text/css" href="../css/PhotoWall2.css" />
	</head>
	<body>
		<div class="box">
			<img src="../img/danji.jpg">
			<img src="../img/dianwei.jpg">
			<img src="../img/diaochan.jpg">
			<img src="../img/sunshangxiang.jpg">
			<img src="../img/sunwukong.jpg">
			<img src="../img/luban.jpg">
			<img src="../img/lanlinwang.jpg">
			<img src="../img/kai.jpg">
			<img src="../img/donghuang.jpg" >
		</div>
	</body>
</html>

CSS:

* {
	margin: 0;
	padding: 0;
}

body {
	background: url(../img/wbg.png);
}
.box{
	width: 1000px;
	margin: 0px auto;
	margin-top: 100px;
}
.box img {
	width: 320px;
	height: 180px;
	border: 5px solid azure;
	box-shadow: -10px -10px 10px black;
	transition: all 0.3s linear;
}

img:nth-child(odd) {
	transform: rotate(20deg);
}

img:nth-child(even) {
	transform: rotate(-20deg);
}

img:hover {
	transform: scale(1.3);
	position: relative;
	z-index: 2;
}

百叶窗

原理:当鼠标悬浮在ul标签上,所有li标签变小,悬浮的li标签变大,添加css变化动画
HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>WindowShades</title>
		<link rel="stylesheet" type="text/css" href="../css/WindowShades.css"/>
	</head>
	<body>
		<div class="box">
			<ul>
				<li><img src="../img/danji.jpg" ></li>
				<li><img src="../img/dianwei.jpg" ></li>
				<li><img src="../img/diaochan.jpg" ></li>
				<li><img src="../img/kai.jpg" ></li>
				<li><img src="../img/lanlinwang.jpg" ></li>
			</ul>
		</div>
	</body>
</html>

CSS:

*{
	margin: 0;
	padding: 0;
}
body{
	background: url(../img/wbg.png);
}
.box{
	width: 800px;
	height: 360px;
	margin: 200px auto;
	/*溢出部分隐藏*/
	overflow: hidden;
}
.box img{
	width: 640px;
	height: 360px;
}
li{
	list-style: none;
	width: 155px;
	height: 360px;
	float: left;
	border-left: 5px solid white;
	box-shadow: -5px 0px 10px black;
	transition: all 0.5s linear;
}
/*鼠标悬浮在ul上,让ul变小*/
.box ul:hover li{
	width: 35px;
}
/*鼠标悬浮到某个li上,让li变大*/
.box ul li:hover{
	width: 635px;
}

3d照片墙

原理:将图片以绝对定位的方式放在父容器内(目的是使图片重叠在一起),将每张图片旋转对应的角度(360°均分),向z轴平移适合的距离。类似于一群人想要排成一个圆圈,则需要每个人平均转向不同的方向,然后向前走出一段距离。向父容器添加旋转动画,使所有照片旋转起来。
HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>3dPhoto</title>
		<link rel="stylesheet" type="text/css" href="../css/3dPhoto.css"/>
	</head>
	<body>
		<div class="show">
			<div class="box">
				<img src="../img/zhugeliang.jpg" >
				<img src="../img/sunwukong.jpg" >
				<img src="../img/diaochan.jpg" >
				<img src="../img/libai.jpg" >
				<img src="../img/zhaoyun.jpg" >
				<img src="../img/donghuang.jpg" >
				<img src="../img/dianwei.jpg" >
				<img src="../img/kai.jpg" >
				<img src="../img/lanlinwang.jpg" >
				<img src="../img/sunshangxiang.jpg" >
			</div>
		</div>
	</body>
</html>

CSS:

* {
	margin: 0;
	padding: 0;
}

body {
	background: url(../img/wbg.png);
}


.box {
	width: 320px;
	height: 200px;
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	margin: auto;
	transform-style: preserve-3d;
	animation: im 20s linear infinite;
}

.box img {
	width: 100%;
	height: 100%;
	position: absolute;
}

@keyframes im{
	0% {
		transform: rotateY(0deg) rotateX(10deg);
	}

	25% {
		transform: rotateY(90deg) rotateX(-10deg);
	}

	50% {
		transform: rotateY(180deg) rotateX(10deg);
	}

	75% {
		transform: rotateY(270deg) rotateX(-10deg);
	}

	100% {
		transform: rotateY(360deg) rotateX(10deg);
	}

}

/*10张图片3d变换*/
.box img:nth-child(1) {
	transform: rotateY(0deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(2) {
	transform: rotateY(36deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(3) {
	transform: rotateY(72deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(4) {
	transform: rotateY(108deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(5) {
	transform: rotateY(144deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(6) {
	transform: rotateY(180deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(7) {
	transform: rotateY(216deg) translateZ(600px);
	backface-visibility:visible;
}

.box img:nth-child(8) {
	transform: rotateY(252deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(9) {
	transform: rotateY(288deg) translateZ(600px);
	backface-visibility: visible;
}

.box img:nth-child(10) {
	transform: rotateY(324deg) translateZ(600px);
	backface-visibility: visible;
}

立方体相册

原理:将ul下6个li标签进行绝对定位,6个li标签分别转向6个方向,向Z轴的两个方向扩展立方体边长的一半。
HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>cube</title>
		<link rel="stylesheet" type="text/css" href="../css/cube.css"/>
	</head>
	<body>
		<ul>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>
	</body>
</html>

CSS:

* {
	margin: 0;
	padding: 0;
}

body {
	background: #333;
}

ul {
	width: 300px;
	height: 300px;
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	margin: auto;
	/*3d空间*/
	transform-style: preserve-3d;
	animation: box 20s linear infinite;
}

@keyframes box {

	/*3d旋转 x y z deg*/
	from {
		transform: rotate3d(0, 0, 0, 0deg);
	}

	to {
		transform: rotate3d(1, 1, 1, 360deg);
	}
}

li {
	width: 300px;
	height: 300px;
	list-style: none;
	border: 1px solid black;
	position: absolute;
	opacity: 0.8;
	box-shadow: 0px 0px 10px white;
}

li:nth-child(1) {
	background: url(../img/danji.jpg);
	background-position: center;
	background-size: cover;
	transform: translateZ(150px);
}

/*后*/
li:nth-child(2) {
	background: url(../img/donghuang.jpg);
	background-position: center;
	background-size: cover;
	transform: translateZ(-150px);
}

/*左*/
li:nth-child(3) {
	background: url(../img/luban.jpg);
	background-position: center;
	background-size: cover;
	transform: rotateY(90deg) translateZ(-150px);
}

/*右*/
li:nth-child(4) {
	background: url(../img/libai.jpg);
	background-position: center;
	background-size: cover;
	transform: rotateY(90deg) translateZ(150px);
}

/*上*/
li:nth-child(5) {
	background: url(../img/kai.jpg);
	background-position: center;
	background-size: cover;
	transform: rotateX(90deg) translateZ(150px);
}

li:nth-child(6) {
	background: url(../img/sunwukong.jpg);
	background-position: center;
	background-size: cover;
	transform: rotateX(90deg) translateZ(-150px);
}

ul:hover {
	animation-play-state: paused;
}

代码

GitHub

### Elasticsearch 8.0 安装配置与使用教程 #### 创建索引并搜索 为了利用最新版的功能,可以采用Elasticsearch Java客户端8.0来创建索引并执行搜索操作[^1]。这涉及到设置开发环境以兼容新的API接口,并理解如何通过Java代码交互。 ```java // 创建一个新的RestHighLevelClient实例连接到Elasticsearch服务器 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); // 构建请求以创建索引 CreateIndexRequest request = new CreateIndexRequest("test-index"); request.mapping("{ \"properties\": {\"field\": {\"type\": \"text\"}}}", XContentType.JSON); client.indices().create(request, RequestOptions.DEFAULT); // 执行简单查询 SearchRequest searchRequest = new SearchRequest("test-index"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery()); searchRequest.source(sourceBuilder); SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); ``` #### 新特性概述 随着2022年2月发布的Elasticsearch 8.0版本,带来了多项增强功能,包括但不限于: - **矢量搜索优化**:提高了向量化数据类型的性能。 - **NLP集成**:增强了对自然语言处理的支持。 - **简化部署流程**:减少了复杂度,使得上手更容易。 - **强化安全措施**:提供了更直观的安全管理工具和策略应用方式[^2]。 这些改进共同作用下,显著提升了系统的响应速度、可扩展能力及相关性的准确性。 #### 中文本地化支持 对于希望在中国市场推广的应用程序来说,适当调整`elasticsearch.yml`文件中的国际化参数是必要的。具体而言,可以通过添加如下行实现中文界面显示和支持: ```yaml i18n.locale: "zh-CN" ``` 同时确保指定正确的Elasticsearch服务端点地址而非默认值[^3]: ```yaml elasticsearch.hosts: ["http://your-es-server-ip:9200"] ``` #### REST API 兼容性说明 值得注意的是,在升级至8.x系列之后,部分旧有的RESTful APIs可能已被弃用或更改签名。官方文档建议开发者仔细审查迁移指南,特别是关于删除了哪些路径前缀的信息[^4]。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值