<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>网页知识网</title>
	<atom:link href="http://www.pnyes.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.pnyes.com</link>
	<description></description>
	<lastBuildDate>Sat, 27 Sep 2014 03:25:35 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>使用raphael.js绘制中国地图</title>
		<link>http://www.pnyes.com/?p=44</link>
		<comments>http://www.pnyes.com/?p=44#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:25:35 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[js知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=44</guid>
		<description><![CDATA[最近的数据统计项目中要用到中国地图，也就是在地图上动态的显示某个时间段某个省份地区的统计数据，我们不需要fla [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="content">
<p>最近的数据统计项目中要用到中国地图，也就是在地图上动态的显示某个时间段某个省份地区的统计数据，我们不需要flash，仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作。在本文中，我给大家分享如何使用js来完成地图交互。</p>
<div class="art_img"><img src="http://www.helloweba.com/attachments/fck/chinamap.gif" alt="" /></div>
<div class="blog_opt"><a class="button blue" href="http://www.helloweba.com/demo/chinamap/" target="_blank">查看演示</a> <a class="button green" href="http://www.helloweba.com/down-242.html" target="_blank">下载源码</a></div>
<div id="art_content">
<p>先简单介绍下raphael.js，raphael.js是一个很小的javascript库，它可以在网页中实现绘制各种 矢量图、各类图表、以及图像裁剪、旋转、运动动画等等功能。此外raphael.js还跨浏览器兼容，而且还兼容老掉牙的IE6啊。raphael.js 的官网地址： <a href="http://raphaeljs.com/" target="_blank" rel="nofollow">http://raphaeljs.com/</a></p>
<h4>准备工作</h4>
<p>我们需要准备一张矢量地图，可以从网上找一张矢量地图，或者使用illustrator绘制一份矢量地图，然后导出为SVG格式的文件，这个文件可 以在浏览器上打开，然后提取里面的path路径信息（M开头的坐标）。并将path路径信息，按照chinamapPath.js的格式准备好地图路径信 息。</p>
<pre><code class="js"><span class="js__statement">var</span> china = []; 
 
<span class="js__operator">function</span> paintMap(R) <span class="js__brace">{</span> 
    <span class="js__statement">var</span> attr = <span class="js__brace">{</span> 
        <span class="js__string">"fill"</span>: <span class="js__string">"#97d6f5"</span>, 
        <span class="js__string">"stroke"</span>: <span class="js__string">"#eee"</span>, 
        <span class="js__string">"stroke-width"</span>: <span class="js__num">1</span>, 
        <span class="js__string">"stroke-linejoin"</span>: <span class="js__string">"round"</span> 
    <span class="js__brace">}</span>; 
 
    china.aomen = <span class="js__brace">{</span> 
        name: <span class="js__string">"澳门"</span>, 
        path: R.path(<span class="js__string">"M413.032,.........省略若干......... ,414.183z"</span>).attr(attr) 
    <span class="js__brace">}</span> 
    china.hk = <span class="js__brace">{</span> 
        <span class="js__sl_comment">//格式同上</span> 
    <span class="js__brace">}</span>; 
<span class="js__brace">}</span> 
</code></pre>
<p>以上是我们将准备好的地图路径信息封装到()函数中，并保存文件名为chinamapPath.js，供后面调用。</p>
<h4>HTML</h4>
<p>首先在head部分载入raphael.js库文件和chinamapPath.js路径信息文件。</p>
<pre><code class="html"><span class="html__tag_start">&lt;script</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"text/javascript"</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"raphael.js"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/script&gt;</span> 
<span class="html__tag_start">&lt;script</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"text/javascript"</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"chinamapPath.js"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/script&gt;</span> 
</code></pre>
<p>然后在body中需要放置地图的位置放置div#map。</p>
<pre><code class="html"><span class="html__tag_start">&lt;div</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"map"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/div&gt;</span> 
</code></pre>
<h4>JAVASCRIPT</h4>
<p>首先我们在页面中调用地图，方法如下：</p>
<pre><code class="js">window.onload = <span class="js__operator">function</span> () <span class="js__brace">{</span> 
    <span class="js__sl_comment">//绘制地图</span> 
    <span class="js__statement">var</span> R = Raphael(<span class="js__string">"map"</span>, <span class="js__num">600</span>, <span class="js__num">500</span>);<span class="js__sl_comment">//将地图载入到id为map的div中，并设置区域为600x500px大小。</span> 
    paintMap(R); 
<span class="js__brace">}</span> 
</code></pre>
<p>这个时候我们用浏览器打开会显示载入后的地图。接下来我们要给地图中的对应的省份区域加上省份名称，以及鼠标滑向每个省份区块时的变色动画效果。</p>
<pre><code class="js">window.onload = <span class="js__operator">function</span> () <span class="js__brace">{</span> 
    <span class="js__statement">var</span> R = Raphael(<span class="js__string">"map"</span>, <span class="js__num">600</span>, <span class="js__num">500</span>); 
    <span class="js__sl_comment">//调用绘制地图方法</span> 
    paintMap(R); 
     
    <span class="js__statement">var</span> textAttr = <span class="js__brace">{</span> 
        <span class="js__string">"fill"</span>: <span class="js__string">"#000"</span>, 
        <span class="js__string">"font-size"</span>: <span class="js__string">"12px"</span>, 
        <span class="js__string">"cursor"</span>: <span class="js__string">"pointer"</span> 
    <span class="js__brace">}</span>; 
             
            
    <span class="js__statement">for</span> (<span class="js__statement">var</span> state <span class="js__operator">in</span> china) <span class="js__brace">{</span> 
        china[state][<span class="js__string">'path'</span>].color = Raphael.getColor(<span class="js__num">0.9</span>); 
                 
        (<span class="js__operator">function</span> (st, state) <span class="js__brace">{</span> 
             
            <span class="js__sl_comment">//获取当前图形的中心坐标</span> 
            <span class="js__statement">var</span> xx = st.getBBox().x + (st.getBBox().width / <span class="js__num">2</span>); 
            <span class="js__statement">var</span> yy = st.getBBox().y + (st.getBBox().height / <span class="js__num">2</span>); 
             
            <span class="js__sl_comment">//写入文字</span> 
            china[state][<span class="js__string">'text'</span>] = R.text(xx, yy, china[state][<span class="js__string">'name'</span>]).attr(textAttr); 
             
            st[<span class="js__num">0</span>].onmouseover = <span class="js__operator">function</span> () <span class="js__brace">{</span><span class="js__sl_comment">//鼠标滑向</span> 
                st.animate(<span class="js__brace">{</span>fill: st.color, stroke: <span class="js__string">"#eee"</span><span class="js__brace">}</span>, <span class="js__num">500</span>); 
                china[state][<span class="js__string">'text'</span>].toFront(); 
                R.safari(); 
            <span class="js__brace">}</span>; 
            st[<span class="js__num">0</span>].onmouseout = <span class="js__operator">function</span> () <span class="js__brace">{</span><span class="js__sl_comment">//鼠标离开</span> 
                st.animate(<span class="js__brace">{</span>fill: <span class="js__string">"#97d6f5"</span>, stroke: <span class="js__string">"#eee"</span><span class="js__brace">}</span>, <span class="js__num">500</span>); 
                china[state][<span class="js__string">'text'</span>].toFront(); 
                R.safari(); 
            <span class="js__brace">}</span>; 
                     
         <span class="js__brace">}</span>)(china[state][<span class="js__string">'path'</span>], state); 
    <span class="js__brace">}</span> 
<span class="js__brace">}</span> 
</code></pre>
<p>以上代码中运用了raphael提供的方法有：getColor，getBBox，animate，toFront等等，这些可以在<a href="http://raphaeljs.com/reference.html" target="_blank" rel="nofollow">raphael文档</a>中找到使用说明，本文不在讲述。</p>
<p>此外由于地图尺寸原因，有些省份名称在地图中的显示位置不恰当，需要修正偏移量，这样看起来舒服点。</p>
<pre><code class="js">window.onload = <span class="js__operator">function</span> () <span class="js__brace">{</span> 
    <span class="js__statement">var</span> R = Raphael(<span class="js__string">"map"</span>, <span class="js__num">600</span>, <span class="js__num">500</span>); 
    ... 
    <span class="js__statement">for</span> (<span class="js__statement">var</span> state <span class="js__operator">in</span> china) <span class="js__brace">{</span> 
        ... 
        (<span class="js__operator">function</span> (st, state) <span class="js__brace">{</span> 
            .... 
            <span class="js__statement">switch</span> (china[state][<span class="js__string">'name'</span>]) <span class="js__brace">{</span> 
                <span class="js__statement">case</span> <span class="js__string">"江苏"</span>: 
                    xx += <span class="js__num">5</span>; 
                    yy -= <span class="js__num">10</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"河北"</span>: 
                    xx -= <span class="js__num">10</span>; 
                    yy += <span class="js__num">20</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"天津"</span>: 
                    xx += <span class="js__num">10</span>; 
                    yy += <span class="js__num">10</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"上海"</span>: 
                    xx += <span class="js__num">10</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"广东"</span>: 
                    yy -= <span class="js__num">10</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"澳门"</span>: 
                    yy += <span class="js__num">10</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"香港"</span>: 
                    xx += <span class="js__num">20</span>; 
                    yy += <span class="js__num">5</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"甘肃"</span>: 
                    xx -= <span class="js__num">40</span>; 
                    yy -= <span class="js__num">30</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"陕西"</span>: 
                    xx += <span class="js__num">5</span>; 
                    yy += <span class="js__num">10</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">case</span> <span class="js__string">"内蒙古"</span>: 
                    xx -= <span class="js__num">15</span>; 
                    yy += <span class="js__num">65</span>; 
                    <span class="js__statement">break</span>; 
                <span class="js__statement">default</span>: 
            <span class="js__brace">}</span> 
            ... 
      <span class="js__brace">}</span>)(china[state][<span class="js__string">'path'</span>], state); 
   <span class="js__brace">}</span> 
<span class="js__brace">}</span> 
</code></pre>
<p>这样一个基本的地图效果就完成了。</p>
</div>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="使用raphael.js绘制中国地图" href="http://www.pnyes.com/?p=44">使用raphael.js绘制中国地图</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=44</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery实现页内查找相关内容</title>
		<link>http://www.pnyes.com/?p=42</link>
		<comments>http://www.pnyes.com/?p=42#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:24:58 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[js知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=42</guid>
		<description><![CDATA[当需要在页面中查找某个关键字时，一是可以通过浏览器的查找功能实现，二是可以通过前端脚本准确查找定位，本文介绍通 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>当需要在页面中查找某个关键字时，一是可以通过浏览器的查找功能实现，二是可以通过前端脚本准确查找定位，本文介绍通过jQuery实现的页面内容查找定位的功能，并可扩展显示查找后的相关信息。</p>
<div class="blog_opt"><a class="button blue" href="http://www.helloweba.com/demo/findcontent/" target="_blank">查看演示</a> <a class="button green" href="http://www.helloweba.com/down-246.html" target="_blank">下载源码</a></div>
<div id="art_content">
<p>本文以查找车站名为例，仿12306官网查找车站售票时间页面效果，当用户输入关键字点击查找按钮或按回车键时，jQuery通过正则匹配内容，准确匹配关键字，并迅速将页面定位滚动到第一个匹配的位置，并显示相关信息（本例中附加信息为车站开始售票时间）。</p>
<h4>HTML</h4>
<p>页面需要放置一个输入框用来输入要查找的关键字，以及一个查找按钮，然后就是主体内容#content，里面包含着n个&lt;p&gt;，即每个时间段开售车票的车站名。</p>
<pre><code class="html"><span class="html__tag_start">&lt;div</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"search_box"</span><span class="html__tag_start">&gt;</span> 
    <span class="html__tag_start">&lt;input</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"textbox"</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"searchstr"</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"text"</span> <span class="html__attr_name">size</span>=<span class="html__attr_value">"10"</span> <span class="html__attr_name">name</span>=<span class="html__attr_value">"searchstr"</span> <span class="html__tag_start">/&gt;</span>　 
    <span class="html__tag_start">&lt;input</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"sbttn"</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"search_btn"</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"button"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"页内查找"</span> <span class="html__tag_start">/&gt;</span> 
<span class="html__tag_end">&lt;/div&gt;</span> 
<span class="html__tag_start">&lt;div</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"content"</span><span class="html__tag_start">&gt;</span> 
    <span class="html__tag_start">&lt;p</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;strong</span><span class="html__tag_start">&gt;</span>8：00 起售车站<span class="html__tag_end">&lt;/strong&gt;</span><span class="html__tag_start">&lt;br</span> <span class="html__tag_start">/&gt;</span> 
　　安阳、白城、北京西、成都东、大庆、大庆西、东莞、东莞东、惠州、金华南、缙云、九江、兰州、丽水、临汾、南充、 
齐齐哈尔、青田、日照、山海关、汕头、松原、温州、乌兰浩特、乌鲁木齐、武昌、武义、西安、永康、运城。<span class="html__tag_end">&lt;/p&gt;</span> 
    ....此处省略n个p 
<span class="html__tag_end">&lt;/div&gt;</span> 
</code></pre>
<h4>CSS</h4>
<p>简单的对页面内容进行CSS设置，其中.highlight和#tip分别用来设置查找结果高亮显示和信息提示框显示的样式效果，后面我们会介绍到。</p>
<pre><code class="css"><span class="css__id">#search_box</span> { <span class="css__property">background:</span> <span class="css__color">white</span>; opacity: <span class="css__number">0.8</span>; <span class="css__property">text-align:</span><span class="css__value">right</span> } 
<span class="css__id">#search_btn</span> { <span class="css__property">background:</span> <span class="css__color">#0f79be</span>; <span class="css__property">margin-top:</span> <span class="css__number">6px</span>; border-radius: <span class="css__number">2px</span>; <span class="css__property">border:</span> <span class="css__number">0px</span>;  
<span class="css__property">width:</span> <span class="css__number">100px</span>; <span class="css__property">line-height:</span> <span class="css__number">24px</span>; <span class="css__property">color:</span> <span class="css__color">white</span>; } 
<span class="css__id">#searchstr</span> { <span class="css__property">font-size:</span> <span class="css__number">14px</span>; <span class="css__property">height:</span> <span class="css__number">20px</span>; } 
<span class="css__class">.highlight</span> { <span class="css__property">background:</span> <span class="css__color">yellow</span>; <span class="css__property">color:</span> <span class="css__color">red</span>; } 
<span class="css__id">#tip</span> { <span class="css__property">background:</span> <span class="css__color">#ffc</span>; <span class="css__property">border:</span> <span class="css__number">1px</span> <span class="css__value">solid</span> <span class="css__color">#999</span>; <span class="css__property">width:</span> <span class="css__number">110px</span>; <span class="css__property">text-align:</span> <span class="css__value">center</span>;  
<span class="css__property">display:</span> <span class="css__value">none</span>; <span class="css__property">font-size:</span> <span class="css__number">12px</span>; } 
</code></pre>
<h4>jQuery</h4>
<p>首先，我们要实现一个固定div的效果，就是当页面往下拉滚动时，用于查找的输入框和按钮始终固定在页面的最顶部，方便继续查找。</p>
<pre><code class="js">(<span class="js__operator">function</span>($) <span class="js__brace">{</span> 
    $.fn.fixDiv = <span class="js__operator">function</span>(options) <span class="js__brace">{</span> 
        <span class="js__statement">var</span> defaultVal = <span class="js__brace">{</span> 
            top: <span class="js__num">10</span> 
        <span class="js__brace">}</span>; 
        <span class="js__statement">var</span> obj = $.extend(defaultVal, options); 
        $<span class="js__operator">this</span> = <span class="js__operator">this</span>; 
        <span class="js__statement">var</span> _top = $<span class="js__operator">this</span>.offset().top; 
        <span class="js__statement">var</span> _left = $<span class="js__operator">this</span>.offset().left; 
        $(window).scroll(<span class="js__operator">function</span>() <span class="js__brace">{</span> 
            <span class="js__statement">var</span> _currentTop = $<span class="js__operator">this</span>.offset().top; 
            <span class="js__statement">var</span> _scrollTop = $(document).scrollTop(); 
            <span class="js__statement">if</span> (_scrollTop &gt; _top) <span class="js__brace">{</span> 
                $<span class="js__operator">this</span>.offset(<span class="js__brace">{</span> 
                    top: _scrollTop + obj.top, 
                    left: _left 
                <span class="js__brace">}</span>); 
            <span class="js__brace">}</span> <span class="js__statement">else</span> <span class="js__brace">{</span> 
                $<span class="js__operator">this</span>.offset(<span class="js__brace">{</span> 
                    top: _top, 
                    left: _left 
                <span class="js__brace">}</span>); 
            <span class="js__brace">}</span> 
        <span class="js__brace">}</span>); 
        <span class="js__statement">return</span> $<span class="js__operator">this</span>; 
    <span class="js__brace">}</span>; 
<span class="js__brace">}</span>)(jQuery); 
</code></pre>
<p>接着，我们调用fixDiv()。</p>
<pre><code class="js">$(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
    $(<span class="js__string">"#search_box"</span>).fixDiv(<span class="js__brace">{</span> top: <span class="js__num">0</span> <span class="js__brace">}</span>); 
<span class="js__brace">}</span>); 
</code></pre>
<p>接下来，最关键的实现查找功能。当输入关键字后，点击查找按钮或按回车键，调用查找函数highlight()。</p>
<pre><code class="js">$(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
    ... 
    $(<span class="js__string">'#search_btn'</span>).click(highlight);<span class="js__sl_comment">//点击search时，执行highlight函数；</span> 
    $(<span class="js__string">'#searchstr'</span>).keydown(<span class="js__operator">function</span> (e) <span class="js__brace">{</span> 
        <span class="js__statement">var</span> key = e.which; 
        <span class="js__statement">if</span> (key == <span class="js__num">13</span>) highlight(); 
    <span class="js__brace">}</span>) 
    ... 
<span class="js__brace">}</span>); 
</code></pre>
<p>在函数highlight()需要做很多事情，1.清空上次高亮显示内容，2.隐藏并清空提示信息，3.判断输入内容为空的情况，4.获取输入的关 键字，并与页面内容进行正则匹配，并用flag标记查找到结果，将查找结果高亮显示，5.根据查找结果的数量，确定提示信息的内容和位置偏移量，准确定位 并显示提示信息。请看具体代码：</p>
<pre><code class="js">$(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
    ... 
    <span class="js__statement">var</span> i = <span class="js__num">0</span>; 
    <span class="js__statement">var</span> sCurText; 
    <span class="js__operator">function</span> highlight()<span class="js__brace">{</span> 
        clearSelection();<span class="js__sl_comment">//先清空一下上次高亮显示的内容；</span> 
         
        <span class="js__statement">var</span> flag = <span class="js__num">0</span>; 
        <span class="js__statement">var</span> bStart = true; 
         
        $(<span class="js__string">'#tip'</span>).text(<span class="js__string">''</span>); 
        $(<span class="js__string">'#tip'</span>).hide(); 
        <span class="js__statement">var</span> searchText = $(<span class="js__string">'#searchstr'</span>).val(); 
        <span class="js__statement">var</span> _searchTop = $(<span class="js__string">'#searchstr'</span>).offset().top<span class="js__num">+30</span>; 
        <span class="js__statement">var</span> _searchLeft = $(<span class="js__string">'#searchstr'</span>).offset().left; 
        <span class="js__statement">if</span>($.trim(searchText)==<span class="js__string">""</span>)<span class="js__brace">{</span> 
            showTips(<span class="js__string">"请输入查找车站名"</span>,_searchTop,<span class="js__num">3</span>,_searchLeft); 
            <span class="js__statement">return</span>; 
        <span class="js__brace">}</span> 
        <span class="js__sl_comment">//查找匹配</span> 
        <span class="js__statement">var</span> searchText = $(<span class="js__string">'#searchstr'</span>).val();<span class="js__sl_comment">//获取你输入的关键字；</span> 
        <span class="js__statement">var</span> regExp = <span class="js__operator">new</span> <span class="js__object">RegExp</span>(searchText, <span class="js__string">'g'</span>);<span class="js__sl_comment">//创建正则表达式，g表示全局的，如果不用g，</span> 
则查找到第一个就不会继续向下查找了； 
        <span class="js__statement">var</span> content = $(<span class="js__string">"#content"</span>).text(); 
        <span class="js__statement">if</span> (!regExp.test(content)) <span class="js__brace">{</span> 
            showTips(<span class="js__string">"没有找到要查找的车站"</span>,_searchTop,<span class="js__num">3</span>,_searchLeft); 
            <span class="js__statement">return</span>; 
        <span class="js__brace">}</span> <span class="js__statement">else</span> <span class="js__brace">{</span> 
            <span class="js__statement">if</span> (sCurText != searchText) <span class="js__brace">{</span> 
                i = <span class="js__num">0</span>; 
                sCurText = searchText; 
             <span class="js__brace">}</span> 
        <span class="js__brace">}</span> 
        <span class="js__sl_comment">//高亮显示</span> 
        $(<span class="js__string">'p'</span>).each(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
            <span class="js__statement">var</span> html = $(<span class="js__operator">this</span>).html(); 
            <span class="js__sl_comment">//将找到的关键字替换，加上highlight属性；</span> 
            <span class="js__statement">var</span> newHtml = html.replace(regExp, <span class="js__string">'&lt;span class="highlight"&gt;'</span>+searchText+<span class="js__string">'&lt;/span&gt;'</span>); 
            $(<span class="js__operator">this</span>).html(newHtml);<span class="js__sl_comment">//更新；</span> 
            flag = <span class="js__num">1</span>; 
        <span class="js__brace">}</span>); 
         
        <span class="js__sl_comment">//定位并提示信息</span> 
        <span class="js__statement">if</span> (flag == <span class="js__num">1</span>) <span class="js__brace">{</span> 
            <span class="js__statement">if</span> ($(<span class="js__string">".highlight"</span>).size() &gt; <span class="js__num">1</span>) <span class="js__brace">{</span> 
                <span class="js__statement">var</span> _top = $(<span class="js__string">".highlight"</span>).eq(i).offset().top+$(<span class="js__string">".highlight"</span>).eq(i).height(); 
                <span class="js__statement">var</span> _tip = $(<span class="js__string">".highlight"</span>).eq(i).parent().find(<span class="js__string">"strong"</span>).text(); 
                <span class="js__statement">if</span>(_tip==<span class="js__string">""</span>) _tip = $(<span class="js__string">".highlight"</span>).eq(i).parent().parent().find(<span class="js__string">"strong"</span>).text(); 
                <span class="js__statement">var</span> _left = $(<span class="js__string">".highlight"</span>).eq(i).offset().left; 
                <span class="js__statement">var</span> _tipWidth = $(<span class="js__string">"#tip"</span>).width(); 
                <span class="js__statement">if</span> (_left &gt; $(document).width() - _tipWidth) <span class="js__brace">{</span> 
                     _left = _left - _tipWidth; 
                <span class="js__brace">}</span> 
                $(<span class="js__string">"#tip"</span>).html(_tip).show(); 
                $(<span class="js__string">"#tip"</span>).offset(<span class="js__brace">{</span> top: _top, left: _left <span class="js__brace">}</span>); 
                $(<span class="js__string">"#search_btn"</span>).val(<span class="js__string">"查找下一个"</span>); 
            <span class="js__brace">}</span><span class="js__statement">else</span><span class="js__brace">{</span> 
                <span class="js__statement">var</span> _top = $(<span class="js__string">".highlight"</span>).offset().top+$(<span class="js__string">".highlight"</span>).height(); 
                <span class="js__statement">var</span> _tip = $(<span class="js__string">".highlight"</span>).parent().find(<span class="js__string">"strong"</span>).text(); 
                <span class="js__statement">var</span> _left = $(<span class="js__string">".highlight"</span>).offset().left; 
                $(<span class="js__string">'#tip'</span>).show(); 
                $(<span class="js__string">"#tip"</span>).html(_tip).offset(<span class="js__brace">{</span> top: _top, left: _left <span class="js__brace">}</span>); 
            <span class="js__brace">}</span> 
            $(<span class="js__string">"html, body"</span>).animate(<span class="js__brace">{</span> scrollTop: _top - <span class="js__num">50</span> <span class="js__brace">}</span>); 
            i++; 
            <span class="js__statement">if</span> (i &gt; $(<span class="js__string">".highlight"</span>).size() - <span class="js__num">1</span>) <span class="js__brace">{</span> 
                i = <span class="js__num">0</span>; 
            <span class="js__brace">}</span> 
        <span class="js__brace">}</span> 
    <span class="js__brace">}</span> 
      ... 
<span class="js__brace">}</span>); 
</code></pre>
<p>上述代码中提到的clearSelection()函数用来清空高亮效果，代码如下：</p>
<pre><code class="js"><span class="js__operator">function</span> clearSelection()<span class="js__brace">{</span> 
        $(<span class="js__string">'p'</span>).each(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
            <span class="js__sl_comment">//找到所有highlight属性的元素；</span> 
            $(<span class="js__operator">this</span>).find(<span class="js__string">'.highlight'</span>).each(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
                $(<span class="js__operator">this</span>).replaceWith($(<span class="js__operator">this</span>).html());<span class="js__sl_comment">//将他们的属性去掉；</span> 
            <span class="js__brace">}</span>); 
        <span class="js__brace">}</span>); 
