整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端企业求职必备原生javascript打造拖拽照片墙特效!

码/视频评论后加前端学习群470593776

javascript课题:原生js拖拽照片墙

知识点:浮动定位布局切换技巧,js鼠标事件,拖拽功能

碰撞检测,原生js运动框架,2017年就业形势分析,面试技巧等

源码:

源码/视频评论后加前端学习群470593776

源码/视频评论后加前端学习群470593776

代码过长,只发部分,大家评论下本文章后

可以加下前端群【470593776】(源码和视频)

果展示

选中样式制作

  • 将每个 tab 设置固定宽度。
  • 每个tab 添加相对定位,居中,行高
  • 添加伪类,伪类设置绝对定位,在底部。
  • 设置伪类的宽度为 0%(伪类会继承该元素的宽度)
  • 设置选中时候的伪类宽度为50%(视情况而定)
  • 给元素添加过渡样式

HTML代码(wxml)

			
				{{item.name}}
			

CSS(less):

		.nav-bar{
			position: relative;
			z-index: 10;
			height: 90upx;
			white-space: nowrap;
			background-color: #fbfbfb;
			
			.nav-item{
				display: inline-block;
				width: 150upx;
				height: 90upx;
				text-align: center;
				line-height: 90upx;
				font-size: 30upx;
				color: #a4a4a4;
				position: relative;
			}
			
			.current{
				color: #3f3f3f;
				font-weight: bold;
			}
		}

实现效果大致为这样的:

拓展

PS: 以上为纯CSS实现部分,如果项目 tab数量 为通过接口动态获取的,可以适当加入一些 js 计算。

JS 思路:

  • 获取当前选中的 tab 的宽度
  • 获取当前选中 tab 以及它之前全部 tab 的宽度总和。
  • 获取当前屏幕宽度
  • 判断当前选中 tab 是否超过屏幕中心点(当前选中 tab 以及它之前全部 tab 的宽度总和 - 当前选中 tab 宽度/2
  • 移动当前 tabs 到屏幕的重心点位置

大致为(以微信小程序为例):

				let width = 0; // 当前选中选项卡及它之前的选项卡之和总宽度
				let nowWidth = 0; // 当前选项卡的宽度
				//获取可滑动总宽度
				for (let i = 0; i <= index; i++) {
					let result = await this.getElSize('tab' + i);
					width += result.width;
					if(i === index){
						nowWidth = result.width;
					}
				}
				// console.log(width, nowWidth, windowWidth)
				//等待swiper动画结束再修改tabbar
				this.$nextTick(() => {
					if (width - nowWidth/2 > windowWidth / 2) {
						//如果当前项越过中心点,将其放在屏幕中心
						this.scrollLeft = width - nowWidth/2 - windowWidth / 2;
						console.log(this.scrollLeft)
					}else{
						this.scrollLeft = 0;
					}
					if(typeof e === 'object'){
						this.tabCurrentIndex = index; 
					}
					this.tabCurrentIndex = index; 
				})

ps: getElSize() 函数代码为:

			getElSize(id) { 
				return new Promise((res, rej) => {
					let el = uni.createSelectorQuery().select('#' + id);
					el.fields({
						size: true,
						scrollOffset: true,
						rect: true
					}, (data) => {
						res(data);
					}).exec();
				});
			},

这样就可以实现动态 tab 切换了:

片编辑:如何在Lightroom中创建HTML Web画廊?



随着iPad和iPhone的日益普及,我们大多数人不再适合创建基于Flash的Web画廊 - 它们无法在这些设备上轻松查看。如果您希望几乎每个人都能够看到您的画廊,那么您需要将它们创建为HTML画廊而不是Flash。

要在Lightroom中创建Web画廊,请首先将图像放入集合中。这使您可以更轻松地处理图像,并且可以保存图库,以便将来根据需要进行编辑。选择您的收藏并切换到Web模块。从“布局样式”选项中,您可以选择Lightroom HTML库,或者更简单地从屏幕左侧的“模板浏览器”面板中选择基于HTML的库。如果您在预览区域中查看,HTML图库模板的左下角都有字母HTML。选择要使用的模板。


从工具栏(如果不可见则按T键),如果您选择了一个集合,请选择所有胶片照片,这会将所有图像添加到您的图库。您在编辑区域的屏幕上看到的是您的网络图库的实时版本。您可以单击任何图像以查看它在Web上的外观。


打开“站点信息”面板,然后键入站点标题,集合标题和集合描述。如果您不想使用所有这些,只需删除您不想使用的项目的占位符文本,并且将释放它们在模板中占用的空间以用于您的图像。对于“联系信息”,请根据需要键入您的联系人姓名,然后填写“Web或邮件链接”,这将自动链接到Web画廊中的联系人姓名。


您可以在图库中添加标识牌,如果需要,它将位于网站标题上方。如果需要,您可以通过完成Web或邮件链接框将其链接回您的站点。


使用“调色板”选项可以更改网站模板中各种元素的颜色。

在“外观”面板中,您可以设置缩略图图像网格大小 - 默认为3 x 3,不能小于任何小,但可以大得多。如果要在图像上显示单元格编号,可以这样做 - 当您需要为查看者提供一种简单的方法来识别他们喜欢的图像时,这非常有用。图像按顺序编号,如果您有多个页面,则第二页上的图像将从第一页的编号顺序继续。


您可以通过调整“大小”滑块来控制“图像”页面上的完整大小图像的大小。您还可以将图片边框添加到图像页面中的图像。请注意,“外观”面板分为“通用设置”,“网格页面”和“图像页面”,允许您进行影响整个图库的更改,仅影响网格页面或仅影响图像页面。


在“图像信息”面板中,您可以选择为图像添加标签。它们仅出现在图像页面上。您可以选择图像上方显示的标题和图像下方显示的标题。例如,对于每一个,您可以从图像元数据中获取文本,并且没有理由不能将标题设置为标题元数据,而将标题设置为您的设备元数据。


在输出设置中选择较大尺寸JPG图像的质量 - 0是低质量,100是高质量。如果要在图像中包含元数据,请选择要包含的内容 - 您的选择是“仅限版权”还是“全部”。

如果需要,还可以添加水印。如果您选择添加水印,您将在图像页面和索引页面上看到它,以便您可以检查它是否是您想要的。选择是否锐化图像 - 此锐化仅在图像输出时应用,因此您不会在屏幕上看到它。如果您不确定要使用什么,请启用锐化并将其设置为标准。


完成后,单击“创建已保存的Web画廊” - 这是Lightroom 4中的新选项,它显示在主编辑区域的右上角。键入Web库的名称,然后单击“创建”。这样做可确保库已保存,一旦完成此操作,Lightroom将从现在开始跟踪您的更改。将来您可以通过单击Lightroom为您创建的特殊集合返回Web画廊。



配置好所有内容后,单击“上载”以呈现库图像,创建必要的html代码并将其全部自动上传到服务器。


Lightroom中的HTML画廊并不是城里最漂亮的画廊,但是几乎任何设备都可以使用画廊,这绝对是激励他们使用它们代替Flash画廊。