【发布时间】:2021-05-18 19:04:16
【问题描述】:
我正在尝试设计一种页眉样式,其中两个图像从页眉文本的任一侧开始,并向外延伸到屏幕的整个宽度。同时,标题文本的位置需要与在其下方流动的其他页面内容的位置保持左对齐,其宽度为 100%,但最大宽度为 1280px。我不希望图像被文字截断。
这是我想要实现的目标的图像: Image showing tight width screen vs. large width screen
我希望文本不会切断左右两侧看到的圆圈。
我的尝试:
-
我尝试使用 ::before 和 ::after 来定位这两个图像,但是,我还没有找到将这些伪元素的开始设置为文本跨度的开始和结束的方法。
-
我可以在包含标题文本的全角容器上设置背景图像,但随后我必须将白色背景应用于标题文本跨度,这会导致图像在其后面被切断文本——不理想。
-
Display:flex 让我最接近我想要的行为(左右 div 拥抱包含文本跨度的 div 的任一侧并填充屏幕空间的其余部分),但是,没有直接的方法来确保左侧文本的边缘与正文其余部分的左边缘对齐。如果我想要居中的文本,flex 解决方案可以工作,但我需要左对齐的文本。
CSS 网格是我考虑过的东西,但似乎我无法获得我想要的拥抱行为,同时仍然与页面内容很好地对齐。
谢谢!
--编辑:我试图包含一些迄今为止我得到的最佳解决方案的代码,即 display:flex。我不得不从我的源代码中简化它并且无法让它运行,不幸的是,很抱歉,因为我对在 S.O. 上发帖很新。--
body {
margin: 0px auto;
width: 100%;
background-color: #333;
}
.page-header {
display:flex;
background-color:#fff;
}
.left {
flex:auto;
background-image: url("[image]");
background-repeat:repeat-x;
background-position: right bottom 20px;
}
.text {
flex:initial;
text-align: center;
max-width: 1280px;
}
.right {
flex:auto;
background-image: url("[image]");
background-repeat:repeat-x;
background-position: left bottom 20px;
}
.body-content-wrapper {
max-width: 1280px;
padding: 2.5%;
background-color: #333;
}
和
<body>
<div class=“page-header”>
<div class=“left”>The left image</div>
<div class=“text”><h1>The page header text</h1></div>
<div class=“right”>The right image</div>
</div>
<div class=“body-content-wrapper”>
[rest of page content]
</div>
</body>
编辑 这是我试图避免使用标题图像的图像:它在文本的任一侧被“切断”(标题中的左侧点应该从文本的左侧开始并延伸到屏幕边缘,而右侧的点应从文本的右侧开始并向右延伸到屏幕边缘)。
【问题讨论】:
-
您能否附上您迄今为止尝试过的代码 sn-p?这将给我们更多的机会。另外,要明确一点:看起来图像的宽度可能会发生变化,但它们的 比例 将始终相同?例如每个底部图像将始终占据宽度的 1/3,尽管宽度可能会发生变化。
-
嗨!我试图添加我得到的最接近的简化版本(使用居中文本而不是左对齐)。我没有达到可以对齐标题文本和正文内容的左边缘的版本。
-
哦!回答您的另一个问题:标题下方的内容类型将逐页更改,并且所有嵌套项目当前的宽度都遵循响应式三分之一网格(基于浮动,目前我尚未实现 CSS 网格)。页面标题是唯一应该“突破”网格的内容,尽管标题文本的左侧应始终与所有剩余页面内容的父容器的左边缘对齐。希望这是有道理的!
标签: css image layout flexbox background-image