开发小技巧:jQuery处理自适应内容高度的iframe

前端开发中,我们往往需要处理iframe,可能有的时候希望iframe根据内容自适应高度以便不出现令人烦心的滚动条,下面这段代码可以帮助你实现类似功能。 [php] <pre>$(document).ready(function() { // Set specific variable to represent all iframe tags. var iFrames = document.getElementsByTagName('iframe'); // Resize heights. function iResize() { // Iterate through all iframes in the page. for (var i = 0, j = iFrames.length; i < j; i++) { // Set inline style to equal the body height of the iframed content. iFrames[i].style.height = iFrames[i].contentWindow.document.body.offsetHeight + 'px'; } } // Check if browser is Safari or Opera. if ($.browser.safari || $.browser.opera) { // Start timer when loaded. $('iframe').load(function() { setTimeout(iResize, 0); } ); // Safari and Opera need a kick-start. for (var i = 0, j = iFrames.length; i < j; i++) { var iSource = iFrames[i].src; iFrames[i].src=""; iFrames[i].src = iSource; } } else { // For other good browsers. $('iframe').load(function() { // Set inline style to equal the body height of the iframed content. this.style.height = this.contentWindow.document.body.offsetHeight + 'px'; } ); } } );</pre> [/php]

3个所谓的“顶级”CSS技巧

我们在进行DivCSS布局的时候,非常关注CSS技巧的学习,今天向大家推荐3个所谓的“顶级”CSS技巧!虽然没有什么新意,但对新手而言却非常重要!

一、在一行内声明CSS

[css] <pre><code>h2 {font-size:18px; border:1px solid blue; color:#000; background-color:#FFF;} h2 { font-size:18px; border:1px solid blue; color:#000; background-color:#FFF; } </code></pre> [/css] 第二种看起来的确格式化,但是不会在阅读上有任何帮助。写在一行内可以让你更快的找到需要的部分。 以前我也是写成类似第二种方式,但是逐渐发现就像文章说的一样,没多大用。一行看起来又爽快又省地方还能让文件更小。

二、分块书写代码

这样书写代码可以让CSS更页面化,在出现问题时候可以最短时间内找到问题所在。就像下面这样: [css] <pre><code>#content {float:left;} #content p { … } #sidebar {float:left;} #sidebar p { … } #footer {clear:both;} #sidebar p { … } </code></pre> [/css]

三、浏览器兼容问题

只支持最新的浏览器。也就是说要放弃IE5和IE5.5。这样一来就能省下很多时间。对于IE6来说不用使用盒模型Hack。如果只针对流行浏览器的话,只需要很少的Hack就能实现同样的效果。 我注意了一下网易新版主页的CSS,其中竟然一个!important或者Hack都没有,可是在FF和IE里面显示效果都很好。在 52CSS.com的出版的书《变幻之美 DivCSS网页布局揭秘 - 案例实战篇》中,hack应用也非常非常少。合理的使用CSS可以避免Hack。当然,调试的时间会多一些。 包含浮动元素所有在容器内的内容都应该被设计为和容器保持一致。如果过大的话就会滑动到错误位置。使用负值margin调整到容器外同样会导致滑动。 理解Overflow如果页面中有两个浮动元素,在左容器内输出过多内容的话就会导致右侧容器跑到下面。这也就是说你的margin、宽度或者 padding设置混乱了,不过在FF里面体现不出来。使用overflow:hidden或者overflow:scroll可以避免IE允许内容冲出 容器。

Jquery 图片滚动 myScoll

插件参数: auto:[false,3000] 这里是个数组,第一个是否自动滚动,第二个是自动滚动间隔时间 visible:4 可显示图片的数量 speed:1000 动画时间,可选slow,fast,数值类 scroll:1 每次切换的个数,此数小于等于visible值 使用方法: 首先保证html结构如下: [php]</pre> <div id="product0"> <div> <ul> <li><dl><dt><a><img alt="" src="img.jpg" /></a></dt><dd><a>图片滚动插件</a></dd></dl></li> <li><dl><dt><a><img alt="" src="img.jpg" /></a></dt><dd><a>图片滚动插件</a></dd></dl></li> <li><dl><dt><a><img alt="" src="img.jpg" /></a></dt><dd><a>图片滚动插件</a></dd></dl></li> </ul> </div> </div> <pre> [/php] html结构中li里面的形式自己可以根据实际情况修改 css样式: [php] *{ margin:0; padding:0} /*-插件样式*/ .myScroll { width:100%; height:210px; overflow:hidden; zoom:1; } .myScroll p { width:22px; height:210px; background-image:url(icon.gif); background-repeat:no-repeat; cursor:pointer } .myPrevBtn { background-position:left center; float:left; display:inline } .myNextBtn { background-position:right center; float:right; display:inline } .myBlock { overflow:hidden; float:left; display:inline } .myBlock ul { width:100%; overflow:hidden; zoom:1; list-style:none } .myBlock ul li { width:200px; float:left; padding:10px 0; display:inline } .myBlock ul li:hover { background-color:#FFC } .myBlock dl { width:160px; margin:0 auto; list-style:none; } .myBlock dl dt { width:160px; height:160px; overflow:hidden; background-color:#FFF } .myBlock dl dt img { width:160px; } .myBlock dl dd { line-height:18px; list-style:none; text-align:center } .myBlock dl dd a { display:inline-block; padding:3px 0; width:100%; } .myClone { overflow:hidden; zoom:1 } .myClone ul { float:left; display:inline } [/php] 调用插件: [php] //手动滚动 $("#product0").myScroll({ visible:3, scroll:2, speed:1000 }); //自动滚动 $("#product").myScroll({ visible:4, scroll:3, auto:[true,2000], speed:1000 }); [/php] 插件源代码: [php] (function($) { $.fn.myScroll = function(options) { //默认配置 var defaults = { auto: [false, 3000], //是否自动滚动,第二个参数是自动滚动是切换的间隔时间 visible: 4, //可显示的数量 speed: 1000, //动画时间,可选slow,fast,数值类 scroll: 1 //每次切换的个数,此数小于等于visible值 }; var opts = $.extend( {}, defaults, options); opts.scroll = opts.scroll > opts.visible ? opts.visible : opts.scroll; this.each(function(i) { var prevBtn = $(this).find("p.myPrevBtn"), nextBtn = $(this).find("p.myNextBtn"), block = $(this).find("div.myBlock"), innerBlock = block.find("ul"), list = block.find('ul>li'), listNum = list.size(), listWidth = list.width(), blockWidth = listWidth * opts.visible, ntervalId; //设置宽度样式 $(this).width(blockWidth + prevBtn.width() + nextBtn.width()); block.width(blockWidth).find("ul").width(listWidth * listNum); //获取已滚动个数 function getSnum() { return (parseInt(innerBlock.css("margin-left")) * -1) / listWidth; } //获取滚动的距离 function getMove(c) { return c >= opts.scroll ? opts.scroll * listWidth : c * listWidth; } //单击向前按钮 prevBtn.click(function() { var snum = getSnum(), c = listNum - snum - opts.visible, m = getMove(c); if (listNum - snum > opts.visible) { innerBlock.animate( { "margin-left": "-=" + m }, opts.speed); } }); //单击向后按钮 nextBtn.click(function() { var snum = getSnum(), m = getMove(snum); if (snum > 0) { innerBlock.animate( { "margin-left": "+=" + m }, opts.speed); } }); //如果自动滚动 if (opts.auto[0]) { $(this).width(blockWidth); prevBtn.hide(); nextBtn.hide(); function auto() { var snum = getSnum(), m = getMove(listNum - snum - opts.visible); if (listNum - snum > opts.visible) { innerBlock.animate( { "margin-left": "-=" + m }, opts.speed); } else { innerBlock.css("margin-left", 0).find('li').slice(0, listNum - opts.visible).appendTo(innerBlock); } } //当鼠标经过滚动区域停止滚动 block.hover(function() { clearInterval(intervalId); }, function() { intervalId = setInterval(auto, opts.auto[1] + Math.abs(opts.speed - opts.auto[1]) + 100); }).trigger('mouseleave'); } }); }; })(jQuery); [/php] 转自http://www.muzilei.com/archives/185