当前博客:51-快码FOF中文编程layui实战:博客个人中心

315 次浏览【转载需注明来源】

博客作者:【qiang】

个性签名:请输入个性签名___________

我们打开设计图看博客的个人中心,看一下我框起来的部分。

左边是不是一个垂直导航,右边是不是卡片面板包裹的表单呢,我们就用栅格框架+layui导航+layui表单来把html做出来

<区块 类名="内容板块" 行内样式="上边距: 25px">
	<区块 类名="lay-容器">
		<区块 类名="lay-栅格行 lay-栅格间隔20">
			<区块 类名="lay-栅格小屏3">
				<!--垂直导航-->
				<无序列表 类名="lay-导航 lay-导航-垂直 个人中心侧边导航">
					<列表项 类名="lay-导航-项目 lay-导航-选中项目">
						<超链接 链接地址="javascript:;"><斜体文本 类名="lay-图标 lay-图标设置"></斜体文本> 账户设置</超链接>
					</列表项>
					<列表项 类名="lay-导航-项目">
						<超链接 链接地址="javascript:;"><斜体文本 类名="lay-图标 lay-图标高级"></斜体文本> 博客设置</超链接>
					</列表项>
					<列表项 类名="lay-导航-项目">
						<超链接 链接地址="javascript:;"><斜体文本 类名="lay-图标 lay-图标退出"></斜体文本> 退出登录</超链接>
					</列表项>
				</无序列表>
			</区块>
			<区块 类名="lay-栅格小屏9">
				<!--个人中心表单-->
				<表单 类名="lay-表单 lay-卡片面板 账户设置表单" lay-过滤器="账户设置表单">
					<区块 类名="lay-表单-项目">
						<数据框标注 类名="lay-表单-标签">头像:</数据框标注>
						<区块 类名="lay-输入框-区块">
							<超链接 链接地址="javascript:;" id="头像上传">
								<图片框 id="头像" 图像地址="" 错替文本="头像" />
								<换行 />
								<行内元素 类名="lay-按钮 lay-按钮-百搭 lay-按钮-迷你" 行内样式="上边距: 5px">更改头像</行内元素>
								<数据框 id="头像数据" 属性名称="头像base64" 数据类型="隐藏数据框" 数据值="" />
							</超链接>
							<数据框 类名="lay-上传文件" 数据类型="文件类型" 文件类型="" 属性名称="file" />
						</区块>
					</区块>
					<区块 类名="lay-表单-项目">
						<数据框标注 类名="lay-表单-标签">昵称:</数据框标注>
						<区块 类名="lay-输入框-区块">
							<数据框 数据类型="文本输入" 属性名称="昵称" 自动填充="不记住" 默认提示="请输入" 类名="lay-输入框" />
						</区块>
					</区块>
					<区块 类名="lay-表单-项目">
						<数据框标注 类名="lay-表单-标签">账号:</数据框标注>
						<区块 类名="lay-输入框-区块">
							<数据框 数据类型="文本输入" 属性名称="账号" 自动填充="不记住" 默认提示="请输入账号" 类名="lay-输入框" 禁用数据框="" />
						</区块>
					</区块>
					<区块 类名="lay-表单-项目">
						<数据框标注 类名="lay-表单-标签">旧密码:</数据框标注>
						<区块 类名="lay-输入框-内联块">
							<数据框 数据类型="密码输入" 属性名称="密码" 默认提示="" 自动填充="不记住" 类名="lay-输入框" />
						</区块>
						<区块 类名="lay-表单-对齐 lay-标注">不改则不填写</区块>
					</区块>
					<区块 类名="lay-表单-项目">
						<数据框标注 类名="lay-表单-标签">新密码:</数据框标注>
						<区块 类名="lay-输入框-内联块">
							<数据框 数据类型="密码输入" 属性名称="新密码" 默认提示="" 自动填充="不记住" 类名="lay-输入框" />
						</区块>
					</区块>
					<区块 类名="lay-表单-项目">
						<数据框标注 类名="lay-表单-标签">重复密码:</数据框标注>
						<区块 类名="lay-输入框-内联块">
							<数据框 数据类型="密码输入" 属性名称="重复密码" 默认提示="" 自动填充="不记住" 类名="lay-输入框" />
						</区块>
					</区块>
					<区块 类名="lay-表单-项目">
						<数据框标注 类名="lay-表单-标签">个性签名:</数据框标注>
						<区块 类名="lay-输入框-区块">
							<多行文本框 属性名称="个性签名" 默认提示="" 类名="lay-多行文本"></多行文本框>
						</区块>
					</区块>
					<区块 类名="lay-表单-项目">
						<区块 类名="lay-输入框-区块">
							<按钮 类名="lay-按钮 lay-按钮-百搭" lay-提交="">提交修改</按钮>
						</区块>
					</区块>
				</表单>
			</区块>
		</区块>
	</区块>
</区块>
Markup

这雏形是不是出来了,我们再加一点样式,

