• 画廊相册—原生JavaScript实现


    前言

    使用原生JavaScript实现照片长廊效果,主要也是为了练手,刚好看到《JavaScript DOM编程艺术》上有这个小demo,看着还挺好看的,就写一写,还顺带总结几个小知识点。

    效果

    预览前往:点击预览
    导航栏为文字版本

    思路

    拿到一个设计图,还是先从模块开始划分:

    • 导航栏和标题
    • 图片区域
    • 下方文字显示

    有了大致框图才能开始逐个突破:

    1. 标题不说了,导航栏是个典型的水平一级导航栏,之前也做过很多总结整理,注意清除浮动、对锚点进行样式设置即可。动画过渡通过样式表设置。
    2. 点击导航栏链接,另外一个区域做出相应,很明显的onclick事件处理函数的应用,通过DOM获取元素进行设置属性,同时对于锚点的点击事件处理函数里,返回false让锚点点击失效不跳转。
    3. 下方文字显示是根据不同图片进行改变的,可以将文字信息存储在图片title属性中,DOM获取当前图片属性值显示在文字块中。

    这一次体会了结构层、表现层和行为层的分离,说白了就是把html、样式表和js分成了三个文件,使得JavaScript代码不依赖于HTML文档的内容和结构,这样方便后续管理。

    知识点总结

    1. event = “这里添加的相当于是函数体,为分号隔开的字符串,返回值可以影响当前事件是否触发”;
    2. DOM节点操作:nodeValue、firstChild。

    代码

    html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>DOM</title>
       <script type="text/javascript" src="./gallery.js"></script>
       <link rel="stylesheet" type="text/css" href="layout.css">
    </head>
    <body>
       <div id="imgBox">
       	<h1>Snapshots</h1>
       	<ul id="gallery">
       		<li><a href="./images/boat.jpg" title="A boat with a tiger.">Boat</a></li>
       		<li><a href="./images/cat.jpg" title="A cute cat.">Cat</a></li>
       		<li><a href="./images/violin.jpg" title="A pretty violin.">Violin</a></li>
       		<li><a href="./images/night.jpg" title="Beautiful night in la-la-land.">Night</a></li>
       		<li><a href="./images/spiderman.jpg" title="Spiderman!!!">Spiderman</a></li>
       		<li><a href="./images/Taylor.jpg" title="Pop-singer Taylor Swift.">Night</a></li>
       	</ul>
       	<img src="./images/gallery.png" id="placeholder">
       	<p id="description">Choose an image.</p>
       </div>
    </body>
    </html>
    

    js:

    window.onload = function() {
    	prepareGallery();
    }
    
    function prepareGallery() {
    	var gallery = document.getElementById("gallery");
    	var links = gallery.getElementsByTagName("a");
    	for (let j = 0; j < links.length; ++ j) {
    		links[j].onclick = function() {
    			showPic(this);
    			return false;
    		}
    	}
    }
    
    function showPic(whichpic) {
    	var placeholder = document.getElementById("placeholder");
    	// placeholder.src = whichpic.href;
    	placeholder.setAttribute("src", whichpic.href);
    	var description = document.getElementById("description");
    	description.firstChild.nodeValue = whichpic.title;
    }
    

    CSS:

    body {
    	background-color: lightgray;
    }
    div#imgBox {
    	width: 600px;
    	margin: 0 auto;
    }
    img#placeholder {
    	height: 300px;
    }
    ul {
    	margin: 0;
    	padding: 0;
    	list-style-type: none;
    }
    ul>li {
    	float: left;
    }
    ul a {
    	text-decoration: none;
    	display: block;
    	background-color: rgb(0, 0, 0);
    	color: white;
    	padding: 10px 21.7px;
    	transition-property: background-color;
    	transition-duration: 0.5s;
    }
    ul a:hover {
    	background-color: rgb(90, 90, 90);
    }
    ul::after {
    	content: "";
    	clear: both;
    	display: block;
    }
    div#imgBox p {
    	font-weight: bold;
    }
    

    优化

    可以把文字导航栏改成缩略图,再给缩略图增加动画,给下面图片区域增加轮播效果,完善整个相册画廊效果。

    初学前端,记录学习的内容和进度~
  • 相关阅读:
    Python中的unittest和logging
    android短彩信附件机制
    Android Mms之:深入MMS支持
    Android 源码阅读之SMS,MMS
    深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(一,添加附件)
    使用adb命令对手机进行截屏保存到电脑,SDCard
    Android中检测字符编码(GB2312,ASCII,UTF8,UNICODE,TOTAL——ENCODINGS)方法(二)
    解决新建短信时,输入“+86”,然后输入联系人名字“1”,按删除键之后,联系人变为“1”,删除操作为达到预期结果
    解决:People下面选择分享可见联系人,选择多个联系人后通过短信分享,短信中只显示一个联系人
    解决:短信添加录音附件,录音,没有录音时间限制,超出彩信最大限制也正常录音
  • 原文地址:https://www.cnblogs.com/xiuhua/p/13398784.html
Copyright © 2020-2023  润新知