html - 如何使用 CSS 创建响应式水平布局?

标签 html css horizontal-scrolling

我在一家创意设计工作室工作,他们喜欢打破范式和惯例来创建独特的网站布局,最近我们开始开发横向网站布局。虽然水平网站布局看起来“很酷”,但我还没有想出如何使它们像开箱即用的基于垂直网格的网站一样流畅和响应迅速。

通常对于带有容器的垂直网站,您会在容器元素上设置一个基于百分比的宽度,然后设置一个最大宽度。使用响应式布局,您的内容会无限滚动离开页面,它的宽度可能会发生变化,尤其是当内容是唯一的时,因此公式 target/context * 100 并不真正起作用(或者是吗?)。

是否有一种方法可以在元素上设置响应式高度、填充和边距,使其像基于网格的响应式网站一样工作。我不介意必须使用 Javascript,但 CSS 修复会更理想。

我尝试创建的布局类型示例供您引用:

enter image description here

最佳答案

您可以通过计算页面容器 div 的子元素 .outerWidth 并将它们全部相加并将其附加到页面或 div 的 .css('width')

HTML 结构:

<div id="main">
    <div><img src="#" /></div>
    <div><img src="#" /></div>
    <div><img src="#" /></div>
</div>

编辑:我忘了添加 css,但这里的要点是您希望 #main 的子 div 向左浮动。

Javascript:

function() {
        var window_width = jQuery(window).width(),
            container = jQuery('#main'),
            page_width = 0;

        // Grab every child element of the "main" container
        container.children().each(function(index){
            var incl_margin = true,
                $this = jQuery(this);

            // Check if each child element has a margin-left or margin-right
            if ( parseInt($this.css('margin-left')) < 0 || parseInt($this.css('margin-right')) < 0 ) {
                var incl_margin = false;
            }

            // Get element's width including margins (if they exist from above)
            var width = $this.outerWidth(incl_margin);
            page_width += width;

        });

        // Add total width of containers elements as the containers width
        if(page_width > 0)
            container.css({'width' : page_width + 'px'});
    }
}

关于html - 如何使用 CSS 创建响应式水平布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11443304/

相关文章:

javascript - 将代码应用于文本行而不是容器 div

jquery - 水平网页显示的最佳方法?

java - 如何将内容包装在 JList 中?

android - 起点和终点的画廊空间

javascript - 在 DOM 加载后更改 PHP 变量,更改会反射(reflect)出来吗?

html - CSS 3 border-image 究竟是如何工作的?

html - 使用CSS旋转从左到右依次显示信息

Python Selenium 循环

javascript - 垂直滚动但删除滚动条

jquery - 图像在鼠标悬停和鼠标离开时不稳定