.个人中心侧边导航 {
	宽度: 100%;
	背景: #1e9fff;
}
.个人中心侧边导航 列表项 {
	边框-底部: 颜色通道(255, 255, 255, 0.8) 1px 实线;
}

.个人中心侧边导航 .lay-导航-选中项目,
.个人中心侧边导航 .lay-选中 {
	背景: 颜色通道(0, 0, 0, 0.3) !important;
}
.个人中心侧边导航 列表项 斜体文本 {
	字体-大小: 18px;
	右边距: 5px;
}
.账户设置表单 {
	内边距: 20px;
}
.账户设置表单 .lay-表单-标签 {
	文本-对齐: 左侧;
}
#头像上传 图片框 {
	宽度: 50px;
	高度: 50px;
	边框: 颜色通道(0, 0, 0, 0.15) 1px 实线;
	边框-圆角: 100px;
}
.lay-导航-垂直 .lay-选中 超链接 {
	背景: 无效 !important;
}
Markup

是不是差不多了,我们再优化一下细节,比如头像,昵称,账号这是不是,直接就有的,我们可以直接在html里面写,也可以在js里面写。

新增一个图像的筛选器,放置头像。

打开图像文件。

设置头像,当文件不是代码文件的时候,就是 @文件_

再设置一下数据框的值,是不是就可以了。

然后我们做一下退出登录,和头像上传裁剪。

首先是退出登录,我们设置一个函数,函数是清除浏览器缓存令牌,并且跳转到首页,然后把函数绑定到退出按钮上。

$(".退出登录").绑定事件("@事件_点击", 定义函数 () {
	浏览器持久储存.删除数据("token");
	// 返回首页
	lay_弹出层.消息框("已退出登录!", {
		[lay_弹出层.配置.时间]: 1500,
		[lay_弹出层.配置.销毁]: 定义函数 () {
			浏览器窗口.浏览器URl操作.href = "./index.lhtml";
		},
	});
});
JavaScript

点击看看效果:

先弹出一个已退出登录的弹出,然后跳转到了首页,没问题。

我们继续看头像的上传和裁剪,layui有个上传方法,可以用的上,而我们也封装了一个裁剪的方法,我们可以搭配使用一下。

首先需要选择到图片但不用上传,我们用layui上传实现一下:

局部变量 头像上传 = 新建对象 lay_上传({
	[lay_上传.配置.绑定元素]: "#头像上传",
	[lay_上传.配置.自动]: 假,
	[lay_上传.配置.选择]: 定义函数 (上传选择对象) {
		//预读本地文件示例,不支持ie8
		上传选择对象.预读(定义函数 (序号, 文件, base64编码) {
			$("#头像").属性值("src", base64编码);
		});
	},
});
JavaScript

图片预读是可以了,这个时候,我们就要用到裁剪了,首先引用两个库:

然后在上传预读回调里面,获取到上传的图片base64代码,放在图片框元素上,通过弹窗弹出这张图片,并且弹出完成绑定裁剪方法,最后点击确认的时候导出裁剪的图像base64代码:

变量 裁剪头像;
局部变量 头像上传 = 新建对象 lay_上传({
	[lay_上传.配置.绑定元素]: "#头像上传",
	[lay_上传.配置.自动]: 假,
	[lay_上传.配置.选择]: 定义函数 (上传选择对象) {
		//预读本地文件示例,不支持ie8
		上传选择对象.预读(定义函数 (序号, 文件, base64编码) {
			lay_弹出层.创建({
				[lay_弹出层.配置.皮肤]: "裁剪弹窗",
				[lay_弹出层.配置.标题]: "裁剪头像",
				[lay_弹出层.配置.宽高]: ["500px", "500px"],
				[lay_弹出层.配置.内容]: `<图片框 id="裁剪" 图像地址="${base64编码}" />`,
				[lay_弹出层.配置.成功]: 定义函数 () {
					裁剪头像 = 新建对象 裁剪("#裁剪");
				},
				[lay_弹出层.配置.确认]: 定义函数 (序号) {
					局部变量 头像base64 = 画板操作类.获取画板数据(裁剪头像.获取裁剪画布());
					$("#头像上传 + 数据框").设置或获取值("");
					$("#头像").属性值("src", 头像base64);
					$("#头像数据").设置或获取值(头像base64);
					lay_弹出层.关闭(序号);
				},
			});
		});
	},
});
JavaScript

可以了,但是里面的元素好像超出了弹出窗口的宽度,我们审查元素,用css调试一下:

#裁剪 {
	display: block;
	max-width: 100%;
}
.裁剪弹窗 {
	max-width: 95%;
}
.裁剪弹窗 .layui-layer-content {
	padding: 0;
}
CSS

最后我们点击确认试一试,

是不是成功了,最后我们打开控制台看一看其它屏有没有问题。

最后发现没啥问题了,但是个人中心的按钮文字是黑色的,css调试了一下。

看一下个人中心的成品:

 

51-快码FOF中文编程layui实战:博客个人中心