不可能的布局?

2024-03-10

我开始认为这是不可能的,但我想我会问你们。

基本上它是一个 2 列布局,但“业务”需要以下内容:

- 始终占据整个浏览器窗口

- 适应浏览器窗口大小的调整

- 左栏的宽度是固定的,但该宽度在不同页面上应该是灵活的。

-左列顶部有一个固定高度的区域。

-左栏有一个底部区域。它应该占据浏览器窗口的剩余垂直空间。如果内容非常大,它将有一个专门针对该区域的滚动条。

-右栏应占据浏览器窗口的剩余水平空间。

-右栏顶部有一个固定高度的区域。

-右栏有一个底部区域。它应该占据浏览器窗口的剩余垂直空间。如果内容非常大,它将有一个专门针对该区域的滚动条。

我已经尝试了一切......div,浮动,绝对定位,表格,表格中的div......

这可能吗?

这是它应该是什么样子的图像:http://imgur.com/zk1jP.png https://imgur.com/zk1jP.png


这并非不可能,而且您不应该需要 javascript。如果您关心 IE6 浏览器,您确实需要一些特定的技巧。

布局的关键是您可以设置一个or more绝对定位元素上的边缘位置。这是一篇关于该技术的好文章:http://www.alistapart.com/articles/conflictingabsolutepositions/ http://www.alistapart.com/articles/conflictingabsolutepositions/

这是一个演示:http://www.spookandpuff.com/examples/2col2section.html http://www.spookandpuff.com/examples/2col2section.html

