【问题标题】:Page cut off with center technique用中心技术切断页面
【发布时间】:2011-07-20 21:12:20
【问题描述】:

在我的网站上,我有一个中心和一个右栏。中间和右列被一个 id = wrap 的<div> 元素包围。周围的 div 元素使用以下 CSS 技术居中:

#wrap{
  position:absolute;
  left:50%;
  margin-left:-307px; /* 307px = half of 594px(width of #center_column) */
}

这很好用,只是当浏览器的宽度调整为小于周围 <div> 元素的宽度时,页面的左侧部分被切断,无法通过水平滚动查看

【问题讨论】:

  • 所以你有一个使用 margin: 0 auto 的中心对齐的列,那么你在它的右边有一个辅助列页面,它挂在它上面对吗?当您调整浏览器的大小时,居中对齐的列和辅助列都不会移动?
  • 如果你使用 position:absolute 来居中,你不应该。

标签: css html center


【解决方案1】:

如果您有一个 min-width 的中心列 (594px) + 2 x 右列宽度,则可以尝试提供正文或整体包装器

问题在于绝对定位的布局,页面实际上并不知道 div 的存在,它们就像贴在屏幕上的便利贴,所以你必须给它一些“真实”的东西才能滚动到

[更新]

我不太确定你是如何定位的,但你根本不需要[绝对]定位中心柱,然后你可以使用margin: 0 auto; 居中方法.. 然后你把居中列内的右列,位于底部,并将右列定位在右侧。然后,如果右侧边栏被覆盖,屏幕将保持布局居中并滚动

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
 "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title> Centered with right Sidebar </title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="/" type="text/css" media="screen" charset="utf-8">
<style type="text/css" media="screen">
#wrap{
width: 594px; /* width of center column only */
margin: 0 auto;
position: relative;
border: 3px solid #eee;
height: 400px /* demo only add content for real height */
}

#rightcol {
position: absolute;
right: -260px; /* adjust to suit allowing for borders */
bottom: 0;
border: 3px solid #ff0;
width: 250px;
height: 300px /* demo only */
}

</style>
</head>
<body>
<div id="wrap">
 <div id="content">
    <h1>HTML Ipsum Presents</h1>
    <p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>

    <div id="rightcol">Right sidebar</div>
 </div>
</div>
</body>
</html>

【讨论】:

  • 优秀的解决方案!谢谢!
【解决方案2】:

另一种居中技巧:

#wrap {
  width: 614px ;
  margin-left: auto ;
  margin-right: auto ;
}

当浏览器调整大小时,div 将始终可见或可滚动。

【讨论】:

  • 如果我应用您的代码,它将使环绕居中,并且中心列和右列将同样居中。这不是我想要的。我希望在中心列居中时右列突出到右侧。
  • @inquisitive_web_developer 您需要为右列设置一个单独的 css 类,将其绝对定位在中心列 div 的边缘。您还需要在主中心列上设置相对位置,以便子列将基于父列而不是视口进行绝对定位。这是另一篇描述它的帖子:stackoverflow.com/questions/104953/…
猜你喜欢
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 2014-09-06
  • 2013-02-09
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多