亲自打造属于自己网站风格的工具边栏

首先请允许潜行者 m 介绍一下自创的名词“工具边栏”。现在大家在浏览网站的时候,经常会发现一些浮动的条状栏,通常具有向上向下的功能,当你点击一下,就可以方便的回到顶部或者前往底部。其实打造这样一个工具边栏,并不是很难,使用 jquery 很容易就可以做出来。下面,你跟随我的步骤,一步一步的做一下,就可以做出来了,然后你可以根据这个代码,进行一些修改,自定义一些东西。

废话不多说,先说一下我做的这个工具边栏。这个工具边栏是符合我自己做的模板“Q21”,Q21 模板的特点是黑白对比,所以这个工具边栏要突出黑白变化。经过构思之后,我决定这个边栏的样式是这样的:

当鼠标移动到“分享”按钮上之后,会自动滑出一个黑条,然后黑条上是各个分享按钮。具体的演示效果,你可以下载最后代码包查看。下面我们来开始动手一步一步的制作。

建立 html 结构

用 span 标签也行,不过我还是喜欢用 div,所以就用 div 来建立 html 结构。结构很明确了吧,一个大 div 包含三个小 div,分别是上中下三个按钮,其中分享按钮中,还需要再包含一个 div,用来滑出分享按钮。好了,结构就建好了。

<div id="tooltip" >
    <div id="toolt">▲</div>
    <div id="toolc" >
        <div id="sharetxt">分享</div>
        <div id="shareit" class="none">这里是分享代码</div>
    </div>
    <div id="toolb">▼</div>
</div>

注意,向上向下按钮,我使用的是字符,而不是图片。如果是图片的话,需要加载,而且动态变化,需要替换图片更加的不方便。至于如何打出这个上下两个三角号,就靠你的搜狗输入法了,如下图:

好了,有了 html 结构,我们再来定义一些 css。

CSS 代码

首先定义全局的字体

:root{font-family:"5FAE8F6F96C59ED1",helvetica,Arial;}

经测试,这个边栏,在微软雅黑的字体下效果最好,所以要规定网页使用微软雅黑。上面这句代码,:root 表示选择 html 根,对所有文档中的元素生效,其中 5FAE8F6F96C59ED1 表示的就是微软雅黑,至于为什么这样写而不写成“微软雅黑”,如果用户电脑是英文的,那肯定找不到微软雅黑这个字体,这样写法,只要有微软雅黑字体,就可以使用。

定位工具条位置

div[id="tooltip"]{
    width:40px;
    height:120px;
    position:fixed;
    bottom:50%;
    right:20px;
    }

这几句 css 定义了工具边栏的高度和宽度,同时 position:fixed 表示让它固定在页面中,不会根据滚动条的滚动而移动。bottom:50%,让它保持在页面中部位置,right:20px 表示让它距离右边 20 个像素。

响应操作

div[id^="tool"]{
    font-size:38px;
    cursor:pointer;
    color:#000000;
    }
div[id^="tool"]:hover{
    color:#999999;
    }

响应操作可以让工具更加人性化,例如上图效果,当我们把鼠标移动到箭头的时候,它会变成灰色,表示你已经把箭头移动到上面了。在这里,我使用了新型的选择器 div[id^=”tool”]它的意思是,选取所有以 tool 开头的 div 标签。定义字体大小为 38px,调整三角形成为合适大小。设定 cursor:pointer 属性,当你鼠标移动到上面的时候,会显示成手指形状,让你误以为是一个可以点击的链接。下面的语句,当你鼠标移动到上面的时候,颜色变成#999999。这是响应操作,提高用户体验。

中部 CSS 代码

div[id="toolc"]{
    font-size:22px;
    float:right;
    width:40px;
    height:70px;
    overflow:hidden;
     }

div[id="sharetxt"]{
    width:26px;
    margin-right:8px;
     float:right;
     height:70px;
     display:inline;
    margin-top:4px;
    }
div[id="shareit"]{
    width:304px;
    height:62px;
    float:right;
    height:30px;
    margin:15px 0px;
    }
.none{
    display:none;
    }
.inline{
    display:inline;
    }

比较简单,没有什么亮点,自己看看就行了。重点在于如何实现滑动出现分享按钮。我采用的方法是,定义两个 div,浮动放置,其中分享按钮那个 div 默认是隐藏的,只有鼠标移动上去触发之后,它才会显示出来。

Jquery 代码

在添加 jquery 代码之前,我们需要彻底理清滑出分享按钮的实现方式。jquery 并没有提供横向滑动出现的方法,那要怎么实现呢?可以这样实现,先把底色变成黑色,让装载分享按钮的 div 框出现,但是这时候由于宽度不够显示分享按钮 div,所以你暂时看不到。使用 jquery 的 animate 方法,让宽度逐渐变宽,直到完全显示分享按钮 div。这样就会造成一个假象,黑色滑出,然后出现分享按钮。

具体的实现代码如下

