Saber 酱的抱枕

Fly me to the moon

09/29
2015
学习

备份和恢复WordPress的记录

四季映姫 东方

虽然本站看起来和以前一模一样,不过已经换了空间重新装了一次哦~在这里总结下经验吧~

首先要备份的是数据库,建议从phpmyadmin里直接备份,导出sql格式。但这样的话一定要询问下客服,导入时限制的文件上限是多大。因为默认情况下mysql只支持2M以下的sql文件的导入。

其次去备份WordPress的文件,需要备份的是wp-content里面的plugins、themes、uploads文件夹。此外如果你修改了WordPress的文件,也备份出来。

最后检查其他需要备份的文件,例如.htaccess、favicon.ico、robot.txt、网站地图等文件。

恢复的时候先装上WordPress,然后把网站的文件传上来。最后去数据库里,清空WordPress的所有数据表,再导入之前的数据库备份。

当然域名解析和空间绑定也要改,这个就不多说了。

备份和恢复WordPress的记录

09/26
2015
学习

下载本站图片的js代码

本站以前有篇文章——《saber美图》。以前我看到了saber的美图就会发上来,频繁的更新。可是自从逛了P站之后这篇文章基本就没更新过了。这也算告一段落了吧,于是我想把这篇文章里的图片下载下来,这就有了下面的代码:

window.stop();
var allimg=$(".post_t img");
var downa=document.createElement("a");
document.body.appendChild(downa);
downa.download="";
var imgno=0;
function downimg () {
	downa.href=allimg.eq(imgno).attr("src");
	downa.click();
	imgno++;
	if (imgno>=allimg.length) {
		window.clearInterval(downimgt);
	};
	return imgno;
}
var downimgt=setInterval("downimg()", 1000);

使用方法:
打开文章页面,在文档加载完成之后(不必等待图片加载完成),在控制台执行上面的代码。
执行之后,将会停止页面加载,然后创建一个下载用的链接(所以此代码照例是chrome only)。最后,每一秒创建一个下载链接,以下载图片。
如果chrome询问是否允许此网站下载多个文件(应该是在地址栏上显示的提示),点击允许。

下载本站图片的js代码

09/24
2015
学习

使用after和before伪类可能使网页底部产生空隙

刚才排了一个手机页面,完了之后发现页面底部总是有个间隙,审查元素也找不到是哪里来的,因为body和html标签内都没有包含这个间隙。后来一点点查找,发现是after伪类引起的。

在清除浮动时,我们经常会使用伪类,例如:

.clearfix:after{content:".";display:block;height:0; clear:both; visibility:hidden;}

虽然可以给after和before设置宽高为0,但是它仍然是占据空间的。如果加了这两个伪类的元素后面没有其他元素了,就会造成空隙。如果后面有其他元素,伪类占据的空间就会被后面的元素占掉,不会产生空隙。

请看以下代码:

