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

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

 

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

 

代码结构:

  • 菜单一
  • 菜单二
  • 菜单三

 通常我们会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加上样式就可以实现

代码结构:

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

 

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


/*_margin-left:107px;为了ie6多出的3像素而写的hack*/ 

图二(demo3.2.zip)的css


/*_margin:0 107px; 为了ie6多出的3像素而写的hack*/ 

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


 

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 
  

 

7. 闪动的消息


闪动的消息



您有新的短消息
 

 

你可能感兴趣的:(css)