【问题标题】:CSS - right align block with edge of viewport, but with a limitCSS - 将块与视口边缘右对齐,但有限制
【发布时间】:2013-01-14 11:07:13
【问题描述】:

我有一个带有彩色背景的标题栏和一些右对齐的菜单项。标题栏应拉伸视口的整个宽度,并具有最小宽度以避免缩小到站点主体的(固定)宽度以下。即使标题栏扩展得更宽,内部的菜单项也应与网站的主体保持右对齐。到目前为止一切顺利:http://jsfiddle.net/symposion/fgrGD/

<div class="headerBar">
  <div class="headerMenu">
    Some item
  </div>
</div>
<div class="mainContent">
</div>

.headerBar {
  margin-top:30px;
  background-color:black;
  color:white;
  min-width:400px;
  padding-top:10px;
  padding-bottom:10px;
}

.headerMenu {
  text-align:right;
  max-width:400px;
  margin-left:auto;
  margin-right:auto;
}

.mainContent {
  width:400px;
  margin-left:auto;
  margin-right:auto;
  background-color:blue;
  height:100px;
}

复杂的地方在于,当浏览器的大小调整为小于主站点,以充分利用剩余空间。这样做的天真方法是从标题栏中删除最小宽度,但这显然意味着当您向右滚动时会出现令人讨厌的空白。

约束:

  • 我无法将标题设为固定高度,它需要根据其内容扩展和收缩
  • 没有 JS
  • 理想情况下,我希望在标题中避免大量冗余标记;如果这是唯一的方法,我可以忍受一点。
  • 需要在 IE8+、Firefox、Chrome、Safari、iOS 中工作

有什么想法吗?

【问题讨论】:

  • 你试过媒体查询吗?

标签: html css


【解决方案1】:

您需要使用媒体查询。

媒体查询是一个逻辑表达式,它要么是真要么是假。一种 如果媒体查询的媒体类型与 运行用户代理的设备的媒体类型(定义为 在“适用于”行),媒体查询中的所有表达式都是 真的。

示例:

@media screen and (max-width: 765px) {
    ...styles...
}

jsFiddle:http://jsfiddle.net/uRaMS/

来源:http://www.w3.org/TR/css3-mediaqueries/

【讨论】:

  • 我没想到。我还不太清楚它将如何解决将文本与视口边缘对齐的问题,而它的包含块具有固定的宽度,但希望你的 jsfiddle 能回答这个问题。可悲的是,jsfiddle.net 目前无法使用:-(
  • 好吧,JSFiddle 已经让步了(简单地说)。您的解决方案是一个不错的折衷方案(因此是赞成票),但它并不是我想要的,因为它失去了较小视口尺寸的正确对齐方式。理想情况下,我希望保持文本与视口边缘右对齐,同时仍将包含标题块延伸到站点的完整定义宽度(示例中为 400px)...
  • 是这个意思吗?我不太明白您要达到的目标。 jsbin.com/uguyat/1/edit
  • 不完全,不。即使视口小于 400px,mainContent 和 headerBar 仍应为 400px 宽,只是其中的文本想要跟踪视口的右侧边缘。本质上我有一个固定宽度的网站,但我希望顶部菜单是流畅的 - 两者的混合似乎让这变得困难!
猜你喜欢
  • 2014-10-18
  • 2015-11-28
  • 2011-03-04
  • 2011-02-05
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2020-06-03
相关资源
最近更新 更多