`
ice-cream
  • 浏览: 321337 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

页面输出时一些常用的小技巧(一)

    博客分类:
  • Css
阅读更多

页面输出时一些常用的小技巧(二)

 

1. 菜单一 | 菜单二 | 菜单三(demo1.zip )

 

代码结构:

<ul><li>菜单一</li><li>菜单二</li><li>菜单三</li></ul>

 通常我们会li加css

border-right:1px solid #000

 这样最后一个li也有右边框,是多余的,只能为最后一个li添加一个class来区分(左边框的情况类似)

 

 而demo1中我们为li加css

ul{overflow:hidden;}
ul li{float:left;list-style-type:none;border-left:1px solid #000;padding:0 20px;margin-left:-1px;}

ul的overflow:hidden和li的margin-left:-1px是为了让最左边li的左边框隐藏起来,这样每个li都可以用一样的样式,便于给li循环

 

2 .压缩图片 demo2.zip

通常web页面中从后台传的图片和设计师设计的图片大小不一样,这个时候需要按照原图长宽的比例进行压缩,不能超过设计师设定的图片大小。

initial是原始图片大小;goal是压缩后的图片大小;max是最大值

当原始图片长宽有任意一个大于对应的最大值或者两个都小于最大值时对图片大小进行压缩

其它情况不压缩

 

function imgSize(element,maxWidth,maxHeight){
    $(element).each(function() {
        var initialWidth = $(this).attr("width");
        var initialHeight = $(this).attr("height");
        var goalWidth = initialWidth;
        var goalHeight = initialHeight;
        if (initialWidth > maxWidth || initialHeight > maxHeight) {
            if (initialWidth / maxWidth >= initialHeight / maxHeight) {
                var goalWidth = maxWidth;
                var goalHeight = (initialHeight * maxWidth) / initialWidth;
            }
            else {
                var goalWidth = (initialWidth * maxHeight) / initialHeight;
                var goalHeight = maxHeight;
            }
        }
        else if (initialWidth < maxWidth && initialHeight < maxHeight) {
            if (initialWidth / maxWidth >= initialHeight / maxHeight) {
                var goalWidth = maxWidth;
                var goalHeight = (initialHeight * maxWidth) / initialWidth;

            }
            else {
                var goalWidth = (initialWidth * maxHeight) / initialHeight;
                var goalHeight = maxHeight;
            }
        }
        $(this).attr("width", goalWidth);
        $(this).attr("height", goalHeight);
    });
}

附件demo2.zip 是一个类似原理的插件:jquery.LoadImage.demo 

 

3 .布局

(图一) (图二) (图三)

要实现如图的这种布局,可以用三个并列关系的div加上样式就可以实现

代码结构:

<div id="first"></div>  
<div id="second"></div>  
<div id="third"></div>

这种代码结构非常灵活,可以仅仅通过样式达到多种布局效果

 

图一(demo3.1.zip)的css:

<style type="text/css">
	body{margin:10px;padding:0;}
	div{background:#ccc;}   
	#first{float:left;width:100px; height:150px}   
	#second{clear:left;float:left;margin-top:10px;width:100px;height:150px}  
	#third{margin-left:110px;_margin-left:107px; height:310px}
</style>
/*_margin-left:107px;为了ie6多出的3像素而写的hack*/ 

图二(demo3.2.zip)的css

<style type="text/css">
	body{margin:10px;padding:0;}
	div{background:#ccc;}   
	#first{float:left;width:100px; height:300px}   
	#second{float:right;width:100px;height:300px}  
	#third{margin:0 110px;_margin:0 107px; height:300px}
</style>
/*_margin:0 107px; 为了ie6多出的3像素而写的hack*/ 

图三(demo3.3.zip)的css和js,鼠标hover时当前模块放大比例

<style type="text/css">
	body{margin:0;padding:0;}
	div{background:#ccc;position:absolute;}
	#first{width:100px; height:150px;top:10px;left:10px;}   
	#second{width:100px;height:150px;top:170px;left:10px;}  
	#third{height:310px;top:10px;left:120px;width:200px;} 
</style>
<script type="text/javascript" language="text/javascript">
	function zoom(id,x,y){ // 设置缩放函数参数:容器id、横向缩放倍数、纵向缩放倍数(等比例缩放时也可以设定一个参数)   
		var obj=document.getElementById(id); // 获取元素对象值 
		var dW=obj.clientWidth; // 获取元素宽度   
		var dH=obj.clientHeight; // 获取元素高度   	 
		obj.onmouseover=function(){ // 鼠标移入   
			this.style.width=dW*x+"px"; // 横向缩放   
			this.style.height=dH*y+"px"; // 纵向缩放   
			this.style.backgroundColor="#f00"; // 设置调试背景   
			this.style.zIndex=1; // 设置z轴优先   
		}   
		obj.onmouseout=function(){ // 鼠标移出,设回默认值   
			this.style.width="";   
			this.style.height="";   
			this.style.padding="";   
			this.style.backgroundColor="";   
			this.style.zIndex="";   
		}   
	}
zoom("first",1.25,1.25);
zoom("second",1.25,1.25);
zoom("third",1.25,1.25);
</script>

 

4 .获取浏览器可见区域的宽高,通用方法:

//以下的方法对于很多浏览器都适用
function windowHeight() {
    var windowHeight;//最后传出的值
    if (self.innerHeight) { // 除了IE以外的浏览器
        windowHeight = self.innerHeight;
    } 
	else if (document.documentElement && document.documentElement.clientHeight) { /* IE6 浏览器 */
        windowHeight = document.documentElement.clientHeight;
    } 
	else if (document.body) { //其他版本的IE浏览器
        windowHeight = document.body.clientHeight;
    }
    return windowHeight;
}

function windowWidth() {
    var windowWidth;//最后传出的值
    if (self.innerWidth) { // 除了IE以外的浏览器
        windowWidth = self.innerWidth;
    } 
	else if (document.documentElement && document.documentElement.clientWidth) { /* IE6 浏览器 */
        windowWidth = document.documentElement.clientWidth;
    } 
	else if (document.body) { // 其他版本的IE浏览器
        windowWidth = document.body.clientWidth;
    }
    return windowWidth;
}

 

5 .淘宝的简易框架(demo5.zip)

偶然的机会看到了淘宝的这个框架,写得很不错,玉伯的css也非常工整

圆角的切图也挺有意思的,值得我去学习效仿。

 

6 .滚动消息(demo6.zip)

上下往返滚动的消息一般常出现在公告栏或者新闻栏,以前比较喜欢用Marquee标签来实现,不过Marquee实现的滚动会有头尾不能连接起来而导致消息栏出现短暂的空白的缺陷,而且w3c也不支持Marquee标签。所以用js来实现更完美一些。

function scroll(element, delay, speed, lineHeight) {
	var numpergroup = 5;
	var slideBox = (typeof element == 'string')?document.getElementById(element):element;
	var delay = delay||1000;
	var speed=speed||20;
	var lineHeight = lineHeight||20;
	var tid = null, pause = false;
	var liLength = slideBox.getElementsByTagName('li').length;
	var lack = numpergroup-liLength%numpergroup;
	for(i=0;i<lack;i++){
	slideBox.appendChild(document.createElement("li"));
	}
	var start = function() {
		 tid=setInterval(slide, speed);
	}
	var slide = function() {
		 if (pause) return;
		 slideBox.scrollTop += 2;
		 if ( slideBox.scrollTop % lineHeight == 0 ) {
				clearInterval(tid);
				for(i=0;i<numpergroup;i++){
					slideBox.appendChild(slideBox.getElementsByTagName('li')[0]);
				}
				slideBox.scrollTop = 0;
				setTimeout(start, delay);
		 }
	}
	slideBox.onmouseover=function(){pause=true;}
	slideBox.onmouseout=function(){pause=false;}
	setTimeout(start, delay);
}
四个参数分别是:操作对象, 停留时间,相对速度(越小越快),每次滚动多少(最好和Li的Line-height一致)。

 

7. 闪动的消息

<head>
<title>闪动的消息</title>
<script type="text/javascript">
var styleChangeTimes=0;
function changeStyle(id){
  obj=document.getElementById(id);
  styleChangeTimes = styleChangeTimes+1;
  if((styleChangeTimes%2)==0){obj.style.display="none";}
  else{obj.style.display="";}
  window.setTimeout("changeStyle('"+id+"')",200);
}
</script>
</head>
<body onload="changeStyle('text')">
<span id="text">您有新的短消息</span>
</body>
 

 

  • 大小: 7.4 KB
  • 大小: 8.7 KB
  • 大小: 8.6 KB
  • 大小: 167.5 KB
  • 大小: 18.9 KB
分享到:
评论
30 楼 lucky16 2009-10-16  
这些资源都还挺好的的,呵呵,学习了~
29 楼 kyvin 2009-08-03  
向楼主学习了
28 楼 xuey210 2009-05-13  
布局的图3里面的JS
 
var obj=document.getElementById(id); // 获取元素对象值    
var dW=obj.clientWidth; // 获取元素宽度    


第二行报一个缺少对象

clientWidth 不认识 
27 楼 jianzong2000 2009-05-10  
不错。。很可能用上
26 楼 阳光暖暖 2009-04-29  
压缩图片和滚动消息者两个正好在使用,很有用的参考资料!谢谢分享!
25 楼 zqgogogo 2009-04-28  
不错不错,很实用的文章!
24 楼 jspine 2009-04-24  
CSS一直都不是我的强项。。。不过还是在坚持着看看。。。
23 楼 zhou2324 2009-04-24  
mark!
22 楼 energykey 2009-04-23  
谢谢。感谢楼主无私奉献。
21 楼 ThinkingInAll 2009-04-22  
做成插件那更好
20 楼 cn-done 2009-04-20  
貌似demo3 layout没问题 但是JS效果没有出来
19 楼 cn-done 2009-04-20  
function imgSize(element,maxWidth,maxHeight){
    $(element).each(function() {
        var initialWidth = $(this).attr("width");
        var initialHeight = $(this).attr("height");
        var goalWidth = initialWidth;
        var goalHeight = initialHeight;
        if (initialWidth > maxWidth || initialHeight > maxHeight) {
            if (initialWidth / maxWidth >= initialHeight / maxHeight) {
                var goalWidth = maxWidth;
                var goalHeight = (initialHeight * maxWidth) / initialWidth;
            }
            else {
                var goalWidth = (initialWidth * maxHeight) / initialHeight;
                var goalHeight = maxHeight;
            }
        }
        else if (initialWidth < maxWidth && initialHeight < maxHeight) {
            if (initialWidth / maxWidth >= initialHeight / maxHeight) {
                var goalWidth = maxWidth;
                var goalHeight = (initialHeight * maxWidth) / initialWidth;

            }
            else {
                var goalWidth = (initialWidth * maxHeight) / initialHeight;
                var goalHeight = maxHeight;
            }
        }
        $(this).attr("width", goalWidth);
        $(this).attr("height", goalHeight);
    });
}

这个貌似可以修改为
function imgSize(element,maxWidth,maxHeight){
    $(element).each(function() {
        var initialWidth = $(this).attr("width");
        var initialHeight = $(this).attr("height");
        var goalWidth = initialWidth;
        var goalHeight = initialHeight;
        
        if (initialWidth / maxWidth >= initialHeight / maxHeight) {
                var goalWidth = maxWidth;
                var goalHeight = (initialHeight * maxWidth) / initialWidth;

          }
         else {
                var goalWidth = (initialWidth * maxHeight) / initialHeight;
                var goalHeight = maxHeight;
         }
        $(this).attr("width", goalWidth);
        $(this).attr("height", goalHeight);
    });
}

18 楼 javy_liu 2009-04-19  
好文章,学到不少东西,特别是系统地定义css方面,有很多可以借鉴。
17 楼 1314520ln 2009-04-17  
把一些常用的都写上了,辛苦了~
16 楼 dengquangang 2009-04-15  
从这里学了些东西,Thanks楼主提供了这些资源.
15 楼 andy54321 2009-04-14  
做了也算不少些的项目,
div、css用的还是不得心应手。。。。
14 楼 司徒正美 2009-04-14  
Marquee是内置函数,直接调用编译好的二进制代码,执行效率当然高!
13 楼 notadoor 2009-04-13  
楼主很厉害啊,学习了!
12 楼 土匪一份子 2009-04-13  
楼主MM的每一次发布我都有收藏。。。   不错   期待继续更新
11 楼 wanglidhx 2009-04-13  
非常期待。。。。。

相关推荐

    jsp 页面上图片分行输出小技巧.docx

    jsp 页面上图片分行输出小技巧.docx

    JSP实用技巧集合,jsp编程的一些小技巧总结

    jsp编程的一些小技巧总结,绝对实用。包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录...

    jsp 页面上图片分行输出小技巧

    有时候需要图片分行显示,下面是比较不错的代码。

    jsp页面生成word或excel

    小技巧: 12 2 在客户端输出存在数据库中的word实体 12 四、 控制Word,Excel在浏览器中打开,还是下载 15 五、 用JSP输出Word文档,如何去掉“文件下载”提示? 15 问题文件源代码: 15 回答: 16 六、 怎么把JSP页面...

    ASP.NET的网页代码模型及生命周期

    但是与.cs页面编译过程不同的是,当浏览者第一次浏览到.aspx页面时,ASP.NET自动生成该页的.NET类文件,并将其编译成另一个.DLL文件。 当浏览者再一次浏览该页面的时候,生成的.DLL就会在服务器上运行,并响应用户在...

    C#编程经验技巧宝典

    85 &lt;br&gt;0130 复制字符串中指定的字符 85 &lt;br&gt;0131 巧截字符串的数字 86 &lt;br&gt;0132 如何存储变长字符串 86 &lt;br&gt;0133 在进行字符串比较时忽略大小写 87 &lt;br&gt;0134 如何去除字符串尾空格 87 ...

    delphi开发的基本流程.doc

    此外,还可以参考一些Delphi的技巧和小窍门,如判断字符串是否包含于另一个字符串、使窗口全屏显示、数字格式化输出等,这些都可以提高编程效率和程序的实用性。 对于想要深入学习Delphi的开发者,还可以参考一些...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: echo "Hello World!"; ?&gt; First PHP page // Single line C++ style comment /* printing the message */ ...

    AutoPlay_Menu_Builder6.0.1328注册版

    如果需要在菜单运行前安装一些字体,程序还将创建一个名为 FontData 的目录来存放字体文件。请自行尝试一下,您会发现本软件的功能还有许多。  工作选项点击菜单查看-&gt;选项,可以设置程序的工作选项。  显示网格在...

    AutoPlay_Menu_Builder5.5.0.1328注册版

    如果需要在菜单运行前安装一些字体,程序还将创建一个名为 FontData 的目录来存放字体文件。请自行尝试一下,您会发现本软件的功能还有许多。  工作选项点击菜单查看-&gt;选项,可以设置程序的工作选项。  显示网格在...

    TCPIP高效编程:改善网络程序的44个技巧 PDF中文版带书签-目录

    3.10 技巧24:可能的话,使用一个大规模的写操作,而不是多个小规模的写操作 155 3.10.1 禁用Nagle算法 158 3.10.2 将写操作合并起来 159 3.10.3 小结 161 3.11 技巧25:理解如何使connect调用超时 162 3.11.1 ...

    Linux_unix_shell第一部分编程(共两部分)

    1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 ...

    操作系统安全:lynic系统安全审计报告分析.docx

    小技巧 如果lynis 不是通过带有man 页面的包进行安装的话,可以输入 # man ?lynis 对于那些SHELL终端背景是浅色的某些系统,可以使用 # lynis --nocolors 后者 # lynis --reverse-colors 可以使用-h 选项去显示所有...

    IBM WebSphere Portal门户开发笔记01

    11、WCM API JSP组件输出一条完整的内容全部代码 219 12 、导入JS组件 220 13 、WCM远程操作URL 221 14 、创建定制启动页 224 15、API获取用户所在的组信息 225 十五、JAVA 225 1、链接各种数据库驱动 225 2、FUTURE...

    linux与unix shell编程指南.rar

    linux/unix shell编程指南,全面介绍了Linu/unix shell编程的常用知识和技巧,是不可多得的编程宝典。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    shell编程和unix命令

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

    Linux shell编程指南

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...

Global site tag (gtag.js) - Google Analytics