我想要得到的是一个这样的布局,但是在它的一边,所以文章根据需要变宽,页面水平滚动:
我最初的尝试使用flexBox:
Here is my first attempt on jsFiddle.
相关CSS:
body { display: flex; position: absolute; height: 100%; } header { background: green; width: 400px; flex: none; } article { background: #CCC; -webkit-columns: 235px auto; columns: 235px auto; -webkit-column-gap: 0; column-gap: 0; } footer { background: yellow; width: 450px; flex: none; }
但是,我正在尝试其他的事情,比如in this fiddle,这是一个更接近的地方.这个尝试的问题是文章宽度被限制在视口宽度的100%,即使文本流向右边! (我的文章使用对我的布局绝对重要的CSS列.)
我的要求是:
>标题,文章,页脚要高100%(完成)
>标题为400px宽(完成)和左边的内容(完成)
>页脚宽度为450像素(完成)和文章右侧(如何?)
>文章要广泛,不需要重叠的页脚(怎么样?)
所以,我需要帮助大胆的目标.我可以做什么来保持文章与页脚重叠?是否有其他方法来布局这个页面,以使文章宽度随内容的扩展?
>应该在Chrome,Firefox和Safari中工作(IE和Opera一个加号,但不是必需的)
>最好没有JavaScript(或CSS功能可能会从规范中删除)
>简单,干净的CSS是理想的
解决方法
http://jsfiddle.net/jmhh56g2/2/
所有浏览器都有一个列布局错误,以及如何使用列计算元素的宽度.不幸的是,需要一小部分的JS来设置宽度.我知道这个要求说“最好不要javascript”,但是这是相当小的,它适用于支持CSS列的所有浏览器.
快速概述:
>将整个内容放置在绝对定位的div(< holder>)中,其高度为100%.这将内容从主体流中拉出,并防止身体和视口宽度做疯狂的事情.>设置白色空间:nowrap on< holder>对所有其他元素都是正常的.这将强制标题,文章和页脚水平对齐,同时允许其中的文本正常流动.>将所有元素设置为position:relative(offsetWidth需要)>在float:right的文章上创建一个小标记元素.这用于计算正确的宽度.>一小部分js来观看窗口调整大小事件并重新计算文章的正确宽度.