<body>
    <div id="a">
    	<div></div>
    	<div></div>
    	<div></div>
    	<div></div>
    </div>
    <div id="b"></div>
    <style>
    body{margin: 0;padding: 0;background: #aaa;}
    #a{height: 1000px;background: #fff;}
    #a div{float: left;width: 25%;height: 100%;}
    #a:after{content:".";display:block;height:0; clear:both; visibility:hidden;}
    #b{height: 200px;background: #0c0;}
    </style>
</body>

如果把元素b删掉,可以看到网页底部产生了空隙。不删除元素b的话,空隙就看不到了。

要解决空隙的问题,也很简单,给清除浮动的元素加上overflow: hidden;就行了。

使用after和before伪类可能使网页底部产生空隙

09/14
2015
学习

使用superfish制作多级下拉菜单

superfish是一个jQuery插件,可以用来制作多级下拉菜单。来看看是怎么用的:

首先引入所需的文件:

<link href="/f/superfish.css" rel="stylesheet">
<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script>
<script src="/f/superfish.js"></script>

引用的superfish.css只是负责样式表现的,我建议引入,然后自己覆盖规则来修改。

html结构则使用ul和li来编制层次:

<ul class="sf-menu">
	<li>
		<a href="">动漫<span class="sf-sub-indicator"> »</span></a>
		<ul>
			<li><a href="">龙与虎</a></li>
			<li><a href="">fate</a></li>
		</ul>
	</li>
	<li>
		<a href="">人物<span class="sf-sub-indicator"> »</span></a>
		<ul>
			<li>
				<a href="">夏娜<span class="sf-sub-indicator"> »</span></a>
				<ul>
					<li><a href="">出自灼眼的夏娜</a></li>
					<li>
						<a href="">名字叫傻娜<span class="sf-sub-indicator"> »</span></a>
						<ul>
							<li><a href="">其实是shana</a></li>
						</ul>
					</li>
					
				</ul>
			</li>
			<li>
				<a href="">saber<span class="sf-sub-indicator"> »</span></a>
				<ul>
					<li><a href="">本名阿尔托莉雅</a></li>
					<li><a href="">武器为石中剑和湖中间</a></li>
					<li><a href="">吃我EX咖喱棒!</a></li>
				</ul>
			</li>
			<li>
				<a href="">六花<span class="sf-sub-indicator"> »</span></a>
				<ul>
					<li><a href="">中二的典范</a></li>
					<li><a href="">六花最可爱了</a></li>
				</ul>
			</li>
		</ul>
	</li>
</ul>

ul的class不是必须用这个指定的,用这个只是为了使用superfish.css里面的规则。如不需要可以改成别的。span标签用来提醒用户这里有子菜单,也可以随意删改。主要的部分只需要ul和li的结构。

最后调用superfish:

<script type='text/javascript'>
    $(document).ready(function() {
        $('sf-menu').superfish();
    });
</script>

查看demo 下载superfish 参考更多

使用superfish制作多级下拉菜单

09/13
2015
学习

使用js制作鼠标拖动元素的功能

昨天用js做了鼠标拖动元素的功能,并且限制了元素不能超出窗口边界。

之前用js制作的的自定义滚动条中,滚动条的拖动也是用的鼠标移动事件,不过那个情况简单些,只需要判断和限制Y轴上的情况。这次的情况复杂了一点,限制部分花了不少时间才写出来合适的

查看demo

使用js制作鼠标拖动元素的功能

09/12
2015
学习

使用elevateZoom插件制作图片放大镜效果


之前我用过jqzoom这个插件做图片放大镜效果,今天看萌の里这个网站,发现它的图片放大镜挺好的,于是看了下源代码,看到它使用的是一个名为elevateZoom的插件。然后我也去百度了下用用,感觉良好。用这个比用jqzoom更快捷更有效率。如果你使用jqzoom,你需要引入它的css文件,还要注意它用来做鼠标指针的那张图片的路径是否正确。而elevateZoom只需要你引用它自身的js文件就够了。

做了一个demo,代码如下:

<script src="https://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script>
<script src="/f/jquery.elevateZoom-3.0.8.min.js"></script>
<img id="zoom_img" src="/f/saber美图125_s.jpg" alt="" data-zoom-image="/f/saber%E7%BE%8E%E5%9B%BE125.jpg">
<script>
$(function  () {
	$('#zoom_img').elevateZoom({
		scrollZoom: true,//允许滚动控制
		easing: true//允许动画效果
		zoomWindowWidth:550,//放大镜窗口宽度
		zoomWindowHeight:400//放大镜窗口高度
	});
});
</script>

查看demo

首先引入jq和elevateZoom的js文件,然后给图片设置data-zoom-image属性,指示大图url。最后绑定一下事件就行了。如果要用在多个图片上的话,一个个绑定就行了。是不是很简单呢?

关于elevateZoom的参数,可以参考这里

网上关于elevateZoom的信息比较少,官网在此,注意,你也许需要翻墙。再注意,官网上给出的代码都是驴唇不对马嘴的,请你自己查看源代码,找到真正使用的代码——而不是直接在页面上显示出来的代码。
Read More →

使用elevateZoom插件制作图片放大镜效果

09/11
2015
学习

发现图片的alt属性还是有点用的,甚是欣慰

图片 alt属性

早期的时候,本站的图片都是没加alt属性的。最近几个月才开始添加alt属性。不过一直以来都没感觉起来了作用没有,昨天倒是发现了。

昨天在看网站统计的时候,发现有的人是在百度图片搜女装山脉过来的。然后我也去搜这个关键词,看到了图片描述上出现的是图片的alt信息。

图片 alt属性

因为百度还没更新文章的固定链接,所以点进来是404,可以通过404页面的导航进入到正确的链接。

正确的链接是《女装山脉全CG》,但有时候百度跳转过来的网址是“www.saber.我爱你/濂宠灞辫剦鍏╟g/”,这是什么鬼。

发现图片的alt属性还是有点用的,甚是欣慰

09/10
2015
学习

js制作的的自定义滚动条

WordPress的文章编辑器好蛋疼,代码模式下如果插入的代码有空行,就会自动加上p标签,还把&符号给转码了,想插入直接运行的代码还是只好用iframe。

前两天看到bilibili个人中心的收藏夹,收藏夹改版后,左侧显示的是分类列表,那里用了一个自定义滚动条。于是我也想做一个出来。花了大半天时间,终于做出来了,运行良好。

由于最外层div设置了overflow:hidden属性,所以滚动也需要用鼠标滚动事件来做。这个之前做过,没费多大事就做出来了。到了用滚动条控制滚动的时候就犯难了。因为以前用到鼠标事件基本上就是onclick,现在的拖动则要使用mousedown、mousemove、mouseup这三项。百度之后看到了别人写的结构,这才明白了一些。然后设置鼠标移动时的事件,设法减小计算量(有些值甚至有三种方法可以设置),增加必要的限制。真是步步维艰,光拖动这块,最少用了4个小时才完成。不过做完了收获也不小。

做这部分的时候我发现如果把mousemove事件写到mousedown里面,而且过后不解除绑定的话,会累计次数。就是说你第2次触发mousemove的时候是执行2次,触发第10次的时候是10次……写到外面不知道是否可以避免。

代码比较多,不贴了,查看demo更好一些。demo里也保留了很多注释。

需要jq支持;代码已经封装成了函数,可以直接饮用(参数代码里有说明)。你需要在网页中预设的高度有三个:外层box的高度,主体部分的高度和滚动条容器的高度。鼠标滚轮每次滚动多少个像素是由变量preHeight规定的。

当然,在实际使用中也要注意这几个主要结构的css属性,例如外层box的overflow:hidden;以及一些定位属性等。

此代码在chromeV45、firefoxV39、IE8、IE11中测试通过。

注意:

在实际中使用,不建议应用到全网页上(虽然我已经在本站上成功试验过了)。因为外层box的高度小于内容的高度(要不怎么会出现滚动条),而且设置了overflow:hidden属性。这将导致这个区域的翻页快捷键无效(例如上下方向键、翻页键等),会影响用户体验。如果把body标签作为最外层容器,很容易被发现。

此外,在移动设备上这个完全没卵用。

所以这个玩意较为适合的使用场景是在单独的区域上使用。

js制作的的自定义滚动条

09/9
2015
学习

做了一个js控制的进度条效果

现在可以直接设置进度条的长度、或手动指定,以及读取特定属性来设置。

先看看基础结构:

<div id="box">
	<div id="lbar" data-l="70"></div>
</div>
<br><br>
<input type="button" id="setLBtn" value="设置一个进度">
<style>
	#box{width: 500px;height: 16px;border-radius: 8px;background: #ccc;}
	#lbar{width: 0px;height: 16px;border-radius: 8px;background: #0c0;transition:all .4s;}
</style>
<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script>

js代码:
function setL (element,length) {
element.width(element.parent().eq(0).width()*length);
}

//读取特定属性来设置进度,适用于多个进度条的场景
var allL=$("[data-l]");
for (var i = 0; i < allL.length; i++) { setL ($(allL[i]),parseInt($(allL[i]).attr("data-l"),10)/100); }; //直接设置进度条的百分比 setL($("#lbar"),0.4); //手动指定进度条的百分比 $("#setLBtn").click(function (argument) { setL($("#lbar"),parseInt(window.prompt("请输入一个表示百分比的整数", ""),10)/100); });[/code] 这次学到了把JQuery对象和DOM对象互相转换的方法。 JQuery对象和DOM对象的方法不通用,例如上面代码中读取特定属性的代码中,本来取到的属性的集合是jquery对象,可是在for循环里用了索引之后就成了DOM对象了,然后使用函数里的parent()方法就报错。这时候需要把索引之后的DOM对象重新转换为Jquery对象。 [code lang="js"]//把Jquery对象转换为dom对象,方法1:使用索引 $("p")[0]; //把Jquery对象转换为dom对象,方法2:使用get()方法,参数和索引一样 $("p").get(0); //把DOM对象转换为Jquery对象,使用$()包含DOM对象 var box=document.getElementById("box"); box=$(box);[/code] 查看demo

做了一个js控制的进度条效果

09/8
2015
学习

仿支付宝帮助图片切换效果

现在支付宝在二维码付款时,右上角有个帮助区域,可以切换两张图片。这时候我想到了一个问题,如果这里是使用banner切换的思路做的话——那样的话图片需要用排列,圆点指示器也得用html元素做出来,用在这么简单的一个地方,就显得太繁重了。于是我看了下源代码,不得不赞一声,毕竟是支付宝,人家不会像我一样低级。

支付宝是怎么做的呢?一个图片容器,里面两张图片,就这么简单。

你可能会问,指示器哪里去了呢?其实支付宝这里的指示器是做到图片上的,当图片切换的时候,指示器看起来就像是切换了一样。我一看到指示器和切换,就想到banner那里去了,这是思维定势,毕竟图样图森破。

但是我们点击指示器的时候,图片确实会切换。我想了一下,应该是在鼠标点击时判断点击位置,如果点击在左半边,图片就切换到第一张;如果点击在右半边,图片就切换到第二张。

于是做了个demo:

做出来之后才发现一件好玩的事情,指示器(实际上并没有真正的指示器)的心理作用大于实际作用,因为你即使在指示器之外点击鼠标(哪怕是点击图片左上角和右上角),图片也会正确的切换。

如果要切换的图片多的话,用这种方法就不那么简便了。
Read More →

仿支付宝帮助图片切换效果