html - 没有 CSS 表达式的可移动侧边栏布局可能吗?

标签 html css xhtml

我有以下布局,侧边栏仅出现在某些页面上,而其他页面上没有。当侧边栏不存在时,#main 应该填充容器的可用宽度。

它有效,但使用了 CSS 表达式 - 是否可以在没有此表达式的情况下实现相同的布局?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<style type="text/css">
/* reset css */

* {
    border: 0px none;
    margin: 0;
    padding: 0;
    vertical-align: baseline;
    font-family: inherit;
    font-style: inherit;
    font-weight: inherit;
    font-size: 100%;
}

/* end reset */

#container {
    margin: 0 auto;
    width: 800px;
    background-color: red;
}

#sidebar {
    display: inline;
    float: left;
    width: 130px;
    background-color: green;
}

#main {
    float: left;
    background-color: blue;
    width: expression(document.getElementById('sidebar') == null ? "100%" : "670px");
    max-width: 100%;
}

#sidebar + #main {
    width: 670px;
    background-color: yellow;
}

#clear {
    clear: both;
    height: 1px;
    font-size: 0px;
}
</style>
</head>
<body>
<div id="container">
    <div id="sidebar"><p>This is the side bar</p></div>
    <div id="main"><p>This needs to expand to fill available width, what if I have sufficient content in here to push this div so it spans across the whole width of the page like so...</p></div>
    <div id="clear"></div>
</div>
</body>
</html>

最佳答案

+ 邻接选择器可以做到这一点,除非在 IE6 中不支持它。通常的解决方法是添加一些额外的类信息:

<div id="container" class="with-sidebar">

然后在样式表中选择:

#sidebar { float: left; width: 130px; }
.with-sidebar #main { margin-left: 130px; }

This needs to expand to fill available width

那就不用让它漂浮了;我不确定这应该实现什么。

还要避免“继承”规则,它们在版本 8 之前的 IE 中不起作用。

关于html - 没有 CSS 表达式的可移动侧边栏布局可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1714699/

相关文章:

css - 用视频标签填充div

validation - W3C 验证重要吗?

javascript - chop 段落前 100 个字符并隐藏段落的其余内容,以通过更多/更少链接显示/隐藏其余内容

javascript - 内联 SVG 和 jQuery 选择

javascript - 自动触发按钮 Action 而不是按下它

html - css 不透明度堆叠顺序

html - 翻转图像 - 仅在浏览器中

javascript - 框架集和javascript变量交互

javascript - 标签键。如何在按 Enter 按钮的同时添加标签?

html - 当前一个元素的宽度动态增长时,如何将 html 元素推到右边?