因此,基本上我开始根据客户的要求使用媒体查询响应式地编写网站,但令人惊讶的是,我的客户告诉我该网站必须在 IE7 中响应?!?!?!所以我开发了一个 jQuery 插件,它允许您插入断点,然后将一个类或 id 附加到表示正在使用的设备的主体上。这是插件代码:
( function ( $ ) {
$.fn.windowDimensions = function( options ) {
var config = $.extend({
attr : 'id',
largeDesktop : 1600,
smallDesktop : 1024,
tablet : 768,
largePhone : 640,
smallPhone : 480,
smallPhoneName : 'smallPhone',
largePhoneName : 'largePhone',
tabletName : 'tablet',
smallDesktopName : 'smallDesktop',
largeDesktopName : 'largeDesktop'
}, options );
var w = 0, className = '';
$( this ).on('resize ready', function() {
w = $( this ).width();
if( w <= config.smallPhone ) {
className = config.smallPhoneName;
} else if( w <= config.largePhone && w > config.smallPhone ) {
className = config.largePhoneName;
} else if( w <= config.tablet && w > config.largePhone ) {
className = config.tabletName;
} else if( w <= config.smallDesktop && w > config.tablet ) {
className = config.smallDesktopName;
} else {
className = config.largeDesktopName;
}
$('body').attr( config.attr, className );
});
};
}) ( jQuery );
因此,本质上,如果您保留默认值并仅实例化插件,它将应用id="tablet"
到 ipad 上的 body 标签。从那里我使用 css 来设置看起来像这样的元素的样式:
.wrap { ... }
#tablet .wrap { ... }
#largPhone .wrap { ... }
#smallPhone .wrap { ... }
我知道这可能不是最好的,也不是传统的做事方式,但我不知道还有其他更好的方式。有没有更好的方法来解决这个问题或更优化的解决方案?