<span class="js__brace">}</span> 
</code></pre>
<p>最后加上showTips()函数，该函数用来显示在输入查找关键字后的查找结果提示信息。</p>
<pre><code class="js">$(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
    <span class="js__statement">var</span> tipsDiv = <span class="js__string">'&lt;div class="tipsClass"&gt;&lt;/div&gt;'</span>;  
    $( <span class="js__string">'body'</span> ).append( tipsDiv ); 
    <span class="js__operator">function</span> showTips( tips, height, time,left )<span class="js__brace">{</span>  
        <span class="js__statement">var</span> windowWidth = document.documentElement.clientWidth;  
        $(<span class="js__string">'.tipsClass'</span>).text(tips); 
        $( <span class="js__string">'div.tipsClass'</span> ).css(<span class="js__brace">{</span>  
        <span class="js__string">'top'</span> : height + <span class="js__string">'px'</span>,  
        <span class="js__string">'left'</span> :left + <span class="js__string">'px'</span>,  
        <span class="js__string">'position'</span> : <span class="js__string">'absolute'</span>,  
        <span class="js__string">'padding'</span> : <span class="js__string">'8px 6px'</span>,  
        <span class="js__string">'background'</span>: <span class="js__string">'#000000'</span>,  
        <span class="js__string">'font-size'</span> : <span class="js__num">14</span> + <span class="js__string">'px'</span>,  
        <span class="js__string">'font-weight'</span>: <span class="js__num">900</span>, 
        <span class="js__string">'margin'</span> : <span class="js__string">'0 auto'</span>,  
        <span class="js__string">'text-align'</span>: <span class="js__string">'center'</span>,  
        <span class="js__string">'width'</span> : <span class="js__string">'auto'</span>,  
        <span class="js__string">'color'</span> : <span class="js__string">'#fff'</span>,  
        <span class="js__string">'border-radius'</span>:<span class="js__string">'2px'</span>,  
        <span class="js__string">'opacity'</span> : <span class="js__string">'0.8'</span> , 
        <span class="js__string">'box-shadow'</span>:<span class="js__string">'0px 0px 10px #000'</span>, 
        <span class="js__string">'-moz-box-shadow'</span>:<span class="js__string">'0px 0px 10px #000'</span>, 
        <span class="js__string">'-webkit-box-shadow'</span>:<span class="js__string">'0px 0px 10px #000'</span> 
        <span class="js__brace">}</span>).show();  
        setTimeout( <span class="js__operator">function</span>()<span class="js__brace">{</span>$( <span class="js__string">'div.tipsClass'</span> ).fadeOut();<span class="js__brace">}</span>, ( time * <span class="js__num">1000</span> ) );  
    <span class="js__brace">}</span>  
<span class="js__brace">}</span>); </code></pre>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="jQuery实现页内查找相关内容" href="http://www.pnyes.com/?p=42">jQuery实现页内查找相关内容</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=42</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery实现的全选、反选和不选功能</title>
		<link>http://www.pnyes.com/?p=40</link>
		<comments>http://www.pnyes.com/?p=40#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:24:19 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[js知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=40</guid>
		<description><![CDATA[本文给大家分享一段基于jQuery的全选、反选和不选功能的代码，适用于网页多选后需要进行批量操作的场景（如批量 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>本文给大家分享一段基于jQuery的全选、反选和不选功能的代码，适用于网页多选后需要进行批量操作的场景（如批量删除等）。文章结合实例，代码简洁，基本覆盖选项选择操作的方方面面，希望可以帮到有需要的WEB爱好者。</p>
<div class="blog_opt"><a class="button blue" href="http://www.helloweba.com/demo/selectall/" target="_blank">查看演示</a></div>
<div id="art_content">
<h4>HTML</h4>
<p>我们的页面上有一个歌曲列表，列出多行歌曲名称，并匹配复选框供用户选择，并且在列表下方有一排操作按钮。</p>
<pre><code class="html"><span class="html__tag_start">&lt;ul</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"list"</span><span class="html__tag_start">&gt;</span>   
   <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;label</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"checkbox"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"1"</span><span class="html__tag_start">&gt;</span> 1.时间都去哪儿了<span class="html__tag_end">&lt;/label&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
   <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;label</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"checkbox"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"2"</span><span class="html__tag_start">&gt;</span> 2.海阔天空<span class="html__tag_end">&lt;/label&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
   <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;label</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"checkbox"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"3"</span><span class="html__tag_start">&gt;</span> 3.真的爱你<span class="html__tag_end">&lt;/label&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
   <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;label</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"checkbox"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"4"</span><span class="html__tag_start">&gt;</span> 4.不再犹豫<span class="html__tag_end">&lt;/label&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
   <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;label</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"checkbox"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"5"</span><span class="html__tag_start">&gt;</span> 5.光辉岁月<span class="html__tag_end">&lt;/label&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
   <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;label</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"checkbox"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"6"</span><span class="html__tag_start">&gt;</span> 6.喜欢妳<span class="html__tag_end">&lt;/label&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
<span class="html__tag_end">&lt;/ul&gt;</span> 
<span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"checkbox"</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"all"</span><span class="html__tag_start">&gt;</span> 
<span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"button"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"全选"</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"btn"</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"selectAll"</span><span class="html__tag_start">&gt;</span>   
<span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"button"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"全不选"</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"btn"</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"unSelect"</span><span class="html__tag_start">&gt;</span>   
<span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"button"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"反选"</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"btn"</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"reverse"</span><span class="html__tag_start">&gt;</span>   
<span class="html__tag_start">&lt;input</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"button"</span> <span class="html__attr_name">value</span>=<span class="html__attr_value">"获得选中的所有值"</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"btn"</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"getValue"</span><span class="html__tag_start">&gt;</span> 
</code></pre>
<p>当然不要忘了先加载jQuery库文件:</p>
<pre><code class="html"><span class="html__tag_start">&lt;script</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/script&gt;</span> 
</code></pre>
<h4>jQuery</h4>
<p>1、全选或全不选。当勾选全选按钮#selectAll旁边的复选框#all时，列表中的选项全部选中，反之取消勾选则列表中的选项全部为未选中状态。</p>
<pre><code class="js">$(<span class="js__string">"#all"</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span>    
    <span class="js__statement">if</span>(<span class="js__operator">this</span>.checked)<span class="js__brace">{</span>    
        $(<span class="js__string">"#list :checkbox"</span>).attr(<span class="js__string">"checked"</span>, true);   
    <span class="js__brace">}</span><span class="js__statement">else</span><span class="js__brace">{</span>    
        $(<span class="js__string">"#list :checkbox"</span>).attr(<span class="js__string">"checked"</span>, false); 
    <span class="js__brace">}</span>    
<span class="js__brace">}</span>);  
</code></pre>
<p>2、全选。当点击全选按钮#selectAll或者勾选全选按钮旁边的复选框#all时，列表中所有的选项都会被选中，包括全选旁边的复选框也是选中状态。</p>
<pre><code class="js">$(<span class="js__string">"#selectAll"</span>).click(<span class="js__operator">function</span> () <span class="js__brace">{</span> 
   $(<span class="js__string">"#list :checkbox,#all"</span>).attr(<span class="js__string">"checked"</span>, true);   
<span class="js__brace">}</span>); 
</code></pre>
<p>3、全不选。当点击全不选按钮#unSelect时，列表中所有的选项都是未选中状态，当然包括#all也是未选中状态。</p>
<pre><code class="js">$(<span class="js__string">"#unSelect"</span>).click(<span class="js__operator">function</span> () <span class="js__brace">{</span>   
   $(<span class="js__string">"#list :checkbox,#all"</span>).attr(<span class="js__string">"checked"</span>, false);   
<span class="js__brace">}</span>);  
</code></pre>
<p>4、反选。当点击反选按钮#reverse，列表中所有被选中的选项变为未选中状态，而所有未选中的选项变为已选中状态，当然也要注意#all的状态。</p>
<pre><code class="js">$(<span class="js__string">"#reverse"</span>).click(<span class="js__operator">function</span> () <span class="js__brace">{</span>  
    $(<span class="js__string">"#list :checkbox"</span>).each(<span class="js__operator">function</span> () <span class="js__brace">{</span>   
        $(<span class="js__operator">this</span>).attr(<span class="js__string">"checked"</span>, !$(<span class="js__operator">this</span>).attr(<span class="js__string">"checked"</span>));   
    <span class="js__brace">}</span>); 
    allchk(); 
<span class="js__brace">}</span>); 
</code></pre>
<p>上述代码中遍历了选项列表，然后改变checked属性，调用函数allchk()是干什么的，别急，留在后面介绍。</p>
<p>5、获得选中的所有值。我们要跟后台程序交互就必须获取列表中所选项的值，我们通过遍历数组，将选中项的值存放在数组中，最后组成由逗号(,)隔开的字符串，开发者就可以通过获取这个字符串进行相应的操作了。</p>
<pre><code class="js">$(<span class="js__string">"#getValue"</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
    <span class="js__statement">var</span> valArr = <span class="js__operator">new</span> <span class="js__object">Array</span>; 
    $(<span class="js__string">"#list :checkbox[checked]"</span>).each(<span class="js__operator">function</span>(i)<span class="js__brace">{</span> 
        valArr[i] = $(<span class="js__operator">this</span>).val(); 
    <span class="js__brace">}</span>); 
    <span class="js__statement">var</span> vals = valArr.join(<span class="js__string">','</span>);<span class="js__sl_comment">//转换为逗号隔开的字符串</span> 
    alert(vals); 
<span class="js__brace">}</span>); 
</code></pre>
<p>为了完善选中选项功能，我们在单击列表中某个选项时，如果勾选的项刚好满足全部选中的条件，则#all也要相应的变为选中状态，同样，如果事先所有的选项是选中状态时，当取消勾选某个选项时，那么#all也要相应的变为未选中状态。</p>
<pre><code class="js"><span class="js__sl_comment">//设置全选复选框</span> 
$(<span class="js__string">"#list :checkbox"</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
    allchk(); 
<span class="js__brace">}</span>); 
</code></pre>
<p>函数allchk()就是用来检测全选框#all应该是选中状态还是未选中状态的，请看代码。</p>
<pre><code class="js"><span class="js__operator">function</span> allchk()<span class="js__brace">{</span> 
    <span class="js__statement">var</span> chknum = $(<span class="js__string">"#list :checkbox"</span>).size();<span class="js__sl_comment">//选项总个数</span> 
    <span class="js__statement">var</span> chk = <span class="js__num">0</span>; 
    $(<span class="js__string">"#list :checkbox"</span>).each(<span class="js__operator">function</span> () <span class="js__brace">{</span>   
        <span class="js__statement">if</span>($(<span class="js__operator">this</span>).attr(<span class="js__string">"checked"</span>)==true)<span class="js__brace">{</span> 
            chk++; 
        <span class="js__brace">}</span> 
    <span class="js__brace">}</span>); 
    <span class="js__statement">if</span>(chknum==chk)<span class="js__brace">{</span><span class="js__sl_comment">//全选</span> 
        $(<span class="js__string">"#all"</span>).attr(<span class="js__string">"checked"</span>,true); 
    <span class="js__brace">}</span><span class="js__statement">else</span><span class="js__brace">{</span><span class="js__sl_comment">//不全选</span> 
        $(<span class="js__string">"#all"</span>).attr(<span class="js__string">"checked"</span>,false); 
    <span class="js__brace">}</span> 
<span class="js__brace">}</span> 
</code></pre>
<h4>总结</h4>
<p>jQuery操作复选框的选中和不选中状态非常简单，使用attr()来设置"checked"属性的值，true未选中，false为未选中，在 整个全选、反选过程中注意处理全选复选框的选中状态，以及获取选中选项的值。以下我将所有jQuery代码整理在一起，供大家参考。</p>
<pre><code class="js">$(<span class="js__operator">function</span> () <span class="js__brace">{</span> 
    <span class="js__sl_comment">//全选或全不选</span> 
    $(<span class="js__string">"#all"</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span>    
        <span class="js__statement">if</span>(<span class="js__operator">this</span>.checked)<span class="js__brace">{</span>    
            $(<span class="js__string">"#list :checkbox"</span>).attr(<span class="js__string">"checked"</span>, true);   
        <span class="js__brace">}</span><span class="js__statement">else</span><span class="js__brace">{</span>    
            $(<span class="js__string">"#list :checkbox"</span>).attr(<span class="js__string">"checked"</span>, false); 
        <span class="js__brace">}</span>    
     <span class="js__brace">}</span>);  
    <span class="js__sl_comment">//全选  </span> 
    $(<span class="js__string">"#selectAll"</span>).click(<span class="js__operator">function</span> () <span class="js__brace">{</span> 
         $(<span class="js__string">"#list :checkbox,#all"</span>).attr(<span class="js__string">"checked"</span>, true);   
    <span class="js__brace">}</span>);   
    <span class="js__sl_comment">//全不选</span> 
    $(<span class="js__string">"#unSelect"</span>).click(<span class="js__operator">function</span> () <span class="js__brace">{</span>   
         $(<span class="js__string">"#list :checkbox,#all"</span>).attr(<span class="js__string">"checked"</span>, false);   
    <span class="js__brace">}</span>);   
    <span class="js__sl_comment">//反选 </span> 
    $(<span class="js__string">"#reverse"</span>).click(<span class="js__operator">function</span> () <span class="js__brace">{</span>  
         $(<span class="js__string">"#list :checkbox"</span>).each(<span class="js__operator">function</span> () <span class="js__brace">{</span>   
              $(<span class="js__operator">this</span>).attr(<span class="js__string">"checked"</span>, !$(<span class="js__operator">this</span>).attr(<span class="js__string">"checked"</span>));   
         <span class="js__brace">}</span>); 
         allchk(); 
    <span class="js__brace">}</span>); 
     
    <span class="js__sl_comment">//设置全选复选框</span> 
    $(<span class="js__string">"#list :checkbox"</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
        allchk(); 
    <span class="js__brace">}</span>); 
  
    <span class="js__sl_comment">//获取选中选项的值</span> 
    $(<span class="js__string">"#getValue"</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
        <span class="js__statement">var</span> valArr = <span class="js__operator">new</span> <span class="js__object">Array</span>; 
        $(<span class="js__string">"#list :checkbox[checked]"</span>).each(<span class="js__operator">function</span>(i)<span class="js__brace">{</span> 
            valArr[i] = $(<span class="js__operator">this</span>).val(); 
        <span class="js__brace">}</span>); 
        <span class="js__statement">var</span> vals = valArr.join(<span class="js__string">','</span>); 
          alert(vals); 
    <span class="js__brace">}</span>); 
