优化实战 第 52 期 - 视图设计之“满幅的背景,定宽的内容"

3,160 阅读1分钟

我正在参加「掘金·启航计划」

设计场景

  • 视图中包含多个大区块,每个区块都占据了整个视口的宽度,区块的背景也各不相同

  • 内容是定宽的,即使在不同的分辨率下的宽度不一样,那也是通过媒体查询来改变的这个固定的宽度值;在某些情况下,不同区块的内容也可能具有不同的宽度

应用场景

  • 整个视图都是由这种风格的多个区块组成

  • 某个特定的区域以这种风格来设计,典型的 页脚页头

常规方案

  • 实现思路

    为每个区块准备两层元素,外层用来实现满幅的背景,内层用来实现定宽的内容

  • 结构代码

    <footer>
      <div class="container">内容区域</div>
    </footer>
    
  • 风格代码

    footer {
      background-color: #333;
    }
    .container {
      max-width: 1080px;
      margin: 0 auto;
    }
    
  • margin属性的作用

    通过 auto 值实现左右边距,相当于 视口宽度的一半 - 内容宽度的一半

优化方案

  • 实现思路

    一层结构,通过风格的计算属性设置左右内边距

  • 结构代码

    <footer>内容区域</footer>
    
  • 风格代码

    footer {
      padding: 10px calc(50% - 540px);
      background-color: #333;
    }
    
  • 注意事项

    calc() 函数中必须用空格把 -+ 符号隔开,否则会产生解析错误

    一起学习,加群交流看 沸点