$(function(){
    $("#toolc").mouseenter(function(){  //这里使用mouseenter方法来触发,当鼠标移动上去之后,触发这个方法
        $("#toolc").css({"color":"#ffffff","backgroundColor":"#000000"}); //先对中部添加背景,并且把文字变成白色
        $("#shareit").removeClass("none").addClass("inline"); //去掉shareit的none,让它显示出来,但由于宽度不够,无法显示
        $("#toolc").animate({width:"350px"},200); //使用animate方法,动态的改变宽度,直到显示出来分享按钮
    }).mouseleave(function(){ //当鼠标从目标区域中移走,就触发下面这个事件
        $("#toolc").css({"color":"#000000","backgroundColor":"#ffffff"}); //同反
        $("#shareit").removeClass("inline").addClass("none"); //同反
        $("#toolc").animate({width:"40px"},200); //同反,你懂的
    });
    $("#toolt").click(function(){
        $("html,body").animate({scrollTop:"-=900px"},200); //每点击一下,就向上滑动900px
    });
    $("#toolb").click(function(){
        $("html,body").animate({scrollTop:"+=900px"},200); //每点击一下,就向下滑动900px
    });
});

注释我已经写在上面代码中了,仔细耐心看一下。这里,我想说的是向上向下滑动 900px。我并没有让它点击直接到顶部或者底部。因为我觉得,如果文章比较长,浏览者并不一定想直接滑动到底部,而是想看看下面的内容。如果他真想滑动到底部,也只需要点两次或者三次按钮即可。这也是一个用户体验的细节。

当然,你还需要申请分享代码

可以去 bshare jiathis 百度分享那里,申请一下代码,粘贴到 shareit div 中就可以了。怎么样,其实原理也非常简单,动一下脑子就可以了。

Jquery.lazyload.js究竟要怎么使用

Jquery.lazyload.js 这个jquery插件,是用来缓冲加载图片的插件。如果一篇文章很长有很多图片的话,下载图片就需要很多时间。而这款插件,会检测你的滚动情况,只有你要看到那个图片的时候,它才会从后台请求下载图片,然后显示出来。使用这个插件,可以在需要显示图片的时候,才下载图片,所以可以减少服务器的压力,避免不必要的资源下载。一个简单的例子,如果一个人不看下面的图片,那加载下面的图片就是一种浪费。

但是现在,很多javascript大牛分析得出,这个插件其实并没有真正的缓加载效果。确实,官方也已经给出了说明和解决方法了。

插件原理:修改目标的src属性为orginal属性,从而中断图片的加载。检测滚动状态,然后把视野中的目标src属性还原,制造缓冲加载的效果。
原因:在新版的浏览器中,即使你删除了javascript控制的src属性,浏览器仍然会去加载这个图像。
解决方法:修改html的结构,在img标签中添加新的属性,把src属性的值指向占位图片,添加data-original属性,让其指向真正的图像地址。
例如:<img data-original=“img/example.jpg” src=“img/grey.gif”>
这样我们就需要判断一下,我们究竟还要不要使用这个插件。 ## 使用: 1. 必须按照这种结构才有实际作用,需要对输出进行定义。 2. 可以节约服务器资源,并且有较好的用户体验。 3. 如果图片很大,当用户滚动到目标位置,需要较长时间下载。 ## 不使用: 1. 增加服务器压力,浪费系统资源。 究竟使用不使用,还是要看你自己的实际需求。如果你图片比较少,就不必使用了,如果你图片比较多,可以考虑一下。但是,使用的话,你可能需要把每一个img标签上自己加上这个属性,会稍微麻烦一点。潜行者m博客上,就用了这个插件,不过没用使用官方说的那种结构,要的只是一个缓冲加载的效果。 ## 如何使用: 如何使用这个插件呢? 第一步:加载相关文件。 很明显,你要加载jquery和这个插件。你可以使用以下代码,加载这几个文件:
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
第二步:定义图片结构。 按照官方的建议,定义你的img结构:
<img class="lazy" src="img/grey.gif" data-original="img/example.jpg" width="640" heigh="480">
第三步:触发这个插件,生效。 激活以下,你就可以在目标中使用了。
 $("img.lazy").lazyload();

高级使用方法:

更周全的做法

我们不得不思考这样一个问题。我们定义了这样一个结构,那么网页中,就不会加载源图像了。只有当javascript执行,才会显示这个源图像。如果用户的浏览器不支持或者用户关掉了支持javascript的选项,那么我们的这个图像就无法显示出来。也就是说,没有javascript的支持,我们的图像就无法显示出来。

应对这个问题,我们需要引入noscript标签。大体思路如下:用noscript包含真实的图像位置,当浏览器不支持javascript,直接显示图像。对现有图像,隐藏处理,使用show()方法触发显示。这样,如果浏览器不支持javascript,我们自定义的img就不会出现,而显示noscript里面的图像。具体实现代码如下:

<img class="lazy" src="img/grey.gif" data-original="img/example.jpg"  width="640" heigh="480">
<noscript><img src="img/example.jpg" width="640" heigh="480"></noscript>
.lazy {
  display: none;
}
$("img.lazy").show().lazyload();

