CSS 在一行上实现灵活但宽度有限的填充内容部分

标签 css

我想制作一个具有灵活对称填充的响应式 div 和一个增长到最大宽度并收缩到最小宽度的内容区域,如下所示:

 <-A-> <------------------ B -----------------> <-A->
+-----+----------------------------------------+-----+
|     |                                        |     |
|     |                                        |     |
|     |                                        |     |
|     |                                        |     |
|     |                                        |     |
|     |                                        |     |
+-----+----------------------------------------+-----+
<------------------------- W ------------------------->

我想要的是一个能让我满意的 CSS 解决方案:

A is at least 10px
B is as big as possible but no bigger than 1366px
B is no smaller than 300px
W = B + ( A * 2 ) always

我认为这对于 Google 来说是一件相对简单的事情,但我发现想出一个好的方法非常具有挑战性。我最终的结果似乎比应有的更难(我的 CSS 中媒体查询和 calc() 调用的组合)。

是否有一个简单的方法/技巧来完成我所描述的操作,或者只是应用正确的媒体查询集和覆盖样式来获得所需的效果?

.out {
  background: blue;
  height: 200px;
}

.in {
  background: red;
  width: calc(100% - 20px);
  height: 100%;
  margin: 0 auto;
  display: block;
}

@media only screen and (min-width: 1366) {
  .in {
    width: 1346px;
  }
}
<div class="out">
  <div class="in">
Lorem ipsum dolor sit amet, consectetur adipiscing 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.    
  </div>
</div>

基本上我想防止红色区域的宽度小于 300px 或大于 1366px。如果它的宽度大于 1366px,我希望填充围绕它对称增长。我想也许我已经明白了?

最佳答案

我认为你的布局可以使用 CSS Grid 来实现。

您可以使用minmax()设置您的列。

示例:

.out {
  background: blue;
  height: 200px;
  display: grid;
  grid-template-columns: minmax(10px, 1fr) minmax(300px, 1366px) minmax(10px, 1fr);
}

.in {
  background: red;
  grid-column: 2;
}
<div class="out">
  <div class="in">
    Lorem ipsum dolor sit amet, consectetur adipiscing 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.
  </div>
</div>

关于CSS 在一行上实现灵活但宽度有限的填充内容部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917607/

相关文章:

html - ngx-owl-carousel 单个元素占用所有宽度的情况

html - 悬停的 CSS 菜单问题

css - 使用 Chrome DevTools 编辑 SCSS 在 Ionic 元素中不起作用

ios - 显示 : flex? 的 iOS 渲染错误

javascript - 在 JavaScript 中将位置移动到 div

javascript - 使用 setTimeout 更改不透明度

css - 如何在 CSS 中制作 gmail 样式的配置文件菜单?

html - 将表格导航转换为 css 导航布局

html - 为什么这个高度为 100vh 的 div 没有覆盖整个视口(viewport)?

jquery - Bootstrap 导航栏菜单项溢出