【问题标题】:jQuery document width with math带有数学的jQuery文档宽度
【发布时间】:2012-02-23 09:20:03
【问题描述】:

我还在学习 jQuery。它进展得很慢,但是,至少我在学习。今天我需要有关页面宽度功能的帮助。我需要一个 jQuery 脚本来获取页面宽度,进行大量数学运算,然后将变量设置为宽度。这个脚本对我很有帮助,因为我经常使用它,而且我总是卡住。这就是我想要它做的事情:

  1. 获取页面宽度。
  2. 从页面宽度中减去 30。
  3. 将(页面宽度 - 30)除以 6。
  4. 从 ((page-width - 30)/6) 中减去 180。
  5. 将 .normal 类的宽度设置为 (((page-width - 30)/6)-180) 的宽度。
  6. 最后,我需要将 .wide 的类设置为 2(((page-width -30)/6)-180)。

基本上,这应该创建 4 个具有 .normal 类的偶数列条目,但有一个 .wide 类的列是正常条目大小的两倍。

如果有人能帮我解决这个问题,那就太棒了。我完全不知道从哪里开始。

编辑:我希望这个看起来像的一个例子是HERE,除了应该是全屏的,除了每边有 15 个像素的边距,并根据屏幕分辨率更改帖子和元素的宽度。

【问题讨论】:

  • 你要做什么?你只想拥有这些定位吗?那么你应该为此使用css。你想让这些盒子填满你的空白吗?然后你应该看看砖石。有关在 jQuery 中使用宽度的更多信息,请查看 api.jquery.com/?ns0=1&s=width&go=
  • 那个页面有砖石。我不能使用CSS?无论页面宽度是多少,我都需要用 4 列 + 1 个更大的列填充页面,这就是为什么我需要使用 jQuery 来做所有这些数学运算。

标签: javascript jquery math width


【解决方案1】:

我将把 CSS 内容(将 .normal-elements 与 .wide-element 对齐)留给您(应该使用 float:right 或绝对定位轻松完成)并简单地显示 jQuery 代码:

// you don't need the '$' in your variable - I just think this is more readable
$width = ($(document).width() - 30)/6 - 180;
$('.normal').width($width);
$('.wide').width(2*$width);

请注意,这不会设置“normal”/“wide”类的宽度(就像您在 css 样式表中所做的那样),而是设置具有“normal”或“类”的每个 dom 元素的宽度宽'。

【讨论】:

  • 什么没用?您需要什么确切? CSS来对齐的东西?更改宽度的 jQuery 代码(我的 sn-p 做了什么 - 至少在我的 firefox 中)?还有什么?编辑:有人删除了我之前的“没用”评论...
  • 我需要 jQuery 从文档宽度中减去 30,然后将该宽度除以 5,然后从该宽度中减去 180。然后我需要 JQuery 将标记为 .normal 的#entry 的宽度设置为 (((doc-30)/5)-180),并使用 jQuery 将标记为 .wide 的#entry 的宽度设置为相同的东西,但是两倍大,所以 2*。
  • 那么(除了除以 6 而不是 5)我发布的代码有什么区别?也许.width().css() 的文档可能是你的朋友...
【解决方案2】:

可以为您执行此操作的 CSS3 计算功能:

.normal {
    display: block;
    width: calc(((100% - 30px) / 6) - 180px);
}

这是纯 CSS 规范,有供应商扩展:-moz-calc-webkit-calc 等。

【讨论】:

  • 我不知道那个。不幸的是,还有not much browser support
  • 它甚至无法在 Firefox 中正常工作。我真的需要这个脚本才能工作。 D:
  • Firefox 需要 -moz-calc 供应商扩展...所以它是:.normal { width: -moz-calc(...); }
  • 这很酷。不能等到 CSS3 成为标准。要是那个讨厌的 IE 消失就好了。
【解决方案3】:

您需要 4 列具有 .normal 类的偶数列,但是具有 .wide 类的一列是正常条目大小的两倍,这意味着有 5 列,4 列具有相同的宽度,第 5 列是正常条目的两倍单个列的宽度。我想这就是你需要的。

var oneColumnWidth = ($(document).width()/6);

$('.normal').width(oneColumnWidth);
$('.wide').width(oneColumnWidth * 2);

【讨论】:

  • 你是唯一真正了解我需要什么的人,哈哈。你有我可以加你的skype吗?它不起作用,但你看起来很聪明,所以我想更详细地解释一下。
  • 很难解释。你也有Skype吗?如果没有,我们可以在这里聊天。
  • 我不知道怎么...我是这个网站的新手。 :c
  • 我没有足够的声望来聊天。 ://
猜你喜欢
  • 1970-01-01
  • 2018-02-11
  • 2012-12-06
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2011-09-29
  • 2016-07-15
相关资源
最近更新 更多