提前加载

默认的情况是,当你滚动到图片位置的时候,插件开始加载。这样,用户可能首先看到的是一个空白图像,然后再缓慢出现。如果你想在用户滚动之前,提前加载这个图像,你可以配置一下参数。

$("img.lazy").lazyload({ threshold : 200 });
threshold这个参数,就是用来提前加载的。上面这个语句的意思是,当距离图片还有200像素的时候,就开始加载图片。 ### 自定义触发事件 默认的触发事件,是滚动,当你滚动的时候,就会检查然后加载。你可以使用event属性,设置你自己的加载事件,之后你可以自定义触发这个事件的条件,然后去加载图像。
$("img.lazy").lazyload({ 
    event : "click"
});

自定义显示效果

默认的图片实现效果,就是没有效果,下载完成之后,直接显示出来。这样的用户体验并不好,你可以设置effect属性,来控制显示图片的效果。例如

$("img.lazy").lazyload({ 
    effect : "fadeIn"
});
fadeIn的效果就是,改变图片的透明度,渐现的方式出现。效果: [effect demo page](http://www.appelsiini.net/projects/lazyload/enabled_fadein.html) ### 把图像插入某个容器 大家如果使用智能手机的话,经常去应用网站下载应用,他们通常使用一个横着的容器,放一些手机截图。使用container属性,能很轻松在容器中实现缓冲加载。首先,我们需要用css定义这个容器,然后用这个插件进行加载。效果: [vertical](http://www.appelsiini.net/projects/lazyload/enabled_wide_container.html)
#container {
    height: 600px;
    overflow: scroll;
}
$("img.lazy").lazyload({         
     container: $("#container")
});

加载不可见图像

有部分图像是不可见的,我们对其加上类似display:none等属性的图像。默认的情况下,这个插件是不会加载隐藏的不可见图像。如果我们需要它加载不可见图像,我们需要使用skip_invisible属性,对其赋予false

$(“img.lazy”).lazyload({
skip_invisible : false
});

官方说明:http://www.appelsiini.net/projects/lazyload

如何高度自定义 QQ 邮件列表外观样式

2012/12/10 日补充: 这种方法目前已经失效,由于腾讯采用了某些方法,导致 nid 的值是动态变换的,使用这种方法,无法正确的订阅你的频道。具体的解决方法,正在测试中,暂时不要使用下面这种方式。

首先先来了解一下 QQ 邮件列表是什么。

QQ**邮件列表是一项免费的群发邮件服务。通过它,您可以在网站上加入订阅入口,来获取您的订户用户订阅后,就能方便的给他们群发邮件了。如果你写博客,它能自动将最新的博客文章发给读者。如果你开网店,可以用它批量通知顾客店铺的最新优惠。 如果你正管理一个组织**,通过它,能快速向组织成员发布公告。使用 QQ 邮件列表,让您的邮件发得更多、更快、更准!
总之,这是一个让帅哥更帅,让美女更美,让垃圾邮件正常群发的腾讯唯一几个免费的服务。很多网站上,都有 QQ 列表,你可以输入邮箱来订阅网站内容,站长就可以发一些资讯到你的邮箱里。

我们知道,添加这个服务,就需要申请代码,然后把代码放到网站上。但是,它生成的外观样式,并不一定符合我们网站的风格样式,本文潜行者 m 就要跟大家一起分析一下他们的代码,然后进行自定义修改,来符合自己网站的风格。获取代码有两种形式,一种是图片的形式,另一种是一个文本输入框,直接填写上邮箱提交。下面潜行者 m 一一分析。

图片形式:

图片形式,他们允许定义一些简单的参数:

我们看一下生成的代码

<!--QQ邮件列表订阅嵌入代码--><a target="_blank" href="http://list.qq.com/cgi-bin/qf_invite?id=55c8d4cfd86c2322b0da011d72769e61e8a471a03fa52b74">
<img alt="填写您的邮件地址,订阅我们的精彩内容:" border="0" src="http://rescdn.list.qq.com/zh_CN/htmledition/images/qunfa/manage/picMode_light_l.png"/></a>

从代码中,就可以看出,很简单的两个标签。使用了一个 a 标签,包裹了一个 img。而这个 img 指向的图片地址就是http://rescdn.list.qq.com/zh_CN/htmledition/images/qunfa/manage/picMode_light_l.png。这样,我们修改这个图片地址成我们自己准备好的地址就可以了。同时我们还可以加上一些css代码等等。只需要a标签中的href属性为http://list.qq.com/cgi-bin/qf_invite?id=55c8d4cfd86c2322b0da011d72769e61e8a471a03fa52b74即可,因为这个地址是我们订阅的填写页面。

代码方式:

代码方式要稍微麻烦一点,但是省下很多功夫,因为用户不用再打开一个页面去填写邮箱了。

我们再来看看代码:

