jQuery的 - 通过从窗口大小减去像素计算元件宽度(jQuery - calculate ele

2019-10-18 21:45发布

我的目标是计算一个固定的定位元件的宽度(顶部:0;左:200像素)通过从窗口大小减200像素,使得它适合视口的其余部分。 所以我用下面的代码,但遗憾的是它不工作。 希望你们的有人能帮帮我!

$(function() {
    width = ($(window).width() - 100);
    $("div").css("width", width);
})​;

Answer 1:

你并不需要依靠jQuery的,其实。 有一个简单的CSS技巧来完成这件事,宣称right: 0这个元素上。 它迫使它伸展一路视口的右边界,自然。

div {
    position: fixed;
    top: 0;
    left: 200px;
    right: 0;
}

在这里看到小提琴: http://jsfiddle.net/teddyrised/2Fhue/

更新1:OP提供了自己的小提琴,所以这里是一个应用了修复: http://jsfiddle.net/teddyrised/w555h/2/ 。 我还采取自由以除去height: 100%并使用bottom: 0代替,如使用的位置坐标,以强制地拉伸元件的尺寸,其表现出同样的概念:)

更新2:OP请求一个基于jQuery的解决方案(我百思不得其解,为什么,但无论如何...),这里是它如何工作-我们执行发射一个匿名函数内的宽度计算时resize事件是在烧制$(window)对象。 第二.resize()事件被链接,以便它在触发DOM准备。

$(function() {
    $(window).resize(function() {
        var width = $(this).width() - 200;
        $("#content").css("width", width);
    }).resize();
});

http://jsfiddle.net/teddyrised/w555h/4/

评论:我一般尽量避免使用jQuery(或JS)的目的就是这样,当CSS可以很容易地使用。 这是因为通过计算从视口的宽度,你还必须听.resize()的窗口,这会使事情变得复杂的事件。



Answer 2:

我扩大了特里的jQuery的答案。 我通常不会代码这样的事情,但我继承了一个WordPress主题,其中#secondary侧边栏是动态变化的大小,但只有当#main容器> 768px。 不言而喻,#primary和#secondary是左浮动;-)

    $(window).resize(function(){

        var main = $("#main").width();
        var secondary;

        if (main > 768) {
            secondary = $("#secondary").outerWidth(true);
        } else 
            secondary = 0; // Ignore smaller dimensions where the sidebar is not visible.

        $("#primary").css("width", main - secondary - 1);

    }).resize();

    $(window).trigger('resize'); // When the page first loads


文章来源: jQuery - calculate element width through subtract pixel from window size