<span class="js__brace">}</span>);  
<span class="js__operator">function</span> allchk()<span class="js__brace">{</span> 
    <span class="js__statement">var</span> chknum = $(<span class="js__string">"#list :checkbox"</span>).size();<span class="js__sl_comment">//选项总个数</span> 
    <span class="js__statement">var</span> chk = <span class="js__num">0</span>; 
    $(<span class="js__string">"#list :checkbox"</span>).each(<span class="js__operator">function</span> () <span class="js__brace">{</span>   
        <span class="js__statement">if</span>($(<span class="js__operator">this</span>).attr(<span class="js__string">"checked"</span>)==true)<span class="js__brace">{</span> 
            chk++; 
        <span class="js__brace">}</span> 
    <span class="js__brace">}</span>); 
    <span class="js__statement">if</span>(chknum==chk)<span class="js__brace">{</span><span class="js__sl_comment">//全选</span> 
        $(<span class="js__string">"#all"</span>).attr(<span class="js__string">"checked"</span>,true); 
    <span class="js__brace">}</span><span class="js__statement">else</span><span class="js__brace">{</span><span class="js__sl_comment">//不全选</span> 
        $(<span class="js__string">"#all"</span>).attr(<span class="js__string">"checked"</span>,false); 
    <span class="js__brace">}</span> 
<span class="js__brace">}</span> </code></pre>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="jQuery实现的全选、反选和不选功能" href="http://www.pnyes.com/?p=40">jQuery实现的全选、反选和不选功能</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=40</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flexslider图片轮播、文字图片相结合滑动切换效果</title>
		<link>http://www.pnyes.com/?p=38</link>
		<comments>http://www.pnyes.com/?p=38#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:23:43 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[js知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=38</guid>
		<description><![CDATA[Flexslider是一款基于的jQuery内容滚动插件。它能让你轻松的创建内容滚动的效果，具有非常高的可定制 [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="content">
<p>Flexslider是一款基于的jQuery内容滚动插件。它能让你轻松的创建内容滚动的效果，具有非常高的可定制性。开发者可以使用Flexslider轻松创建各种图片轮播效果、焦点图效果、图文混排滚动效果。</p>
<div class="art_img"><img src="http://www.helloweba.com/attachments/fck/flexslider.jpg" alt="" /></div>
<div class="blog_opt"><a class="button blue" href="http://www.helloweba.com/demo/flexslider/" target="_blank">查看演示</a> <a class="button green" href="http://www.helloweba.com/down-265.html" target="_blank">下载源码</a></div>
<div id="art_content">
<h4>Flexslider具有以下特性：</h4>
<ul class="project">
<li>支持滑动和淡入淡出效果。</li>
<li>支持水平、垂直方向滑动。</li>
<li>支持键盘方向键控制。</li>
<li>支持触控滑动。</li>
<li>支持图文混排，支持各种html元素。</li>
<li>自适应屏幕尺寸。</li>
<li>可控制滑动单元个数。</li>
<li>更多选项设置和回调函数。</li>
</ul>
<h4>HTML</h4>
<p>首先在页面head部位载入jquery库文件和Flexslider插件，以及Flexslider所需的基本css样式文件。</p>
<pre><code class="html"><span class="html__tag_start">&lt;link</span> <span class="html__attr_name">rel</span>=<span class="html__attr_value">"stylesheet"</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"text/css"</span> <span class="html__attr_name">href</span>=<span class="html__attr_value">"flexslider.css"</span> <span class="html__tag_start">/&gt;</span> 
<span class="html__tag_start">&lt;script</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"text/javascript"</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"jquery-1.7.2.min.js"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/script&gt;</span> 
<span class="html__tag_start">&lt;script</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"text/javascript"</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"jquery.flexslider-min.js"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/script&gt;</span> 
</code></pre>
<p>然后在body中加入以下HTML代码：</p>
<pre><code class="html"><span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"flexslider"</span><span class="html__tag_start">&gt;</span> 
      <span class="html__tag_start">&lt;ul</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"slides"</span><span class="html__tag_start">&gt;</span> 
        <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;img</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"images/s1.jpg"</span> <span class="html__tag_start">/&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
        <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;img</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"images/s2.jpg"</span> <span class="html__tag_start">/&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
        <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;img</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"images/s3.jpg"</span> <span class="html__tag_start">/&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
        <span class="html__tag_start">&lt;li</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;img</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"images/s4.jpg"</span> <span class="html__tag_start">/&gt;</span><span class="html__tag_end">&lt;/li&gt;</span> 
      <span class="html__tag_end">&lt;/ul&gt;</span> 
<span class="html__tag_end">&lt;/div&gt;</span> 
</code></pre>
<p>我们使用了.flexslider来包括所有需要滚动的内容元素，然后使用&lt;ul class="slides"&gt;这个class非常关键，内部的滚动内容都是针对.slides的，然后在&lt;li&gt;内部加入任意html元素，包括图片和文字。</p>
<h4>jQuery</h4>
<p>调用Flexslider插件非常简单，使用如下代码：</p>
<pre><code class="js">$(<span class="js__operator">function</span>() <span class="js__brace">{</span> 
    $(<span class="js__string">".flexslider"</span>).flexslider(); 
<span class="js__brace">}</span>);     
</code></pre>
<p>然后预览网页效果，一个内容切换效果就完成了，当然想要更多个性化设置，flexslider提供了丰富的选项配置以及回调函数绝对可以满足大多数开发者需求。</p>
<h4>Flexslider选项设置</h4>
<table class="main_table" border="0" width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr class="table_title">
<td width="25%">参数</td>
<td>描述</td>
<td width="10%">默认值</td>
</tr>
<tr>
<td align="center">animation</td>
<td>动画效果类型，有"fade"：淡入淡出，"slide"：滑动</td>
<td align="center">"fade"</td>
</tr>
<tr>
<td align="center">easing</td>
<td>内容切换时缓动效果，需要jquery easing插件支持</td>
<td align="center">"swing"</td>
</tr>
<tr>
<td align="center">direction</td>
<td>内容滚动方向，有"horizontal"：水平方向 和"vertical"：垂直方向</td>
<td align="center">"horizontal"</td>
</tr>
<tr>
<td align="center">animationLoop</td>
<td>是否循环滚动</td>
<td align="center">true</td>
</tr>
<tr>
<td align="center">startAt</td>
<td>初始滑动时的起始位置，定位从第几个开始滑动</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">slideshow</td>
<td>是否自动滑动</td>
<td align="center">true</td>
</tr>
<tr>
<td align="center">slideshowSpeed</td>
<td>滑动内容展示时间(ms)</td>
<td align="center">7000</td>
</tr>
<tr>
<td align="center">animationSpeed</td>
<td>内容切换时间(ms)</td>
<td align="center">600</td>
</tr>
<tr>
<td align="center">initDelay</td>
<td>初始化时延时时间</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">pauseOnHover</td>
<td>鼠标滑向滚动内容时，是否暂停滚动</td>
<td align="center">false</td>
</tr>
<tr>
<td align="center">touch</td>
<td>是否支持触摸滑动</td>
<td align="center">true</td>
</tr>
<tr>
<td align="center">directionNav</td>
<td>是否显示左右方向箭头按钮</td>
<td align="center">true</td>
</tr>
<tr>
<td align="center">keyboard</td>
<td>是否支持键盘方向键操作</td>
<td align="center">true</td>
</tr>
<tr>
<td align="center">minItems</td>
<td>一次最少展示滑动内容的单元个数</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">maxItems</td>
<td>一次最多展示滑动内容的单元个数</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">move</td>
<td>一次滑动的单元个数</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">回调函数</td>
<td>start: function(){},<br />
before: function(){},<br />
after: function(){},<br />
end: function(){},<br />
added: function(){},<br />
removed: function(){},<br />
init: function(){},</td>
<td align="center">-</td>
</tr>
</tbody>
</table>
<p>更多Flexslider相关信息可以访问Flexslider官网地址：<a href="http://www.woothemes.com/flexslider/" target="_blank" rel="nofollow">http://www.woothemes.com/flexslider/</a></p>
</div>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="Flexslider图片轮播、文字图片相结合滑动切换效果" href="http://www.pnyes.com/?p=38">Flexslider图片轮播、文字图片相结合滑动切换效果</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=38</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>页面右侧浮动固定层返回顶部按钮带二维码展示功能</title>
		<link>http://www.pnyes.com/?p=36</link>
		<comments>http://www.pnyes.com/?p=36#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:23:14 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[js知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=36</guid>
		<description><![CDATA[移动互联网时代的到来，大家可以通过“扫一扫”功能轻松在移动端获取需要的信息。今天我给大家分享一个WEB功能，它 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>移动互联网时代的到来，大家可以通过“扫一扫”功能轻松在移动端获取需要的信息。今天我给大家分享一个WEB功能，它是一个漂浮在网页的右侧的小工 具条，我们可以使用它上下快速定位页面位置，可以弹出微信二维码或者页面地址二维码，让喜欢在手机等移动设备上阅读的朋友轻松获取信息。</p>
<div class="blog_opt"><a class="button blue" href="http://www.helloweba.com/demo/fixedright/" target="_blank">查看演示</a> <a class="button green" href="http://www.helloweba.com/down-267.html" target="_blank">下载源码</a></div>
<div id="art_content">
<h4>HTML</h4>
<p>首先我们准备右侧浮动层的内容，工具条有上下箭头按钮，然后一个“反馈”链接，点击可以到网站的反馈信息页面，还有一个二维码按钮，鼠标滑上时会弹 出一个二维码图片，那么我们使用.popPanel来放置二维码图片，.arrowPanel是用来做箭头方向的。在本例中，我使用了一张背景图作为工具 条，当然实际应用中我们还可以根据实际需求加多个功能按钮。</p>
<pre><code class="html"><span class="html__tag_start">&lt;div</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"floatPanel"</span><span class="html__tag_start">&gt;</span> 
    <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"ctrolPanel"</span> <span class="html__attr_name">style</span>=<span class="html__attr_value">"right:20px;"</span><span class="html__tag_start">&gt;</span> 
        <span class="html__tag_start">&lt;a</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"arrow"</span> <span class="html__attr_name">href</span>=<span class="html__attr_value">"#"</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;span</span><span class="html__tag_start">&gt;</span>顶部<span class="html__tag_end">&lt;/span&gt;</span><span class="html__tag_end">&lt;/a&gt;</span> 
        <span class="html__tag_start">&lt;a</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"contact"</span> <span class="html__attr_name">href</span>=<span class="html__attr_value">"http://www.helloweba.com/gbook.html"</span> <span class="html__attr_name">target</span>=<span class="html__attr_value">"_blank"</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;span</span><span class="html__tag_start">&gt;</span>反馈<span class="html__tag_end">&lt;/span&gt;</span><span class="html__tag_end">&lt;/a&gt;</span> 
        <span class="html__tag_start">&lt;a</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"qrcode"</span> <span class="html__attr_name">href</span>=<span class="html__attr_value">"#"</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;span</span><span class="html__tag_start">&gt;</span>二维码<span class="html__tag_end">&lt;/span&gt;</span><span class="html__tag_end">&lt;/a&gt;</span> 
        <span class="html__tag_start">&lt;a</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"arrow"</span> <span class="html__attr_name">href</span>=<span class="html__attr_value">"#"</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;span</span><span class="html__tag_start">&gt;</span>底部<span class="html__tag_end">&lt;/span&gt;</span><span class="html__tag_end">&lt;/a&gt;</span> 
    <span class="html__tag_end">&lt;/div&gt;</span> 
     
    <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"popPanel"</span> <span class="html__attr_name">style</span>=<span class="html__attr_value">"right:66px;"</span><span class="html__tag_start">&gt;</span> 
        <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"popPanel-inner"</span><span class="html__tag_start">&gt;</span> 
            <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"qrcodePanel"</span><span class="html__tag_start">&gt;</span><span class="html__tag_start">&lt;img</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"helloweba.jpg"</span> <span class="html__tag_start">/&gt;</span><span class="html__tag_start">&lt;p</span><span class="html__tag_start">&gt;</span>扫描二维码用手机看文章<span class="html__tag_end">&lt;/p&gt;</span><span class="html__tag_end">&lt;/div&gt;</span> 
            <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"arrowPanel"</span><span class="html__tag_start">&gt;</span> 
                <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"arrow01"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/div&gt;</span> 
                <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">class</span>=<span class="html__attr_value">"arrow02"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/div&gt;</span> 
            <span class="html__tag_end">&lt;/div&gt;</span> 
        <span class="html__tag_end">&lt;/div&gt;</span> 
    <span class="html__tag_end">&lt;/div&gt;</span> 
<span class="html__tag_end">&lt;/div&gt;</span> 
</code></pre>
<h4>CSS</h4>
<p>我们使用CSS来将工具条固定在右侧，position:fixed在这里发挥作用，还要注意使用z-index的值要大点，因为我们希望工具条一直能在页面其他元素的上层，也就是可以覆盖其他元素。具体请看以下代码：</p>
<pre><code class="css"><span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span>{<span class="css__property">width:</span><span class="css__number">36px</span>;<span class="css__property">height:</span><span class="css__number">166px</span>;<span class="css__property">background:</span><span class="css__color">#fff</span> <span class="css__url">url(</span>panel_bg.gif<span class="css__url">)</span> <span class="css__value">no-repeat</span> <span class="css__value">left</span> <span class="css__value">top</span>;<span class="css__property">border:</span><span class="css__value">solid</span> <span class="css__number">1px</span> <span class="css__color">#ddd</span>;<span class="css__property">position:</span><span class="css__value">fixed</span>;<span class="css__property">right:</span><span class="css__number">25px</span>;<span class="css__property">top:</span><span class="css__number">300px</span>;<span class="css__property">overflow:</span><span class="css__value">hidden</span>;<span class="css__property">z-index:</span><span class="css__number">10000</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__element">a</span>{<span class="css__property">width:</span><span class="css__number">34px</span>;<span class="css__property">font-size:</span><span class="css__number">12px</span>;<span class="css__property">color:</span><span class="css__color">#ff6600</span>;<span class="css__property">letter-spacing:</span><span class="css__number">1px</span>;<span class="css__property">text-align:</span><span class="css__value">center</span>;<span class="css__property">overflow:</span><span class="css__value">hidden</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.arrow</span>{<span class="css__property">height:</span><span class="css__number">29px</span>;<span class="css__property">line-height:</span><span class="css__number">28px</span>;<span class="css__property">display:</span><span class="css__value">block</span>;<span class="css__property">margin:</span><span class="css__number">1px</span> <span class="css__value">auto</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.arrow</span> <span class="css__element">span</span>{<span class="css__property">display:</span><span class="css__value">none</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.arrow</span><span class="css__pseudo">:hover</span>{<span class="css__property">background:</span><span class="css__color">#f4f4f4</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.arrow</span><span class="css__pseudo">:hover</span> <span class="css__element">span</span>{<span class="css__property">display:</span><span class="css__value">block</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.contact</span>{<span class="css__property">height:</span><span class="css__number">60px</span>;<span class="css__property">display:</span><span class="css__value">block</span>;<span class="css__property">margin:</span><span class="css__number">2px</span> <span class="css__value">auto</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.contact</span> <span class="css__element">span</span>{<span class="css__property">line-height:</span><span class="css__number">90px</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.qrcode</span>{<span class="css__property">height:</span><span class="css__number">40px</span>;<span class="css__property">display:</span><span class="css__value">block</span>;<span class="css__property">margin:</span><span class="css__number">2px</span> <span class="css__value">auto</span>;} 
<span class="css__id">#floatPanel</span> <span class="css__class">.ctrolPanel</span> <span class="css__class">.qrcode</span> <span class="css__element">span</span>{<span class="css__property">display:</span><span class="css__value">none</span>;} 
 
<span class="css__class">.popPanel</span>{<span class="css__property">width:</span><span class="css__number">205px</span>;<span class="css__property">height:</span><span class="css__number">214px</span>; <span class="css__property">position:</span><span class="css__value">fixed</span>;<span class="css__property">right:</span><span class="css__number">90px</span>;<span class="css__property">top:</span><span class="css__number">300px</span>;<span class="css__property">z-index:</span><span class="css__number">10000</span>;<span class="css__property">overflow:</span><span class="css__value">hidden</span>;<span class="css__property">display:</span><span class="css__value">none</span>; } 
<span class="css__class">.popPanel</span>-<span class="css__element">inner</span>{<span class="css__property">width:</span><span class="css__number">205px</span>;<span class="css__property">height:</span><span class="css__number">220px</span>;<span class="css__property">position:</span><span class="css__value">relative</span>;<span class="css__property">overflow:</span><span class="css__value">hidden</span>;} 
<span class="css__class">.arrowPanel</span>{<span class="css__property">width:</span><span class="css__number">10px</span>;<span class="css__property">height:</span><span class="css__number">210px</span>;<span class="css__property">position:</span><span class="css__value">absolute</span>;<span class="css__property">right:</span><span class="css__number">1px</span>;<span class="css__property">top:</span><span class="css__number">102px</span>;} 
<span class="css__class">.arrowPanel</span> <span class="css__class">.arrow01</span>{<span class="css__property">width:</span><span class="css__number">0</span>;<span class="css__property">height:</span><span class="css__number">0</span>;<span class="css__property">font-size:</span><span class="css__number">0</span>;<span class="css__property">line-height:</span><span class="css__number">0</span>;<span class="css__property">border-top:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__value">transparent</span>;_border-<span class="css__property">top:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">black</span>;_filter:chroma(color=<span class="css__color">black</span>);<span class="css__property">border-right:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__value">transparent</span>;_border-<span class="css__property">right:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">black</span>;_filter:chroma(color=<span class="css__color">black</span>);<span class="css__property">border-bottom:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__value">transparent</span>;_border-<span class="css__property">bottom:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">black</span>;_filter:chroma(color=<span class="css__color">black</span>);<span class="css__property">border-left:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">#ddd</span>;<span class="css__property">position:</span><span class="css__value">absolute</span>;<span class="css__property">bottom:</span><span class="css__number">0</span>;<span class="css__property">position:</span><span class="css__value">absolute</span>;<span class="css__property">left:</span><span class="css__number">2px</span>;<span class="css__property">top:</span><span class="css__number">0</span>;} 
<span class="css__class">.arrowPanel</span> <span class="css__class">.arrow02</span>{<span class="css__property">width:</span><span class="css__number">0</span>;<span class="css__property">height:</span><span class="css__number">0</span>;<span class="css__property">font-size:</span><span class="css__number">0</span>;<span class="css__property">line-height:</span><span class="css__number">0</span>;<span class="css__property">border-top:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__value">transparent</span>;_border-<span class="css__property">top:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">black</span>;_filter:chroma(color=<span class="css__color">black</span>);<span class="css__property">border-right:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__value">transparent</span>;_border-<span class="css__property">right:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">black</span>;_filter:chroma(color=<span class="css__color">black</span>);<span class="css__property">border-bottom:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__value">transparent</span>;_border-<span class="css__property">bottom:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">black</span>;_filter:chroma(color=<span class="css__color">black</span>);<span class="css__property">border-left:</span><span class="css__number">10px</span> <span class="css__value">solid</span> <span class="css__color">#fff</span>;<span class="css__property">position:</span><span class="css__value">absolute</span>;<span class="css__property">bottom:</span><span class="css__number">0</span>;<span class="css__property">position:</span><span class="css__value">absolute</span>;<span class="css__property">left:</span><span class="css__number">0</span>;<span class="css__property">top:</span><span class="css__number">0</span>;} 
<span class="css__class">.qrcodePanel</span>{<span class="css__property">width:</span><span class="css__number">194px</span>; <span class="css__property">height:</span><span class="css__number">212px</span>; <span class="css__property">background:</span><span class="css__color">#fff</span>;<span class="css__property">text-align:</span><span class="css__value">center</span>;<span class="css__property">border:</span><span class="css__value">solid</span> <span class="css__number">1px</span> <span class="css__color">#ddd</span>;<span class="css__property">position:</span><span class="css__value">absolute</span>;<span class="css__property">left:</span><span class="css__number">0</span>;<span class="css__property">top:</span><span class="css__number">0</span>;<span class="css__property">overflow:</span><span class="css__value">hidden</span>;} 
<span class="css__class">.qrcodePanel</span> <span class="css__element">img</span>{<span class="css__property">width:</span><span class="css__number">174px</span>;<span class="css__property">height:</span><span class="css__number">174px</span>;<span class="css__property">border:</span><span class="css__value">none</span>;<span class="css__property">padding:</span><span class="css__number">5px</span> <span class="css__number">5px</span> <span class="css__number">0px</span> <span class="css__number">5px</span>;} 
<span class="css__class">.qrcodePanel</span> <span class="css__element">p</span>{<span class="css__property">font-size:</span><span class="css__number">12px</span>;<span class="css__property">color:</span><span class="css__color">#666</span>;<span class="css__property">line-height:</span><span class="css__number">20px</span>;<span class="css__property">letter-spacing:</span><span class="css__number">1px</span>;} 
</code></pre>
<h4>jQuery</h4>
<p>本实例基于jQuery，因此必须先载入jQuery库，你可以使用360的前端CDN加载jQuery库文件。</p>
<pre><code class="html"><span class="html__tag_start">&lt;script</span> <span class="html__attr_name">src</span>=<span class="html__attr_value">"http://libs.useso.com/js/jquery/1.7.2/jquery.min.js"</span><span class="html__tag_start">&gt;</span><span class="html__tag_end">&lt;/script&gt;</span> 
</code></pre>
<p>当点击向上箭头.arrow时，设置动画，页面滚动到页头，当点击向下箭头.arrow时，页面滚动到页底，当中使用了scrollTop，当 scrollTop的值为0时表示到页头，为页面总高度时则表示到页底。然后当鼠标滑上移动终端图标时，会向左弹出一个二维码图案，也是使用动画函数 animate()设置宽度变化达到弹出展示效果，请看详细代码：</p>
<pre><code class="js">$(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
    $(<span class="js__string">"#floatPanel a.arrow"</span>).eq(<span class="js__num">0</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
        $(<span class="js__string">"html,body"</span>).animate(<span class="js__brace">{</span>scrollTop :<span class="js__num">0</span><span class="js__brace">}</span>, <span class="js__num">300</span>); 
        <span class="js__statement">return</span> false; 
    <span class="js__brace">}</span>); 
    $(<span class="js__string">"#floatPanel a.arrow"</span>).eq(<span class="js__num">1</span>).click(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
        $(<span class="js__string">"html,body"</span>).animate(<span class="js__brace">{</span>scrollTop : $(document).height()<span class="js__brace">}</span>, <span class="js__num">300</span>); 
        <span class="js__statement">return</span> false; 
    <span class="js__brace">}</span>); 
 
    <span class="js__statement">var</span> panel = $(<span class="js__string">".popPanel"</span>);     
    <span class="js__statement">var</span> w = panel.outerWidth(); 
     
    $(<span class="js__string">".qrcode"</span>).hover(<span class="js__operator">function</span>()<span class="js__brace">{</span> 
        panel.css(<span class="js__string">"width"</span>,<span class="js__string">"0px"</span>).show(); 
        panel.animate(<span class="js__brace">{</span><span class="js__string">"width"</span> : w + <span class="js__string">"px"</span><span class="js__brace">}</span>,<span class="js__num">300</span>); 
    <span class="js__brace">}</span>,<span class="js__operator">function</span>()<span class="js__brace">{</span> 
        panel.animate(<span class="js__brace">{</span><span class="js__string">"width"</span> : <span class="js__string">"0px"</span><span class="js__brace">}</span>,<span class="js__num">300</span>); 
    <span class="js__brace">}</span>); 
     
<span class="js__brace">}</span>); </code></pre>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="页面右侧浮动固定层返回顶部按钮带二维码展示功能" href="http://www.pnyes.com/?p=36">页面右侧浮动固定层返回顶部按钮带二维码展示功能</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=36</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用moment.js轻松管理日期和时间</title>
		<link>http://www.pnyes.com/?p=34</link>
		<comments>http://www.pnyes.com/?p=34#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:22:44 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[js知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=34</guid>
		<description><![CDATA[大家在前端Javascript开发中会遇到处理日期时间的问题，经常会拿来一大堆处理函数才能完成一个简单的日期时 [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="content">
<p>大家在前端Javascript开发中会遇到处理日期时间的问题，经常会拿来一大堆处理函数才能完成一个简单的日期时间显示效果。今天我给大家介绍一个轻量级的Javascript日期处理类库：moment.js，使用它可以轻松解决前端开发中遇到的种种日期时间问题。</p>
<div class="blog_opt"><a class="button blue" href="http://www.helloweba.com/demo/datetime/" target="_blank">查看演示</a> <a class="button green" href="http://www.helloweba.com/down-271.html" target="_blank">下载源码</a></div>
<div id="art_content">
<p>moment.js不依赖任何第三方库，支持字符串、Date、时间戳以及数组等格式，可以像PHP的date()函数一样，格式化日期时间，计算相对时间，获取特定时间后的日期时间等等，本文有如下举例。</p>
<h4>格式化日期</h4>
<p>当前时间：</p>
<pre><code class="js">moment().format(<span class="js__string">'YYYY-MM-DD HH:mm:ss'</span>); <span class="js__sl_comment">//2014-09-24 23:36:09</span> 
</code></pre>
<p>今天是星期几：</p>
<pre><code class="js">moment().format(<span class="js__string">'d'</span>); <span class="js__sl_comment">//3</span> 
</code></pre>
<p>转换当前时间的Unix时间戳：</p>
<pre><code class="js">moment().format(<span class="js__string">'X'</span>); 
</code></pre>
<h4>相对时间</h4>
<p>20120901相对当前日期是2年前</p>
<pre><code class="js">moment(<span class="js__string">"20120901"</span>, <span class="js__string">"YYYYMMDD"</span>).fromNow(); <span class="js__sl_comment">//2 years ago</span> 
</code></pre>
<p>7天后的日期：</p>
<pre><code class="js">moment().add(<span class="js__string">'days'</span>,<span class="js__num">7</span>).format(<span class="js__string">'YYYY年MM月DD日'</span>); <span class="js__sl_comment">//2014年10月01日</span> 
</code></pre>
<p>9小时后的时间：</p>
<pre><code class="js">moment().add(<span class="js__string">'hours'</span>,<span class="js__num">9</span>).format(<span class="js__string">'HH:mm:ss'</span>); 
</code></pre>
<p>moment.js提供了丰富的说明文档，使用它还可以创建日历项目等复杂的日期时间应用。我们日常开发中最常用的是格式化时间，下面我把常用的格式制作成表格说明供有需要的朋友查看：</p>
<table class="main_table" border="0" width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr class="table_title">
<td width="15%">格式代码</td>
<td>说明</td>
<td width="35%">返回值例子</td>
</tr>
<tr>
<td align="center">M</td>
<td>数字表示的月份，没有前导零</td>
<td>1到12</td>
</tr>
<tr>
<td align="center">MM</td>
<td>数字表示的月份，有前导零</td>
<td>01到12</td>
</tr>
<tr>
<td align="center">MMM</td>
<td>三个字母缩写表示的月份</td>
<td>Jan到Dec</td>
</tr>
<tr>
<td align="center">MMMM</td>
<td>月份，完整的文本格式</td>
<td>January到December</td>
</tr>
<tr>
<td align="center">Q</td>
<td>季度</td>
<td>1到4</td>
</tr>
<tr>
<td align="center">D</td>
<td>月份中的第几天，没有前导零</td>
<td>1到31</td>
</tr>
<tr>
<td align="center">DD</td>
<td>月份中的第几天，有前导零</td>
<td>01到31</td>
</tr>
<tr>
<td align="center">d</td>
<td>星期中的第几天，数字表示</td>
<td>0到6，0表示周日，6表示周六</td>
</tr>
<tr>
<td align="center">ddd</td>
<td>三个字母表示星期中的第几天</td>
<td>Sun到Sat</td>
</tr>
<tr>
<td align="center">dddd</td>
<td>星期几，完整的星期文本</td>
<td>从Sunday到Saturday</td>
</tr>
<tr>
<td align="center">w</td>
<td>年份中的第几周</td>
<td>如42：表示第42周</td>
</tr>
<tr>
<td align="center">YYYY</td>
<td>四位数字完整表示的年份</td>
<td>如：2014 或 2000</td>
</tr>
<tr>
<td align="center">YY</td>
<td>两位数字表示的年份</td>
<td>如：14 或 98</td>
</tr>
<tr>
<td align="center">A</td>
<td>大写的AM PM</td>
<td>AM PM</td>
</tr>
<tr>
<td align="center">a</td>
<td>小写的am pm</td>
<td>am pm</td>
</tr>
<tr>
<td align="center">HH</td>
<td>小时，24小时制，有前导零</td>
<td>00到23</td>
</tr>
<tr>
<td align="center">H</td>
<td>小时，24小时制，无前导零</td>
<td>0到23</td>
</tr>
<tr>
<td align="center">hh</td>
<td>小时，12小时制，有前导零</td>
<td>00到12</td>
</tr>
<tr>
<td align="center">h</td>
<td>小时，12小时制，无前导零</td>
<td>0到12</td>
</tr>
<tr>
<td align="center">m</td>
<td>没有前导零的分钟数</td>
<td>0到59</td>
</tr>
<tr>
<td align="center">mm</td>
<td>有前导零的分钟数</td>
<td>00到59</td>
</tr>
<tr>
<td align="center">s</td>
<td>没有前导零的秒数</td>
<td>1到59</td>
</tr>
<tr>
<td align="center">ss</td>
<td>有前导零的描述</td>
<td>01到59</td>
</tr>
<tr>
<td align="center">X</td>
<td>Unix时间戳</td>
<td>1411572969</td>
</tr>
</tbody>
</table>
<p>更多有关moment.js的介绍，请访问项目官网：<a href="http://momentjs.com/" target="_blank" rel="nofollow">http://momentjs.com/</a></p>
</div>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="使用moment.js轻松管理日期和时间" href="http://www.pnyes.com/?p=34">使用moment.js轻松管理日期和时间</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=34</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>详解CSS网页布局中默认字体样式</title>
		<link>http://www.pnyes.com/?p=32</link>
		<comments>http://www.pnyes.com/?p=32#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:19:15 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[常见问题]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=32</guid>
		<description><![CDATA[浏览器默认的样式往往在不同的浏览器、不同的语言版本甚至不同的系统版本都有不同的设置，这就导致如 果直接利用默认 [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="content">
<p>浏览器默认的样式往往在不同的浏览器、不同的语言版本甚至不同的系统版本都有不同的设置，这就导致如 果直接利用默认样式的页面在各个浏览器下显示非常不一致，于是就有了类似YUI的reset之类用来尽量重写浏览器的默认设置保证各个浏览器样式一致性的做法。</p>
<div id="art_content">
<p>拿字体来说，各个浏览器默认的字体种类、字体大小和字体行高都不一样，比如IE8的中文版在Windows XP下显示网页时默认字体是宋体，而英文版肯定不会如此。所以我们需要统一设置默认的字体样式，以便实现一致的显示效果来保证设计的一致性和提高开发效率。</p>
<h4>样式优先级</h4>
<p>通常用户看到的页面的样式会受到三层控制:</p>
<p>第一层是浏览器的默认样式</p>
<p>第二层是网页定义样式</p>
<p>第三层是用户自定义样式</p>
<p>和CSS一样，后面的优先级 高于前面的，也就是说网页定义样式可以覆盖浏览器的默认样式，而用户自定义样式优先级最高。不过，当有 !important 时，网页样式可以覆盖用户自定义样式。用户!important &gt; 网页!important &gt; 用户 &gt; 网页 &gt; 浏览器默认。</p>
<h4>字体：arial</h4>
<p>我们页面的绝大部分内容字符都是中文，毫无疑问目前为止在网页上最常用也是最通用的显示中文的字体是宋体，但是宋体在显示英文、数字和英文符号时过 于糟糕，比如©字符，所以我们一般期望通过CSS来实现用更好的字体样式来显示它们，然后用宋体来显示中文和中文符号。之所以选择arial是因为：</p>
<p>Windows和Mac都预装了这款字体，应该是使用最广泛的网页字体了。它的潜在对手tahoma和helvetica就没有这么幸运了。</p>
<p>视觉设计的专业人士可能会认为在Windows中使用tahoma、在Mac中使用helvetica更好，比如淘宝的默认字体样式是font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif; 　　这是一个很不错的选择，但是你也会发现Google、YAHOO、Youtube、Bing甚至MSN的新版都使用arial作为第一默认字体。所以 从美观和可读性上来讲arial应该是完全可以接受的。</p>
<p>一般情况下设置font-family都会在最后设置通用字体族以保证其安全性，比如Google的设置为font- family:arial,sans-serif;，但是至少在非中文版的Win7下当编码是GBK时，IE8会因sans-serif来渲染宋体，导致 字体出现变形，这就是为什么淘宝需要在sans-serif前加上宋体而Google无需这样做的原因。</p>
<p>因为中文字体的选择非常有限，所以目前所有的主流浏览器都设置使用宋体来显示中文。Baidu的首页和搜索结果页使用font- family:arial;可以从侧面说明这样做的安全性。可能有人注意到Firefox中国版默认显示的中文字体是微软雅黑，这是因为谋智网络擅自修改 了用户自定义样式，不允许网页的样式覆盖浏览器设置的样式。也是由于类似的情况，我们要弹性设计网页非常重要。</p>
<p>使用英文字体作为第一默认字体会导致的问题之一就是中英文以及符号混排时的对齐问题、通过设置行高和hasLayout能解决绝大部分情况，但是都 不会很完美，如果把字体改成“宋体”能彻底的解决问题。很明显，这个问题只出现在IE上。所以，如果你的网站很少使用英文、数字和英文符号，那么直接设置 {font-family:\5b8b\4f53;}也是很合理的选择。</p>
<h4>大小：12px</h4>
<p>12px是宋体能显示的极限，虽然微软雅黑能显示更小的字体，但目前的应用环境尚未成熟。由于宋体基本上是目前显示中文唯一的通用Web字体，所以12px成为最常用的字体大小。我们当然可以依据产品的需要来修改这个默认值。</p>
<p>不用考虑基于字体大小（em）的设计。</p>
<p>在Chrome3.0之后的中文版中，字体大小最小值是12px，比如你设置最小字体为10px，最后也变成12px。</p>
<h4>行高：1.5倍</h4>
<p>这是一个经验值，不同的产品对这个值要求可能不同，但我们一般会设置最常用的为默认值。比如YUI的font中是font:13px/1.231 arial,helvetica,clean,sans-serif;即字体大小默认值是13px，行高是13*1.231=16.003px，默认的行 高是默认字体的1.231倍。对于中文来说，常用的字体大小12px、14px、16px、18px等偶数大小，在IE6和IE7设置其行高也为偶数能解 决一些特殊情况下的字体对其问题。 在IE6和IE7中，行高值必须大于字体的2px才能保证字体的完整显示或当其作为链接时能有效显示下划线。 设置line-height时，注意不要使用单位（包括%在内），因为子节点会继承经过运算后的line-height值，所以当使用单位后浏览器会把 line-height计算成第一次定义的绝对值，而不会随着字体大小的变化而变化，而无单位的数值表示是所在容器的font-size的倍数，所以设置 为无单位的数值是最佳选择。</p>
<p>深入CSS 行高非常有利于理解line-height，值得一读。</p>
<h4>性能和效率</h4>
<p>大部分平台都有arial，减少浏览器的查找时间。</p>
<p>代码最少，书写方便。arial基本上是名字最短的字体了，可以节约CSS的大小。</p>
<p>所有的字母都小写，目前Google就是这样做的，好处是既可以编写更快也能提升Gzip压缩的效率。</p>
<p>中文最好用unicode表示，比如使用宋体是{font-family:\5b8b\4f53;}，使用微软雅黑是{font-family: \5fae\8f6f\96c5\9ed1;}，这样的好处是避免编码问题，同时能得到所有的主流浏览器的支持。 使用正确的字体种类写法，避免使用引号，这样可以缩小CSS的大小。中文字体可以按上一条方式来编写。</p>
<h4> 未来</h4>
<p>通过对中英文及符号混排的测试， 我发现微软雅黑其实表现相当不错，包括英文数字和英文字符以及在IE6和IE7的显示效果上，但唯一的遗憾是在XP下如果安装了微软雅黑字体的用户没有打 开“使用屏幕字体的边缘平滑”选项的话，在firefox、Safari和Opera、特别是IE6下会非常模糊难以辨认。针对这个问题目前并没有很好的 解决方案，所以只有等到IE6使用比率非常小的时候才可能正式的使用它。或许需要到2014年，XP死掉的时候。</p>
<p>虽然很早就有了@font-face，但是浏览器的支持、网速和商业问题，导致它很少被应用。最近关于字体的好消息是Firefox3.6将支持 Web Open Font Forma。关于Web字体未来的相关信息可以看Web 字体的未来、关于 Web 字体：现状与未来和再谈 Web 字体的现状与未来。</p>
</div>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="详解CSS网页布局中默认字体样式" href="http://www.pnyes.com/?p=32">详解CSS网页布局中默认字体样式</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=32</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS布局:让页底内容永远固定在底部</title>
		<link>http://www.pnyes.com/?p=30</link>
		<comments>http://www.pnyes.com/?p=30#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:18:48 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[css知识]]></category>
		<category><![CDATA[html知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=30</guid>
		<description><![CDATA[我们在设计一些页面内容甚少的网页时（典型应用就是登陆页面），由于显示器的分辨率大，在正常情况下，假如页面内容高 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>我们在设计一些页面内容甚少的网页时（典型应用就是登陆页面），由于显示器的分辨率大，在正常情况下，假如页面内容高度小于浏览器高度时，页面底部以下会留下很大的空间...</p>
<div id="art_content">
<p>先看示例：<a href="http://www.helloweba.com/demo/cssfooter/demo1.html" target="_blank">http://www.helloweba.com/demo/cssfooter/demo1.html</a></p>
<p>不管浏览器的高度怎么变化，我们要想让页底内容始终固定在底部，最终效果如：<a href="http://www.helloweba.com/demo/cssfooter/demo2.html" target="_blank">http://www.helloweba.com/demo/cssfooter/demo2.html</a></p>
<p>本文提供了一个CSS解决方案。</p>
<h4>XHTML</h4>
<pre><code class="html"><span class="html__tag_start">&lt;div</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"wrap"</span><span class="html__tag_start">&gt;</span> 
    <span class="html__tag_start">&lt;div</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"main"</span><span class="html__tag_start">&gt;</span> 
    主体 
    <span class="html__tag_end">&lt;/div&gt;</span> 
<span class="html__tag_end">&lt;/div&gt;</span> 
 
<span class="html__tag_start">&lt;div</span> <span class="html__attr_name">id</span>=<span class="html__attr_value">"footer"</span><span class="html__tag_start">&gt;</span> 
   这里是页底footer内容 
<span class="html__tag_end">&lt;/div&gt;</span> 
</code></pre>
<h4>CSS</h4>
<pre><code class="css">&lt;<span class="css__element">style</span> <span class="css__element">type</span>="<span class="css__element">text</span>/<span class="css__element">css</span>"&gt; 
* {<span class="css__property">margin:</span><span class="css__number">0</span>;<span class="css__property">padding:</span><span class="css__number">0</span>;}  
<span class="css__element">html</span>, <span class="css__element">body</span> {<span class="css__property">height:</span> <span class="css__number">100%</span>;} 
<span class="css__id">#wrap</span> {<span class="css__property">min-height:</span> <span class="css__number">100%</span>;} 
<span class="css__id">#main</span> {<span class="css__property">overflow:</span><span class="css__value">auto</span>; 
    <span class="css__property">padding-bottom:</span> <span class="css__number">60px</span>;}  <span class="css__comment">/* 必须使用和footer相同的高度 */</span> 
<span class="css__id">#footer</span> {<span class="css__property">position:</span> <span class="css__value">relative</span>; 
    <span class="css__property">margin-top:</span> -<span class="css__number">60px</span>;  
    <span class="css__property">height:</span> <span class="css__number">60px</span>; 
    <span class="css__property">clear:</span><span class="css__value">both</span>; 
    <span class="css__property">background:</span><span class="css__color">#369</span>}  
 
<span class="css__comment">/*Opera Fix*/</span> 
<span class="css__element">body</span><span class="css__pseudo">:before</span> { 
<span class="css__property">content:</span><span class="css__string">""</span>; 
<span class="css__property">height:</span><span class="css__number">100%</span>; 
<span class="css__property">float:</span><span class="css__value">left</span>; 
<span class="css__property">width:</span><span class="css__number">0</span>; 
<span class="css__property">margin-top:</span>-<span class="css__number">32767px</span>; 
} 
&lt;/<span class="css__element">style</span>&gt; 
</code></pre>
<p>注意，以上代码在IE6上根本不起作用，必须使用以下代码来解决IE6下的BUG。</p>
<pre><code class="html"><span class="html__ie_style">&lt;!--[if !IE 7]&gt;</span> 
    <span class="html__tag_start">&lt;style</span> <span class="html__attr_name">type</span>=<span class="html__attr_value">"text/css"</span><span class="html__tag_start">&gt;</span> 
        <span class="css__id">#wrap</span> {<span class="css__property">display:</span>table;<span class="css__property">height:</span><span class="css__number">100%</span>} 
    <span class="html__tag_end">&lt;/style&gt;</span> 
<span class="html__ie_style">&lt;![endif]--&gt;</span> </code></pre>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="CSS布局:让页底内容永远固定在底部" href="http://www.pnyes.com/?p=30">CSS布局:让页底内容永远固定在底部</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=30</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>有关CSS透明技巧的介绍</title>
		<link>http://www.pnyes.com/?p=28</link>
		<comments>http://www.pnyes.com/?p=28#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:17:44 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[css知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=28</guid>
		<description><![CDATA[这篇汇总主要是提供一些CSS不透明的详细介绍，代码示例和解释，以实现这项有用的CSS技术在您的项目中兼容所有浏 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>这篇汇总主要是提供一些CSS不透明的详细介绍，代码示例和解释，以实现这项有用的CSS技术在您的项目中兼容所有浏览器。</p>
<div id="art_content">
<p>关于CSS 透明度，有一点需要注意的是，它虽然使用了很多年，但它一直以来都不是一个标准属性。它是一种非标准技术，应该是CSS3规范的一部分。</p>
<h4>一、旧的Opacity设置</h4>
<p>以下代码是Firefox和Safari旧版本所需的透明度设置:</p>
<pre><code class="css"><span class="css__id">#myElement</span> { 
-khtml-opacity: .<span class="css__number">5</span>;  
-moz-opacity: <span class="css__number">0.5</span>;  }  
</code></pre>
<p>-khtml-opacity设置是针对旧版本的Webkit渲染引擎，这种专用属性现在已经过时了，除非你还有需要兼容Safari 1.x.的用户。</p>
<p>第二行使用专用属性 -moz-opacity是 为了兼容Mozilla渲染引擎的早期版本，以及追溯到Netscape Navigator。Firefox 0.9以后就不要求使用-moz-opacity属性，Firefox 3.5（现在使用Gecko引擎）已经不在支持这个属性。</p>
<h4>二、在Firefox, Safari, Chrome和Opera下的CSS透明度</h4>
<p>以下代码是除了IE外的所有当前浏览器的最简单，最最新的不透明度设置的CSS语法：</p>
<pre><code class="css"><span class="css__id">#myElement</span> { opacity: .<span class="css__number">7</span>; }  
</code></pre>
<p>上述语法将设置一个元素为70％不透明（或30%透明）。设置opacity:1将使元素不透明，而设置opacity:0将使得元素完全不可见。你 只要记住“opacity”等同于“不透明”就很容易记住了，opacity值越小就越接近透明。</p>
<p>opacity属性可以精确地小数点后两位，所以值取“.01”和“.02”实际上是不同的，虽然可见度很难被发觉。一般情况下，精确到一位就可以了，取值如“.3”或“.7”。</p>
<h4>三、IE下的CSS透明度</h4>
<p>IE下照旧有别于其他浏览器，并且目前也有三个不同版本的IE在广泛使用，透明度设置是不同的，有时需要额外的CSS来控制：</p>
<pre><code class="css"><span class="css__id">#myElement</span> { <span class="css__property">filter:</span> alpha(opacity=<span class="css__number">40</span>); }  
</code></pre>
<p>上面的CSS使用专用的filter属性来设置IE6-8透明度。对于IE6和IE7需要注意：为了使得透明设置生效，元素必须是“有布局”。一个 元素可以通过使用一些CSS属性来使其被布局，有如width 和 position。关于微软专有的hasLayout属性详情，以及如何触发它，可以参考<a href="http://www.52css.com" target="_blank">52CSS.com</a>相关文档。</p>
<p>另外一个设置IE8的CSS透明度的方法语法如下（注意注释中指出的版本）：</p>
<pre><code class="css"><span class="css__id">#myElement</span> { 
<span class="css__property">filter:</span> progid:DXImageTransform.Microsoft.Alpha(opacity=<span class="css__number">40</span>);      
<span class="css__comment">/* 第一行在IE6, IE7和IE8下有效 */</span>      
-ms-<span class="css__property">filter:</span><span class="css__string">"progid:DXImageTransform.Microsoft.Alpha(opacity=40)"</span>;     
<span class="css__comment">/*第二行仅在IE8下有效 */</span>} 
</code></pre>
<p>第一行代码针对当前所有IE版本，第二行仅针对IE8。</p>
<p>注意两行代码的不同之处：在第二行代码中，在filter属性前跟着-ms-前缀，并且属性值有加引号，这些都是语法所必须的。</p>
<p>说实在，有了如前一个例子中用alpha(opacity=40)的语法来作用于任何版本的IE下的任何有布局的元素之后，我也不确定是否还有必要用“progid”的方法。</p>
<h4>四、使用JavaScript设置和改变CSS透明度</h4>
<p>您可以使用下面的语法访问JavaScript中的CSS opacity 属性：</p>
<pre><code class="js">document.getElementById(<span class="js__string">"myElement"</span>).style.opacity = <span class="js__string">".4"</span>;   
<span class="js__sl_comment">// 针对所有现代浏览器 </span> 
document.getElementById(<span class="js__string">"myElement"</span>).style.filter = <span class="js__string">"alpha(opacity=40)"</span>; 
<span class="js__sl_comment">// 针对IE </span> 
</code></pre>
<p>上面的代码可以使用行内循环或者其他动态函数递增修改透明度的值。当然，你必须先通过特征检测来决定使用哪一行代码。</p>
<h4>五、使用JQuery设置和改变CSS透明度</h4>
<p>直接使用jQuery设置CSS透明度更直观更容易实现，因为在所有浏览器代码都一样，并且你不必担心在IE下元素是否“haslayout”：</p>
<pre><code class="js">$(<span class="js__string">"#myElement"</span>).css(<span class="js__brace">{</span> opacity: .<span class="js__num">4</span> <span class="js__brace">}</span>); <span class="js__sl_comment">// 所有浏览器有效 </span> 
</code></pre>
<p>您也可以使用一下jQuery代码使一个元素动画透明：</p>
<pre><code class="js">$(<span class="js__string">"#myElement"</span>).animate(<span class="js__brace">{</span>opacity: .<span class="js__num">4</span><span class="js__brace">}</span>, <span class="js__num">1000</span>, <span class="js__operator">function</span>() <span class="js__brace">{</span>      
<span class="js__sl_comment">// 动画完成，所有浏览器下有效  });</span> 
</code></pre>
<p>不管元素的透明度在动画开始时是多少，它都会渐变到透明度为“.4”。动画的速度通过值“1000”设定，动画时间以毫秒为单位。代码中的最后一个属性是一个可选回调函数，将在动画完成后执行。</p>
<p>如果该元素的透明度在CSS中已经设定为“.4”，那在动画运行的时候，你将不会发觉有任何不同，所以动画开始和最终透明度要有所不同。</p>
<h4>六、通过RGBA的透明度</h4>
<p>另一个CSS3技术只支持部分新的浏览器（Firefox 3+, Opera 10.1+, Chrome 2+,Safari 3.1+），可通过RGBA的alpha通道的方式设定。语法如下：</p>
<pre><code class="css"><span class="css__id">#rgba</span> {<span class="css__property">background:</span> rgba(<span class="css__number">98</span>, <span class="css__number">135</span>, <span class="css__number">167</span>, .<span class="css__number">4</span>);} 
</code></pre>
<p>在上面的定义中，通过RGB（前三个数字）给背景设定颜色，然后最后一个是alpha设置，以执行给定颜色的透明度。这个alpha设置跟opacity 属性一样，可设定任何0到1的数字，精确得到两位小数点。数字值越大，就越接近完全不透明的颜色。</p>
<h4>七、通过 HSLA的透明度</h4>
<p>类似之前的定义，CSS3还允许使用HSLA单独设置颜色和alpha值，HSLA表示Hue（色调）, Saturation（饱和度）, Lightness（亮度）, 和Alpha。以下是HSLA透明的例子：</p>
<pre><code class="css"><span class="css__id">#hsla</span> {<span class="css__property">background:</span> hsla(<span class="css__number">207</span>, <span class="css__number">38%</span>, <span class="css__number">47%</span>, .<span class="css__number">4</span>);}  
</code></pre>
<p>更多关于HSLA颜色的解释，参考这篇来自W3.org的文章。如同RGBA透明度，最后的数字表示透明度设置，跟RGBA起同样的作用。注意 RGBA和HSLA透明度的一个重要的好处是这些透明度设置不会影响到子元素的，但通过opacity属性的方式则会。alpha设置的RGBA和 HSLA只影响背景颜色的透明度，仅此而已。</p>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="有关CSS透明技巧的介绍" href="http://www.pnyes.com/?p=28">有关CSS透明技巧的介绍</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS原理与CSS经验分享</title>
		<link>http://www.pnyes.com/?p=26</link>
		<comments>http://www.pnyes.com/?p=26#comments</comments>
		<pubDate>Sat, 27 Sep 2014 03:17:13 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[css知识]]></category>

		<guid isPermaLink="false">http://www.pnyes.com/?p=26</guid>
		<description><![CDATA[很多人用了很久的css却从来也不知道css是怎么去工作的，写出来的css浏览器是怎么样去解析的呢？所以往 往在 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>很多人用了很久的css却从来也不知道css是怎么去工作的，写出来的css浏览器是怎么样去解析的呢？所以往 往在一定阶段之后，就变成了进一步提高css水平的一个瓶颈。我将从以下进行分析。早期的网页浏览器只支援简易版本的HTML。</p>
<div id="art_content">
<p>专属软件的浏览器的迅速发展导致非标准的HTML代码的产生。但随着HTML的成长，为了满足设计师的要求，HTML获得了很多显示功能。随着这些功能的增加外来定义样式的语言越来越没有意义了。</p>
<h4>一、浏览器的发展与CSS</h4>
<p>网页浏览器主要通过HTTP协议连接网页服务器而取得网页，HTTP容许网页浏览器送交资料到网页服务器并且获取网页。目前最常用的 HTTP 是 HTTP/1.1，这个协议在RFC2616中被完整定义。HTTP/1.1 有其一套Internet Explorer并不完全支援的 标准，然而 许多其他当代的网页浏览器则完全支援这些标准。网页的位置以URL（统一资源定位符）指示，此乃网页的地址；以http:开首的便是 通过 HTTP协议登陆。很多浏览器同时支援其他类型的URL及协议，例如ftp:是FTP（档案传送协议）、gopher:是Gopher及https: 是 HTTPS（以SSL加密的HTTP）。</p>
<p>早期的网页浏览器只支援简易版本的HTML。专属软件的浏览器的迅速发展导致非标准的HTML代码的产生。</p>
<p>但随着HTML的成长，为了满足设计师的要求，HTML获得了很多显示功能。随着这些功能的增加外来定义样式的语言越来越没有意义了。</p>
<h4>一、浏览器的发展与CSS</h4>
<p>网页浏览器主要通过HTTP协议连接网页服务器而取得网页，HTTP容许网页浏览器送交资料到网页服务器并且获取网页。目前最常用的 HTTP 是 HTTP/1.1，这个协议在RFC2616中被完整定义。HTTP/1.1 有其一套Internet Explorer并不完全支援的 标准，然而 许多其他当代的网页浏览器则完全支援这些标准。网页的位置以URL（统一资源定位符）指示，此乃网页的地址；以http:开首的便是 通过 HTTP协议登陆。很多浏览器同时支援其他类型的URL及协议，例如ftp:是FTP（档案传送协议）、gopher:是Gopher及https: 是 HTTPS（以SSL加密的HTTP）。</p>
<p>早期的网页浏览器只支援简易版本的HTML。专属软件的浏览器的迅速发展导致非标准的HTML代码的产生。</p>
<p>但随着HTML的成长，为了满足设计师的要求，HTML获得了很多显示功能。随着这些功能的增加外来定义样式的语言越来越没有意义了。</p>
<p>1994年哈坤·利提出了CSS的最初建议。伯特·波斯（BertBos）当时正在设计一个叫做Argo的浏览器，他们决定一起合作设计CSS。</p>
<p>当时已经有过一些样式表语言的建议了，但CSS是第一个含有“层叠”的主意的。在CSS中，一个文件的样式可以从其他的样式表中继承下来。读者在 有 些 地方可以使用他自己更喜欢的样式，在其他地方则继承，或“层叠”作者的样式,这种层叠的方式使作者和读者都可以灵活地加入自己的设计，混合各人的爱好。</p>
<p>1997年初，W3C内组织了专门管CSS的工作组，其负责人是克里斯·里雷。这个工作组开始讨论第一版中没有涉及到的问题，其结果是1998年5月出版的第二版要求。到2007年为止，第三版还未完备。</p>
<h4>二、浏览器是如何渲染页面和加载页面</h4>
<p>为什么有些网站打开的时候会加载会很慢，而且是整个页面同时显示的，而有些网站是从顶到下逐步显示出来的？要搞懂这个可以先从下面这个常规流程开始：</p>
<p>1. 浏览器下载的顺序是从上到下，渲染的顺序也是从上到下，下载和渲染是同时进行的。</p>
<p>2. 在渲染到页面的某一部分时，其上面的所有部分都已经下载完成（并不是说所有相关联的元素都已经下载完）。</p>
<p>3. 如果遇到语义解释性的标签嵌入文件（JS脚本，CSS样式），那么此时IE的下载过程会启用单独连接进行下载。</p>
<p>4. 并且在下载后进行解析，解析过程中，停止页面所有往下元素的下载。</p>
<p>5. 样式表在下载完成后，将和以前下载的所有样式表一起进行解析，解析完成后，将对此前所有元素（含以前已经渲染的）重新进行渲染。</p>
<p>6. JS、CSS中如有重定义，后定义函数将覆盖前定义函数。</p>
<p>这里关键的是第2-5这三点。渲染效率与下面三点有关：</p>
<p>1. css选择器的查询定位效率</p>
<p>2. 浏览器的渲染模式和算法</p>
<p>3. 要进行渲染内容的大小</p>
<h4>三、什么是CSS以及CSS的优点</h4>
<p>什么是CascadingStyleSheets（层叠样式表）*CSS是CascadingStyleSheets(层叠样式表)的 简 称.*CSS 语言是一种标记语言,它不需要编译,可以直接由浏览器解释执行(属于浏览器解释型语言).*在标准网页设计中CSS负责网页内容 (XHTML)的表 现.*CSS文件也可以说是一个文本文件,它包含了一些CSS标记,CSS文件必须使用css为文件名后缀.*可以通过简单的更改 CSS文件,改变网页 的整体表现形式,可以减少我们的工作量,所以她是每一个网页设计人员的必修课.*CSS是由W3C的CSS工作组产生和维护的.</p>
<p>采用CSS+DIV进行网页重构相对与传统的TABLE网页布局而具有以下3个显著优势：</p>
<p>1. 表现和内容相分离将设计部分剥离出来放在一个独立样式文件中，HTML文件中只存放文本信息。这样的页面对搜索引擎更加友好。</p>
<p>2. 提高页面浏览速度对于同一个页面视觉效果，采用CSS+DIV重构的页面容量要比TABLE编码的页面文件容量小得多，前者一般只有后者的1/2大小。浏览器就不用去编译大量冗长的标签。</p>
<p>3. 易于维护和改版你只要简单的修改几个CSS文件就可以重新设计整个网站的页面。</p>
<h4>四、浏览器对CSS的匹配原理</h4>
<p>浏览器CSS匹配不是从左到右进行查找，而是从右到左进行查找。比如之前说的DIV#divBoxpspan.red{color:red;}，浏 览器 的查找顺序如下：先查找html中所有class=’red’的span元素，找到后，再查找其父辈元素中是否有p元素，再判断p的父元素中是否有id为 divBox的div元素，如果都存在则CSS匹配上。</p>
<p>浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。firefox称这种查 找方式为keyselector(关键字查询)，所谓的关键字就是样式规则中最后(最右边)的规则，上面的key就是span.red。</p>
<h4>五、优化你的CSS</h4>
<p>所谓高效的CSS就是让浏览器在查找style匹配的元素的时候尽量进行少的查找，下面列出一些我们常见的写CSS犯一些低效错误：</p>
<p>1、不要在ID选择器前使用标签名</p>
<pre><code class="css"><span class="css__element">DIV</span><span class="css__id">#divBox</span> <span class="css__comment">/*一般写法*/</span> 
<span class="css__id">#divBox</span> <span class="css__comment">/*更好写法*/</span> 
</code></pre>
<p>解释：因为ID选择器是唯一的，加上div反而增加不必要的CSS匹配。</p>
<p>2、不要在class选择器前使用标签名</p>
<pre><code class="css"><span class="css__element">span</span><span class="css__class">.red</span> <span class="css__comment">/*一般写法*/</span> 
<span class="css__class">.red</span> /*更好写法* 
</code></pre>
<p>解释：同第一条，但如果你定义了多个.red，而且在不同的元素下是样式不一样，则不能去掉，比如你css文件中定义如下：</p>
<pre><code class="css"><span class="css__element">p</span><span class="css__class">.red</span>{<span class="css__property">color:</span><span class="css__color">red</span>;} 
<span class="css__element">span</span><span class="css__class">.red</span>{<span class="css__property">color:</span><span class="css__color">#ff00ff</span>} 
</code></pre>
<p>如果是这样定义的就不要去掉，去掉后就会混淆，不过建议最好不要这样写</p>
<p>3、尽量少使用层级关系</p>
<pre><code class="css"><span class="css__id">#divBoxp</span><span class="css__class">.red</span>{<span class="css__property">color:</span><span class="css__color">red</span>;} <span class="css__comment">/*一般写法*/</span> 
<span class="css__class">.red</span>{..} <span class="css__comment">/*更好写法*/</span> 
</code></pre>
<p>4、使用class代替层级关系</p>
<pre><code class="css"><span class="css__id">#divBoxullia</span>{<span class="css__property">display:</span><span class="css__value">block</span>;} <span class="css__comment">/*一般写法*/</span> 
<span class="css__class">.block</span>{<span class="css__property">display:</span><span class="css__value">block</span>;} <span class="css__comment">/*更好写法*/</span> 
</code></pre>
<p>5、在css渲染效率中id和class的效率是基本相当的</p>
<p>class最在第一次载入中被缓存，在层叠中会有更加好的效果，在根部元素采用id会具有更加好（id有微妙的速度优势）。</p>
</div>
<p><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">声明:</span> 本文采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权 | <a href="http://www.pnyes.com">网页知识网</a><br />转载请注明转自《<a rel="bookmark" title="CSS原理与CSS经验分享" href="http://www.pnyes.com/?p=26">CSS原理与CSS经验分享</a>》</p>]]></content:encoded>
			<wfw:commentRss>http://www.pnyes.com/?feed=rss2&#038;p=26</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
