【问题标题】:jQuery resize CSS elementsjQuery 调整 CSS 元素的大小
【发布时间】:2013-02-23 01:55:53
【问题描述】:

我知道如何使用 CSS 解决我的问题。我需要设置从像素到百分比的每一个值,其中有 1000 个(有趣的时间!)。无论我是在事后还是在进行时这样做,总是很痛苦。我已经能够更快地设计避免它以支持像素,但现在希望一起避免它。

我假设使用 CSS 百分比(我的整个页面是固定的纵横比,所以实际上每个元素都需要转换为百分比)将是最轻量级的解决方案,但我希望可能存在一些可以调整元素大小的 jQuery 脚本?

有一次我想尝试访问浏览器缩放,但这似乎是不可能的。这是我对另一种方法的最后一次尝试。如果我不能让某些东西起作用......我将不得不把它吸干并将我所有的元素转换为百分比(真的应该有一个工具来为你做这件事!)。

感谢任何和所有帮助。谢谢!

edit* 这是一个描述网站简单结构的小提琴:http://jsfiddle.net/hkdeA/4/。我包含了一些代码来尝试扩展外部容器。如果所有内部容器都是 CSS 百分比,它会起作用,但我有 1000 个值要翻译,一个简单的脚本来调整所有元素的大小将节省大量时间、精力和精力。

  <div id="container">
    <div id="vid">

    </div>
    <div id="sidebar">

    </div>
    <div id="footer">

    </div>    
</div>

#container{
    background:grey;
    width:480px;
    height:270px;
    float:left;
}

#vid{
    background:black;
    width:320px;
    height:180px;
    float:left;
}

#sidebar{
    background:blue;
    width:160px;
    height:180px;
    float:right;
}

#foot{
    background:yellow;
    width:480px;
    height:90px;
    float:left;
}

最终目标:让我的网站应用调整为浏览器窗口的 100% 宽度或高度(取决于窗口的纵横比)。我知道可以使用 CSS 百分比和脚本来更改包含 div 的大小。但是,我想用脚本更改所有 div,以避免将我拥有的每个固定值转换为百分比的乏味。

【问题讨论】:

  • 你能发布一些代码来更清楚地表达你的问题吗?
  • 我已经添加了一些代码和一个快速的小提琴。想象一下我已经布置的结构,但是我已经向您展示了这几个容器中的整个 Web 应用程序。我需要调整每个元素的大小。就像他们都是百分比一样,我改变了外部容器的大小。
  • 所以更准确地说,您希望您的 1000 个容器以“流动”的方式运行?
  • 是的,我刚刚再次编辑以给出一个“最终目标”,它说明了你提到的内容。不过要澄清一下:每个页面都没有数千个容器。更重要的是,每个页面仍然有大量元素(容器、输入、字体等),每个元素都有宽度、高度、填充、位置等。总之,这是需要执行的 1000 次计算(最终,为了保持它的可维护性,每个计算都记录/注释并带有固定值)。如果归根结底,我会这样做,但我真的想找到一个解决方案来避免这种情况。

标签: jquery css resize scale


【解决方案1】:

试试这样的:

var list = [];
var containerW = $("#container").width();
var containerH = $("#container").height();
$("#container").find("*").each(function(){
  var obj = {};
  obj.w = $(this).width() * 100 / containerW;
  obj.h = $(this).height() * 100 / containerH;
  obj.el = $(this);
  list.push(obj);
});


for (var i in list) {
  var obj = list[i];
  obj.el.width(obj.w+'%');
  obj.el.height(obj.h+'%');
}


$("#container").width('100%');
// if you want height also to be 100%
$("#container").height('100%');

你可以在这里测试它:http://jsbin.com/izubed/1/edit

【讨论】:

  • 这似乎正是我想要的。因此,您告诉它使用 '*' 查找所有内容,然后通过容器的宽度和高度来操作所有内容。然后操纵这个外部容器以跟随浏览器窗口。棒极了。我想当我实现这个时我会发现......但这会比使用 CSS 百分比慢吗?我知道脚本在 CSS 之后运行,所以在这种情况下,我想它会更慢......但是这种方法不受欢迎?
  • 不幸的是,它没有成功。它打破了一切。很难说为什么。此外,在更多地使用您的示例之后,这并不能保持纵横比(我希望高度与宽度保持成比例) - 虽然我主要是希望缩放所有子元素,您的示例似乎可以这样做......但与我的其余代码一起使用时不起作用。该死。 :(
  • 很明显,在这样一个简单的例子中,它会起作用。如果您有更多元素,可能其中一些元素首先不喜欢百分比宽度/高度!可能需要进行一些调整。结论是,对于像这样的小型实验,采用这种方法是可以的,但在生产环境中,您应该遵循正确的路径。
【解决方案2】:

你在寻找这样的东西吗?

$('div').each(function(i,v){
  if($(v).width() > 0){
    $(v).width('auto');
  }
});

【讨论】:

  • 这似乎比其他回复简单,但我不明白它是如何工作的?你能解释一下吗?
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多