<!--QQ邮件列表订阅嵌入代码-->
<script >
var nId = "3105746ef562384a0ffbc67926fa2810b331ea5d6a5eb435",nWidth="auto",sColor="light",sText="填写您的邮件地址,订阅我们的精彩内容:" ;;
</script>
<script src="http://list.qq.com/zh_CN/htmledition/js/qf/page/qfcode.js" charset="gb18030"></script>

这段代码里,上面那一句是定义了几个参数,其中 nID 参数,是你这个订阅频道独有的,要传输到下面的 qfcode.js 使用。那这个 qfcode.js 文件的内容是什么呢?直接打开http://list.qq.com/zh_CN/htmledition/js/qf/page/qfcode.js这个文件看一下就知道了。由于代码比较多,我把关键代码提出来:

"<div class="rssbook ",sColor,
" " style="width:",nWidth," "><p class="info">",sText,"</p>",
"<div class="mailInput">",
"<form action="http://list.qq.com/cgi-bin/qf_compose_send" target='_blank' method='post'>",
"<input type="hidden" name="t" value="qf_booked_feedback">",
"<input type="hidden" name="id" value="",nId,"">",
"<input  id="to" name="to" type="text" class="rsstxt" value=""/>",
"<div class="rssbutton"><input type="submit" value="订阅"></div>",
"</form>",
"</div></div>"].join(""));

这些代码的意思,就是说,在页面中输出了一个表单(form),它提交的地址就是http://list.qq.com/cgi-bin/qf_compose_send,表单里面有三个input元素,其中两个是隐藏的,用来发送参数的,有一个是发送填写的邮箱的。这两个隐藏表单中发送的内容,就是你的nID等。

好,弄清楚了这个,我们就按照自己的风格,动手做一个表单,然后根据它的这个表单,填写上参数,进行提交就可以了。目前,从这个代码中,潜行者 m 提取出以下几个信息:nID 3105746ef562384a0ffbc67926fa2810b331ea5d6a5eb435 、 POST http://list.qq.com/cgi-bin/qf_compose_send。那现在我们自己写一个提交表单。

<form action="http://list.qq.com/cgi-bin/qf_compose_send" target="_blank" method="post">
<input type="hidden" name="t" value="qf_booked_feedback" />
<input type="hidden" name="id" value="3105746ef562384a0ffbc67926fa2810b331ea5d6a5eb435" />
<input type="text" id="to" name="to" value="" placeholder="输入你的邮箱" />
<input type="submit" value="订阅" /></form>

这样就可以了,我们只要填写上,点击订阅,就会订阅了。我们自己写出了这个表单,然后再对其应用 css 修改它的样式,来符合我们网站的风格,这样就大功告成了。

近期入手K450,记录一下感受

学校的枯燥生活,有点音乐会更美。

有了音乐,还需要有个好耳机才更完美。

这半年来,从刚开始40块的漫步者h180,我第一次感受到好耳机与普通耳机的区别。后来有买了一个声籁EM300,也是40块左右,但是便携式的耳机,比耳塞要大很多,低音也更好。但是一分钱一分货,它的音质在同等价位最好,但是线材太细,用了大约三个月,接口处的外皮已经磨烂了,里面的金属丝都露出来了,不过还能用,就是摘耳机的时候,会划一下脸。不过现在再用,右耳朵有点电磁声。

后来就开始认真的关注耳机,变成了一个耳机准发烧友。一直看着K420不错,因为不是太贵。那次,赚了人生中第一个300块钱,打算出手买一个,结果那天中国银行短信系统抽风,验证短信怎么也收不到。当然,幸亏那次抽风,否则现在我可能就没有K450了。

再后来几天,在京东上看到akg的k314p降价70,只卖130。看到之后,二话不说就买下了。其实我从来不知道这个耳机,但是看在降70只是130,又缺个耳机子,就买上了。后来又搜了一下,京东搞促销之前,果然都是提很多价格。不过这个价格也算是最低了,X猫上一般都140,还要邮费。

K314P有个致命伤,就是直接没有低音效果,耳塞嘛,毕竟不如耳机听起来效果好。又开始盼望着K420、K450。

之前K450是不敢想的,毕竟600多块钱,一个月的生活费。但是K420的话,已经有个K314p了,音质好一点的话,就有点重复了。然而,看评论K450音质比K420提升了很多,肯定,价格也贵了一倍。

迟迟不敢下手,打算等到个促销之类的。但是,这个价格不想联想产品那么水,几个月了都是固定在658不变。

后来在天猫买了台电脑,赶上活动,返了300块。这300可以随便花。再然后就是老一套,向老妈硬磨软泡,最终申请下来了400块钱梦想基金^_^。找了一家,VIP价格只有620还包邮,送礼包,果断入手。

然后两天就来了。初听,声音好浑浊啊,低音低的太吓人了。再听,已经好了很多了。还送了煲机碟,不过我没打算怎么煲,直接小音量听就行了。要是耳机非得煲鸡多少个小时才好,那么厂家早就把耳机先煲它个几百小时,再包装出来卖了。

这有几天了,音质也之间好多了,低音比较好,细节比较清晰,当然需要ape无损格式咯。我妈也要听,听了一会就不行了,说听得头晕。。

