我已经写出了一个非常基本的脚本,可以在加载时或在调整窗口大小时添加/删除类。
我只是想知道是否有更好的方法可以做到这一点,或者是否可以减少代码行。
基本上我希望能够在较小的屏幕上查看网站时更改样式。我认为最好在html标签的某个宽度下添加一个新类...
无论如何,这是我的代码。
<script type="text/javascript">
$(document).ready( function() {
/* Check width on page load*/
if ( $(window).width() < 514) {
$('html').addClass('mobile');
}
else {}
});
$(window).resize(function() {
/*If browser resized, check width again */
if ($(window).width() < 514) {
$('html').addClass('mobile');
}
else {$('html').removeClass('mobile');}
});
由于
阿娇
答案 0 :(得分:49)
嗯,我知道我迟到了,但我看到了$(document).ready()
这些并非真正必要的东西。
如果您一遍又一遍地调用它们,请尝试缓存您的选择器,la var $window = $(window);
这将有助于提高性能。我使用函数表达式封装到我不在全局范围内,但仍然可以访问我的$window
和$html
缓存的jQuery选定元素。
(function($) {
var $window = $(window),
$html = $('html');
$window.resize(function resize(){
if ($window.width() < 514) {
return $html.addClass('mobile');
}
$html.removeClass('mobile');
}).trigger('resize');
})(jQuery);
http://jsfiddle.net/userdude/rzdGJ/1
可能更清洁,更容易理解:
(function($) {
var $window = $(window),
$html = $('html');
function resize() {
if ($window.width() < 514) {
return $html.addClass('mobile');
}
$html.removeClass('mobile');
}
$window
.resize(resize)
.trigger('resize');
})(jQuery);
答案 1 :(得分:17)
使用媒体类
@media screen and (max-width: 900px) {
.class {
width:800px;
}
}
@media screen and (max-width: 500px) {
.class {
width:450px;
}
}
答案 2 :(得分:13)
首先,使用函数DRY(不要重复自己)代码:
function checkWidth(init)
{
/*If browser resized, check width again */
if ($(window).width() < 514) {
$('html').addClass('mobile');
}
else {
if (!init) {
$('html').removeClass('mobile');
}
}
}
$(document).ready(function() {
checkWidth(true);
$(window).resize(function() {
checkWidth(false);
});
});
答案 3 :(得分:4)
function resize() {
if ($(window).width() < 514) {
$('html').addClass('mobile');
}
else {$('html').removeClass('mobile');}
}
$(document).ready( function() {
$(window).resize(resize);
resize();
});
答案 4 :(得分:4)
您也可以使用此方法我认为非常清楚:
$(window).on('resize', function(){
var win = $(this);
if (win.width() < 514) {
$('html').addClass('mobile');
}
else
{
$('html').removeClass('mobile');
}
});
答案 5 :(得分:2)
这个问题实际上纠缠了我一段时间。我通常有多种尺寸的过渡。我写了一个我想分享的想法:
$(function() {
var pageTransitions = [['full',1600],['mobile',800],['tiny',400],['micro',0]]; // number shows minimum size - must be from high to low
function resize() {
var target = 0,
w = $(window).width(),
h = $('html');
$.each(pageTransitions, function(index, pageTransition) {
if( w > pageTransition[1]) {
target = index;
return false;
}
});
$.each(pageTransitions, function(index, pageTransition) {
h.removeClass(pageTransition[0]);
});
h.addClass(pageTransitions[target][0]);
}
resize();
jQuery(window).on('resize', function() {
resize();
});
});
答案 6 :(得分:0)
尝试一下。它对我有用
function resize() {
if ($(window).width() < 514) {}
else {}
}
$(document).ready( function() {
$(window).resize(resize);
resize();
});