mackxu
子曰:学而时习之,不亦说乎?

负责任的jQuery开发者应该在编写自己的程序时,始终坚持渐进增强平稳退化的理念,做到在JavaScript禁用时,页面仍能够与启用JavaScript时一样准确的呈现,即使没有那么美观。

渐进增强,指的是给所有用户同等的基本使用体验,再根据用户终端的级别给予更高级的用户更为高效轻松的用户体验。

平稳退化,是指给所有用户同等的一个基准,但方向却与渐进增强相反,此方法是剥夺低级用户的一些体验。

设置页面

<div id="featured-books">
    <div class="covers">
        <a href="javascript:void(0);" title="aaaaaa">
            <img src="images/1.jpg" alt="bbbbbb" />
        </a>
        <a href="javascript:void(0);" title="aaaaaa">
            <img src="images/2.jpg" alt="bbbbbb" />
        </a>
        <a href="javascript:void(0);" title="aaaaaa">
            <img src="images/3.jpg" alt="bbbbbb" />
        </a>
        ……
    </div>
</div>

为节省首页的空间,我们希望每次只显示其中3个封面。在没有JavaScript的情况下,可以通过将容器元素的overflow属性设置为scroll,并适当地调整容器的宽度来实现这一点:

img {
    border: none;
}
#featured-books {
    position: relative;
    background-color: #ddd;
    width: 544px;
    height: 142px;
    overflow: scroll;
    margin: 1em auto;
    z-index: 2;
}
#featured-books .covers {
    position: relative;
    width: 1056px;
    z-index: 1;
}
/*浮动能让a成为块盒子*/
#featured-books a {
    float: left;            
    padding: 10px 8px;
    height: 106px;
    outline: none;
}

最外层的元素需要具有比它内部元素更大的z-index属性,以保证在IE中能够隐藏内部元素延伸到容器外部的部分。其次把外部元素的宽度设置为544px,恰好可以容纳3幅图像(160px)、每幅图像8px的外边距以及20px的垂直滚动条。

通过JavaScript修改样式

现在已经完成了在没有JavaScript下可以使用的图像浏览器。接下来,通过JS增强它的用户体验。主要做一下修改:在实现滚动机制时滚动条是多余的;应用float属性的自动图片布局,这个浮动布局会妨碍我们在为图片添加动画效果时使用定位。

// 通过JS修改样式,用于渐进增强
var spacing = 176;

$('#featured-books').css({
    'width': spacing * 3,
    'height': 126,
    'overflow': 'hidden'
}).find('.covers a').css({
    'float': 'none',
    'position': 'absolute',
    'left': 1000
});

var $covers = $('#featured-books .covers a');
$covers
    .first().css('left', 0)
    .next().css('left', spacing)
    .next().css('left', spacing * 2);

由于不在需要为滚动条留出空间,所以把包含元素的宽度设置为恰好容纳3幅图片。

通过把overflow属性修改为hidden,可以消除水平滚动条。

把所有的图像使用绝对定位,并让它们的left坐标为1000px,这样就可以把它们放在不可见区域之外。然后可以根据需要呈现其中3张图片

posted on 2013-06-29 09:58  mackxu  阅读(484)  评论(0编辑  收藏  举报