这个耳机子,可以坚持我用一年多了吧,下次再升级,就要靠自己赚的钱咯。

 

使用jquery插件coin-slider轻松打造幻灯片教程

今天为了做一个模板,来收集幻灯片插件,最终确定了两款比较合适的。coin-slider和nivoslider,为此,研究了一下午,从各个方面来实验这两款插件,究竟哪款比较适合、比较好。

当然,聪明的你看题目就已经知道了。我必须要吐槽一下nivoslider这个jquery插件。这两款插件,在看官方的demo时,这个插件的效果要比coin-slider好一些。看了一下教程,可以自定义的参数较多,貌似功能要更强大一下。于是我就首先研究了一下这款插件的使用方法。由于网上教程比较少,大部分都是直接复制的官方教程,我就直接拿官方的demo代码来看了。这一看,直接晕死。加载了N个css文件,以及各种图片文件,当场晕死。demo里面的代码,也是很多很乱,不是怕多、乱的代码,就怕引用的各种文件各种效果的叠加,分析起来累死个人。

干脆自己按照步骤,自己写个小demo,看一下这款插件的易用性怎么样。按照官方的步骤,写好了图片链接,加载了需要的javascript文件等。打开一看,立刻没有了官方demo的美观和强大,上面的翻页等,都是需要css定义,这个暂时没有管理,所以难看就难看吧。图片切换也算正常,不正常的地方就是,在某个地方,出现了下一张图片的一大堆图片块。这种切换的原理很简单,生成很多div,每个div用css中的background-position属性,把整体的图片切成块,然后对每块进行透明度等的变化,显示的效果就是你看到的那种。但是现在,在旁边出现了一堆块都是乱的,直接无语。具体什么情况,我已经删了,也不截图了。估计是某块css没有定义好,当我打开官方demo的css时,又怵头了,这么多,这么乱的代码。功能的强大,必定面临使用的难度提升,估计这个是给专家级用户使用的,我等小白还是趁早溜走吧。研究了两三个小时,无疾而终。转身向coin-slider走去。

先在网上搜索一下相关资料,某前辈已经写出了一个教程,并且自己做了一个demo,下载下来看了下,效果挺好,代码挺少。同时也下载了官方的demo,打开官方demo,下面的说明,说的清清楚楚的。简而言之就是:加载必备组件=》你自己写图片链接=》执行那个操作。实事也是如此,可能我之前研究nivoslider,而coin-slider和它的原理和操作类似,所以我很快就上手并且做出了自己想要的效果。下面来依次讲解:

1,加载必备组件

这个coin-slider是jquery的一个插件,当然离不开jquery了。所以我们要加载三个项目:jquery、coin-slider和coin-slider-styles.css这三个。后面两个就是这个插件包,最后的那个css文件,是用来格式化幻灯片的相关样式。我估计nivoslider就是因为缺少了一个这个,所以才导致的乱,也有可能是我没有发现这个东西。代码如下:

<script type=”text/javascript” src=”jquery.js”></script>
<script type=”text/javascript” src=”coin-slider.min.js”></script>
<link rel=”stylesheet” href=”coin-slider-styles.css” type=”text/css” />

2,编写你的图片链接

我们首先需要指定一个带有id的div标签,这样在第三步执行的时候,插件才能找到我们想要播出的图片。它的图片的写法,也有几个特点,就是如果你想点击图片跳转到某链接,在外面加上a标签;在img标签后面,新建一个span标签,里面的内容,将会作为图片的说明文字出现。直接看代码:

<div id=”coin-slider”>
<a href=”#” >
<img src=”images/walle.jpg” >
<span>
Description for nem<br />oDescription for nemoDescription for nemoDescription for nemoDescription for nemoDescription for nemoDescription for nemoDescription for nemoDescription for nemoDescription for nemo
</span>
</a>
<a href=”#111”>
<img src=’images/nemo.jpg’ > //加载的图片
<span> //图片对应的说明
Description for nemo
</span>
</a>
</div>

这个代码的大体框架,是我从官方的demo中提取出来的,这里我又要吐槽一下了,官方的demo文件,写的实在是太不规范了,html标签都用的是大写,而且从上面的img的src就可以看出来,他们竟然用了单引号!css文件里也是这样,患有代码强迫症的潜行者m,花了好几分钟,才把大部分代码变成小写,添加合适的换号,真无语。看了一下开发时间,2010年的作品,那时候xhtml应该普及了,为什么还用大写的写法,无语了。

3,执行操作