和来源:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title>2 col, 2 section layout.</title>

    <style type="text/css" media="screen">
     #leftColumn {
       position:absolute;
       top:10px;
       bottom:10px;
       left:10px;
       width:400px;
     }

     #rightColumn {
       position:absolute;
       top:10px;
       bottom:10px;
       right:10px;
       left:410px;/* This must equal the total width of the #leftColumn, incl padding, border, margin, etc. */
     }

   .topSection{
     position:absolute;
     top:10px;
     height:120px;
     left:10px;
     right:10px;
     padding:10px;
   }

  .bottomSection{
     position:absolute;
     bottom:10px;
     top:160px; /* This must equal the total height of the .topSection, incl padding, border, margin, etc. */
     left:10px;
     right:10px;
     padding:10px;
     overflow-y:auto;
   }

     /* Debug styles */
     body {background-color:#CCC;}
     div {border:1px solid #FFF;}

     #leftColumn {background-color:#7EF4B0;}
     #rightColumn {background-color:#EEF4A7;}
     #leftColumn .topSection{background-color:#56A97A;}
     #rightColumn .topSection{background-color:#D6D06D;}

    </style>

</head>

<body>
    <div id="leftColumn">
      <div class="topSection">
        <p>Left column, top section.</p>
      </div>

      <div class="bottomSection">
        <p>Left column, bottom section.</p>
         <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      </div>
    </div>

    <div id="rightColumn">
      <div class="topSection">
        <p>Right column, top section.</p>

      </div>

      <div class="bottomSection">
        <p>Right column, bottom section.</p>
         <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
         <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      </div>
    </div>
</body>
</html>

有一些技巧:首先,我只在 Firefox 中测试了这一点,以便为您提供总体思路 - 有一些 IE 所需的修复程序我没有添加:请查看顶部的列表分离文章以了解详细信息。

我在所有框周围留出了 10 像素的额外空间,只是为了说明这个想法 - 在实际布局中您可能会将这些空间设置为 0。

您可以使用以下规则在列之间设置不同的 .topSection 高度:

#leftColumn .topSection {height:xxx}
#leftColumn .bottomSection {top:xxx}

#rightColumn .topSection {height:yyy}
#rightColumn .bottomSection {top:yyy}

我将使用带有类(或 body 标记上的类)的容器来指定左列的宽度,如下所示:

#container.narrow #leftColumn {width:100px}
#container.medium #leftColumn {width:200px}
#container.wide #leftColumn {width:400px}

这允许您定义一组可以在之间切换的宽度“模板”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不可能的布局? 的相关文章

  • IE7 中列表项之间的 CSS 间隙

    我无法消除 IE7 中列表项之间的间隙 HTML ul li div row 1 1 div div row 1 2 div li ul
  • 退格键删除整个跨度元素

    是否可以通过退格键防止跨度删除 div class form control span class correct answer span The correct answer is A 1 to 2 span span class sen
  • Material-ui 表:如何对表元素进行样式更改

    我正在使用 material ui 并尝试让表格元素在元素具有特定值时改变颜色 下面是我尝试过的代码 如果单元格值为 超出区域 背景应该变成红色 表格渲染得很好 但是切换颜色变化不起作用 这是怎么回事 或者我的方法全错了 function
  • 在 strings.xml 中存储十六进制颜色值

    我正在尝试存储hex colorstrings xml 中我的文本的值 因此所有布局文件都将引用该值 以便能够轻松快速更改项目的所有布局文本 但是我在引用它时遇到了麻烦 Using android textColor FFFFFF 在我的
  • Google 组织结构图数据溢出到 div 之外

    我在一个项目中使用 Google Org 图表 图表的内容在包含的 div 之外流动 该 div 在下面以红色突出显示 我希望图表的节点能够移动到下一行 以防它流到 div 之外 爱丽丝将移动到下一行 数据将继续 See my 在这里摆弄
  • 如何使用浮动而不翻转浮动项目并更改源顺序?这可能吗?

    看这个例子就明白了 http jsbin com ocewu http jsbin com ocewu 替代文本http easycaptures com fs uploaded 212 8042227539 png http easyca
  • 这是 Firefox 中的错误还是 chrome 主动修复了我做错的事情?

    当麦克风的信号超过设定的阈值时 下面的代码只是将一个框变成红色 它在 Linux 上的 chromium 和 Windows 上的 chrome 上快乐地运行一整天 它在两个平台上的 Firefox 上也运行良好 大约 15 秒 当它在 F
  • 单击单选按钮时事件触发的顺序是什么?

    我知道这在浏览器之间是不同的 例如如果我将一个函数附加到单选按钮的 onclick 和 onchange 事件 然后单击它 Chrome 会触发 onchange 然后触发 onclick 而 Firefox 则会执行相反的操作 是否有任何
  • 如何在 django 中为模板应用背景图像

    在我的网站中 在特定的表格中 我必须插入图像作为背景 我这样做了 但图像看起来像双图像 因为图像小于单元格宽度和高度 它正在重叠 在背景图像单元格中 我使用 no repeat 来结束同一图像的重复显示 但它不起作用 我正在 django
  • 关于:链接(Markdown 页面)上的blank#blocked

    在 Markdown 页面中 Microsoft TFS Wiki 我尝试创建 A 标签file link a href file txt a 点击 Chrome 后 我得到了 about blank blocked 这不是 Chrome
  • 相对于父元素的边框框调整子元素的大小

    如果我以百分比设置子元素的大小 则大小将相对于父元素计算内容框 http www w3schools com css css boxmodel asp 独立于我已经设置了它的事实box sizing财产给border box 所以如果我有这
  • CSS 中 img 上的 box-shadow

    是否可以在CSS中为img标签添加阴影 我尝试过 但似乎不起作用 我是正确的还是我的代码搞砸了 CSS image carousel img padding right 14px display block float left box s
  • RegEx 从 CSS 背景样式中提取 URL

    我有一个这种形式的字符串 url http www example com imgs backgrounds bg80 jpg repeat scroll 10 0 transparent 这是来自某个元素的 CSS 样式 该元素目前在页面
  • 如何在WebView中隐藏滚动条?

    我切换到WKWebView因为UIWeb视图Apple 不再建议使用 使用以下代码从 WebView 中的容器加载 HTML 文件 let webview myWKWebViewClass webview for Bundle main f
  • 跨页面加载跟踪子窗口

    如果重新加载父页面 是否可以跟踪子窗口 我目前打开窗口如下 var childWindow childWindow window open url 当我想重新打开同一个子窗口时 childWindow focus 明显的问题是 如果刷新父窗
  • jquery 可以操作用 DOM 创建的临时文档吗?

    我想要实现的目标是通过传递一个大的 html 字符串来操作使用 jquery 使用 DOM 创建的文档 考虑以下示例 var doctype document implementation createDocumentType html v
  • Karate UI 中的 ShadowRoot dom 元素访问问题

    我正在尝试访问 ShadowRoot dom 树元素 但我面临的问题是我无法使用特定的 html 元素来调用 ShadowRoot 因为该元素是动态的 请参见下面的 html 片段 id vaadin text field error 0
  • onChange 事件在哪个权威规范中进行了详尽的定义?

    我有点惊讶地发现 html 文档中的 onChange 事件在文本输入或文本区域上触发 而不是在其值实际更改时触发 而是仅在焦点离开元素时触发 当然 如果其值已更改 所以我一直在寻找说明这一点的规范 但找不到 我可以找到数以百万计的教程来解
  • 如何使我的滚动到顶部按钮动画流畅

    我的页面上有一个滚动到顶部按钮 但是当我单击它时 它不会滚动到顶部 它只是直接带我到顶部 就像我加载了一个新页面一样 但我需要的是滚动动画 javascript window onscroll function scrollFunction
  • hreflang 应该如何构建?

    我的问题是 应该像上面的所有页面一样 或者应该用每个页面的实际 url 进行更改 例如

随机推荐

  • lit-element Web Components 和 React 之间的主要区别[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 查看 React 代码 它似乎与 Lit Element 代码更相似 两者都可以用于创建 Web 组件
  • nullptr_t 是默认的可构造类型吗?

    我无法从 C 11 标准判断 nullptr t 是否有默认构造函数 换句话说 以下内容有效吗 nullptr t n GCC 和 VC 允许上述代码 但 clang 不允许 我在标准中找不到任何内容指定它没有默认构造函数 而我能找到的内容
  • 在html文件Flutter中使用js文件

    如何在 Flutter 中使用与 html 关联的 js 文件 我使用 webview flutter 插件加载index html文件并且它可以工作 但是我无法加载js文件 这是我的颤振代码 return Scaffold appBar
  • 配置 Node Express 来服务静态 Bower_Components?

    我有一个目录结构 projectName bower components public css js index html Gruntfile js package json bower json app js 我想启动我的应用程序并提供
  • Mercurial 版本控制显示推送错误

    我正在为我的项目使用 Mercurial 版本控制 一切都像push pull update做得不错 但有一件事出了问题 当我使用push它显示的是这样的东西 warning bitbucket org certificate with f
  • 在javascript中将一个对象转换为多个对象[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想在 JavaScript 中将一个对象转换为多个对象 这是我的对象 const obj jQuery sts create form s
  • Umbraco:列出用户控件中的子节点

    我有一个用户控件 需要根据parentID 返回子节点 我能够获取parentID 但不知道返回子节点的语法 获取子节点非常简单 不确定您的代码有多远 所以这里是一个包含各种选项的完整示例 using umbraco presentatio
  • 链接多个共享库,这些共享库全部链接到一个公共静态库

    假设您有 2 个共享库 lib1 so 和 lib2 so 它们都静态链接了 libcommon a 如果要动态链接 lib1 so 和 lib2 so 编译器会抱怨符号引用不明确吗 或者编译器是否足够聪明 知道 libcommon 符号在
  • 存储过程、MySQL 和 PHP

    这是一个相当开放的问题 我已经在 MS SQLServer 中使用存储过程以及经典 ASP 和 ASP net 一段时间了 并且非常喜欢它们 我正在从事一个小型爱好项目 由于各种原因 我选择了 LAMP 路线 有什么提示 技巧 陷阱或良好的
  • 例如,C++0x auto 关键字的含义是什么?

    auto a Foo
  • 将320x240x3点云矩阵转换为320x240x1深度图

    有人可以用Python帮我解决以下问题吗 我有从虚拟相机获得的点云矩阵 其尺寸为 320x240x3 表示每个点 相机视图中的点 的 x y z 坐标 所有值的范围都从负到正 如何将此点云矩阵转换为存储每个像素的正深度值的 320x240x
  • 在 Swift 3 中使用选择器

    我正在用 Swift 3 编写我的 iOS 应用程序 我有一个UIViewController扩展 我必须检查控制器实例是否响应方法 下面是我尝试的代码 extension UIViewController func myMethod if
  • 如何使用 WorkManager 更改定期工作请求周期而不立即运行?

    val request PeriodicWorkRequestBuilder
  • 使用R的lm(),公式对象应该作为字符传递?

    我发现 R 使用 lm 时有一个奇怪的行为 基于cars对象 以下函数是在速度 30 时使用局部线性回归绘制拟合断裂距离 func1 lt function fm spd w lt dnorm cars speed spd sd 5 fit
  • Jenkins 与 intellij 共享库

    我开始实现 Jenkins 共享库并尝试使用 intellij 作为我的 ide 编写我的 jenkinsfile 如何从共享 lib 存储库获取函数到其中包含 jenkins 文件的其他存储库 只是为了澄清从 jenkins 运行时对我有
  • 查找数组的第一个重复项

    我决定学习 python 并使用 CodeFight 进行训练 第一个面试练习是找到数组的第一个重复项并返回它 如果没有则返回 1 这是我写的代码 def firstDuplicate a b print len a for i in ra
  • 当两个命令都存在时,在 jupyter 中使用“%”比使用“!”有优势吗?

    例如当我使用 pip install VSCode 建议我使用 pip install 同样有一个版本mv对彼此而言 and 使用其中一种比另一种有优势吗 Yes pip在大多数边缘情况下 将正确解析适当的虚拟环境 当前内核使用的虚拟环境
  • 如何在 Spring WebClient 中一次设置多个标头?

    我试图为我的其余客户端设置标头 但每次我都必须写 webclient get uri blah blah header key1 value1 header key2 value2 如何使用 headers 方法同时设置所有标头 如果这些标
  • Cloudinary api - 解决承诺

    我想编写一个函数 返回一个布尔值 指示我的 Cloudinary 空间中是否已存在具有指定 public id 的图像 我可以使用以下代码将结果记录到控制台 function isUploaded public id cloudinary
  • 不可能的布局?

    我开始认为这是不可能的 但我想我会问你们 基本上它是一个 2 列布局 但 业务 需要以下内容 始终占据整个浏览器窗口 适应浏览器窗口大小的调整 左栏的宽度是固定的 但该宽度在不同页面上应该是灵活的 左列顶部有一个固定高度的区域 左栏有一个底