确保上面两个步骤完成之后,就需要触发它的方法,来实现幻灯片的功能了。方法当然是

    $(document).ready(function() {
$(‘#coin-slider’).coinslider({ height:248 }); //使用各种参数配置来扩充他的功能
});

当然,你也可以使用window.onload,那样可以确保幻灯片图片被完全下载下来之后,再出现幻灯片。

很显然,还可以配置很多参数,让幻灯片的功能更加强大。在上面的代码中,我添加了一个参数height:248,因为我的照片高度是248px。下面介绍一下其他参数,我在官方注释后面,小小的翻译了一下,不准确的话,还望见谅。

width: 565, // width of slider panel 幻灯片的宽度
height: 290, // height of slider panel 幻灯片的高度
spw: 7, // squares per width 幻灯片切出小方框的宽度
sph: 5, // squares per height 幻灯片切出小方框的高度
delay: 3000, // delay between images in ms 切换图片的时间,毫秒单位
sDelay: 30, // delay beetwen squares in ms 小方框变化的时间,毫秒单位(这两个尽量不要改,官方说改了容易出现过度问题)
opacity: 0.7, // opacity of title and navigation 图片下面的说明文字背景的透明度
titleSpeed: 500, // speed of title appereance in ms 标题消失的速度,毫秒单位
effect: ‘’, // random, swirl, rain, straight 变换样式,随机,漩涡,下雨,连续(自己试试就知道效果)
navigation: true, // prev next and buttons 是否显示前个、后个按钮
links : true, // show images as links 是否把图片当做一个链接
hoverPause: true // pause on hover 你把鼠标放上去的时候,图片是否继续变化

我们只需要像这样,填上自己定义的参数即可:

$(‘#coin-slider’).coinslider({ width: 900, navigation: false, delay: 5000 });

4,高级用法

在具体的使用过程中,它的默认样式,肯定不符合我的模板需求,所以我需要对它进行更加细致的修正。那就是通过css,官方的css文件里,你可以直接修改,你也可以新建css文件,对它进行定义。在火狐浏览器中,可以方便观看这个插件生成了些什么div标签,以及相应的id和class。既然你是高级用户,当然难不倒你,我只是在这里提一个思路,具体的就要靠你自己去修改了。

最后,打包一下本教程的资源,放上来。点击下载:coin-slider

 

ThinkSAAS 的安装与使用基础教程

昨天花了一段时间写这篇文章,电脑上装了金山词霸,词霸装了一个 firefox 插件,不知道为什么,在写文章的时候,就自动插上一个隐藏的 div 标签,导致频出异常.写完的那篇文章,也丢失了不见了.现在禁用了这个插件,就好了.

本文所说的 ThinkSAAS 版本为 1.85,在其他版本中,可能会略有不同.

安装

ThinkSAAS 的安装,是比较简单和方便的,我们首先把下载包解压,把 www 文件里面的所有文件上传到服务器.

之后,访问我们的网站,填写上相应的配置信息即可,系统会自动进行安装

不到一分钟,系统就安装完成,这时候,你可以到前台看看或者到后台配置网站相关信息.

配置

ThinkSAAS 系统与大家常见 cms 系统不同,它的功能配置,并不像其他系统那样,一个功能组打开配置.

简单形象的说,ThinkSAAS 系统,只是一个空房子.我们编写开发 APP 组件,就相当于在这个空房子,砸出了一个厨房.但是仅仅有一个厨房还不行,我们做饭需要煤气灶和吸油烟机,所以我们开发出插件,来增强 APP 的功能和效果.这样,如果我想配置一下吸油烟机的功能,我需要走到厨房的吸油烟机那里,进行修改配置.

1,系统管理

在系统管理界面,可以配置我们网站的基础信息,以及缓存处理和数据库优化等.

2,APP 管理

在 APP 管理界面,是我们系统中已经内置的一些必须的 APP 组件

正如我前面说的那样,如果我想配置管理网站中发布的文章,那么我就需要点击文章 APP 后面的管理按钮进行配置. 取消导航的意思就是取消在首页显示的链接.

3,插件管理

插件是对 APP 组件的功能扩展,系统已经内置了部分插件,但是有部分非必须的插件没有启用.你可以根据你网站的需求,开启相应的插件.

启用插件之后,部分插件还需要你去配置一下才能使用,例如:QQ 登陆.

4,安全中心

安全中心里面,你可以设置屏蔽的敏感词或者是屏蔽的 IP 以防止攻击.同时还提供了一个创意性的功能,你可以提交你遇到的垃圾关键词,也可以下载云端的垃圾关键词,实现垃圾的共享屏蔽.

5,获取更多组件和插件

你会需要更多的组件和插件,来扩展你网站的功能,适应你的用户需求.你可以在官方网站搜索找到这些组件和插件,但是有些插件是需要你去购买.你也可以联系官方网站有开发经验的朋友,为你的网站定制插件.

解决iconv和mb_convert_encoding函数的汉字乱码问题

近期在做一个小应用,就是填上信息,然后输出wordpress模板标准的style.css文件,当然,这个文件包含了CSSreset 和本人常用的原子类,这样可以大大缩小制作的难度和时间。

于是就遇到了一个编码问题,因为wordpress的编码是UTF-8,所以我们模板的css文件编码最好也是UTF-8。因为在早期的浏览器中,如果编码和文档中声明的不同,会读取不出来。IE6就是这样,在其他浏览器中没有出现类似的情况,不过还是建议使用UTF-8编码,如果你的模板要面向全世界的用户,你必须用这个编码,因为国外的电脑上没有装GBK、GB2312这类中文编码,就会出现乱码,或者出现一些其他的意外情况。

那么,我使用php接受字符串,并且输出的时候,需要使用编码相关的函数。经过搜索,找到了标题上面的两款函数。iconv和mb_convert_encoding,这两个函数,可以把字符串进行编码,然后配合file_put_contents这个函数,可以输出你指定的编码。我这个工具的原理很简单,就是获取表单内容,读取已经保存的写好的文件,然后混合编码,输出。

$add_string = $add_string.$fpr; //$fpr变量是读取之前写好的UTF-8编码的style.css文件模板
$add_string = iconv(“utf-8”,”utf-8”,$add_string); //由于读取的style.css文件是utf-8编码,所以这里用了utf-8编码转换utf-8编码
file_put_contents($new_filename,$add_string);

但是问题就出现了,出现在中文上了。由于iconv是php默认安装的模块,所以先使用的iconv函数。编写完成之后,输入中文信息,输出中断,查看输出文件,在中文的地方,输出了一个DZ,之后就断掉了。经过搜索,说这是iconv的一个bug,遇到“-”这样的符号,就出问题,可以使用“GBK”编码或者是加上“//IGNORE”参数解决。实验了一下,还是没有效果,加上了//IGNORE参数,中文全被过滤,只输出英文。

疯狂的在网上查找相关资料,没有找到,我找了一段网上编写的,有这个函数的应用,把代码运行了一下,结果发现,还是没有。蛋碎,别人写的可以用的代码,在自己电脑上还是不能支持中文。我phpinfo了一下,这个模块正常啊,我还把代码上传到远程服务器上,执行还是不行。

没办法,我考虑使用同样的功能的mb_convert_encoding函数,来试一下。结果还是不行,仍然出现乱码。这个时候,我突然想,不要把utf-8转换成utf-8 了,把GBK转换成utf-8试试怎么样啊。试了一下,表单部分在utf-8文件中,显示正常,但是模板(style.css模板用的utf-8编码)中的中文,全都变乱码了。研究一晚上这个问题了,已经到了0点了,果断关机睡觉。

在床上,翻来覆去的思考这个问题。最后的这个尝试,给了我一个思路。然后我就想明白了,我们用浏览器输入内容,我们也没有规定编码是什么,那系统得到我们输入的内容,它的编码是什么呢?那就只有GB2312 了,因为我中文系统默认的编码就是这样。所以,我对字符串的处理,应该是由GBK、GB2312来转换成UTF-8编码才对。这就是为什么最后,表单内容正常,而源css模板不正常了。我用utf-8保存的css模板,却用GBK的方式去读,然后转换成utf-8编码,读出来的时候,已经是乱码了,再把乱码转换成utf-8,那不更乱了。

不仅感叹一句,有多少问题,是在床上解决的,别想歪了哦 ^-^

今天早上起来,立刻按照昨晚想的思路写了一下,果然可以成功输出汉字。最终代码:

    $add_string = iconv(“GBK”,”utf-8”,$add_string);//先把表单内容转成utf-8
$add_string = $add_string.$fpr; //再与utf-8编码的css模板文件结合
file_put_contents($new_filename,$add_string); //输出

就这样,变化一下顺序,这个问题就完美解决了。今天写这篇文章时,发现这是一个多么简单的逻辑问题,却研究尝试了一个晚上,自己也真够笨的。不过最终解决了就好。我们平时都看书,太重于理论,到实践的时候,却发现,出现好多书上没有的错误。但是有了这个经历,以后遇到编码问题,就再也不用怕了。

另附这两个函数的用法:

iconv(“UTF-8”,”GB2312//IGNORE”,$data); //意思是把$data字符串由utf-8编码转成gb2312编码,刚开始就被这个误导了

mb_convert_encoding($data, “UTF-8”, “GBK”); //这个意思是把$data字符串,由gbk转成utf-8编码,注意顺序与iconv相反

至于gbk和gb2312,都是中文编码,区别在于,你想多打字,就打gb232,想少打字就打gbk.

此外,上面这两个函数,需要配合file_put_contents这个函数输入才有效,这个函数的用法和其他输出函数都一样.不再赘述.

ThinkSAAS 数据库结构 -> 数据表结构

注:这段时间,要用来研究一套系统ThinkSAAS,一个目前还不是很成熟的轻量化论坛系统.

看到很多app都需要数据库的操作,再看了一下,好像没有关于数据库结构的文章,然后我就整理了一下.

这是第一篇文章,关于数据表的结构,之后会陆续把一些app开发常用的数据表的结构整理出来.

完全是音译,有部分还是不理解功能是什么,还望邱君和高手把这部分用处说一下,不确定的后面有”???”

+——————————————————————-+

| ts_anti_email => 阻止邮件名单

| ts_anti_ip => 禁止IP

| ts_anti_word =>禁止关键词

| ts_area =>用户区域

| ts_area_city =>用户居住城市

| ts_area_province =>用户居住省

| ts_article =>文章列表

| ts_article_cate =>文章目录

| ts_article_comment =>文章评论

| ts_attach =>附件列表

| ts_feed =>订阅列表

| ts_group =>小组列表

| ts_group_cates =>小组分类

| ts_group_options =>小组配置

| ts_group_topics =>小组帖子

| ts_group_topics_add =>添加小组主题???

| ts_group_topics_collects =>收藏主题?

| ts_group_topics_comments =>小组主题评论

| ts_group_topics_type =>小组主题类别

| ts_group_users =>小组成员

| ts_home_info =>首页信息

| ts_mail_options =>邮件配置就是系统发邮件的配置

| ts_message =>消息

| ts_photo =>照片列表

| ts_photo_album =>相册列表

| ts_photo_comment =>照片评论

| ts_photo_options =>照片选项

| ts_session =>session 你懂得

| ts_system_options =>系统配置

| ts_tag =>标签列表

| ts_tag_article_index =>文章标签指数???

| ts_tag_group_index =>小组标签指数???

| ts_tag_photo_index =>图片标签指数???

| ts_tag_topic_index =>主题标签指数???

| ts_tag_user_index =>用户标签指数???

| ts_user =>用户列表

| ts_user_follow =>用户关注跟随

| ts_user_gb =>用户留言

| ts_user_info =>用户信息

| ts_user_invites =>邀请用户

| ts_user_open =>第三方登录

| ts_user_options =>用户选项

| ts_user_role =>用户参与任务

| ts_user_scores =>用户积分

+———————————————————————-+

电商大战正在进行时

近日,由于京东SEO的一番豪言,终于引发了中国电商大战。

最突出当属京东VS苏宁。当然和苏宁相似的国美也打进来,之后当当看不下去了,随后其他的比较小的电商网站也打进来。

截止到目前,已经有如下的网站正在开打:

怎么打?

  1. 首先是口水战,各方SEO都发表微博等消息,声称自己的价格策略,怎么对抗对方。
  2. 其次是价格战,都有一定降价或者是促销方式。当然,价格战打得不如口水战。
    令人遗憾的是,亚马逊、X猫却十分淡定,没有什么行动。特别是X猫的老大马云,还指挥旗下产品一淘,趁机揭短,推广人们使用它去搜索商品。(请看=>http://www.etao.com/pk/report.html)

现在打得真是好热闹。各位网友,如果有家电大件想要入手,现在抓紧行动吧,因为这场大战过去之后,就没有这么好的机会了。

为什么?

在这场电商大战之中,各个电商都在拼。京东SEO已经召开过股东会,股东们都放出了豪言:我们除了钱什么都没有,你尽管去打吧。

所以,这场战争之后,肯定会消亡一批电商。那么剩下的电商,就处在了垄断地位。这打得过程中,他们损失的钱,会在垄断时期,迅速的收回。这或许就是京东的目的。

这个事件会载入中国互联网史册的,故赶紧在这里发表一篇博文记录一下。

在搬家的时候随时注意好你的robots

首先先来说一下robots这个文件.

简单的说,这个文件是控制搜索引擎收录网站的.搜索引擎会派出蜘蛛在网络中爬行,但是有的时候,我们的网站或者网站的某个目录并不想被搜索引擎爬行到并且收录。例如一些后台文件,配置文件等等。搜索引擎也思考到了这一点,就弄出了一条规则,爬行一个网站的时候,先读取网站的robots文件,查看哪些被允许爬行,哪些不允许。之后再进行爬行收录。

在seo中,这是一个很重要的东西,它告诉搜索引擎哪些可以收录等,同时弄的不好,也会对网站收录造成致命伤害。这次就是一次血的教训。

在上次网站搬家之后,新主机还没有开启rewrite模块,所以博客链接无法伪静态写成以前的样子。之后又发生了一些事情,没有上网管理网站。以前的朋友都知道,我有三个月没有更新博客,也当然没有管理,就把这个事情忘了。

后来,听了很多站长朋友,在骂百度更新算法,把他的网站K掉了。我也没在意,检测一下我网站的收录,突然发现,以前很多的收录,现在只剩一个6月份的首页快照。坏了,我被百度K了。然后就在百度那里进行投诉。因为潜行者m的博客,文章都是精心构思原创手写的,SEO等方面也稍微做了一些,怎么会直接全K呢?查看了一下网站权重,跟以前没变,怎么收录没了?

前天,在后台清理的时候,发现服务器的rewrite开启了,然后就填上了以前的伪静态规则。这时,我猛的想起来了一件事,我曾经写的robots规则。

打开robots文件一看,果然,里面有条规则,把wordpress默认的链接形式屏蔽。此举是为了修改了伪静态规则之后,防止被检测成重复内容。结果那段时间,网站的链接全部都是wordpress的默认链接。我查询了一下谷歌的收录,结果也为0。原来,我的网站并不是被K了,而是被自己编写的robots规则,清掉了搜索引擎的索引。

修改了之后,搜索引擎又开始重新收录了,可以之前一年的积累,全化为了乌有。以后真的多注意一下。