CSS:特殊布局

73 阅读1分钟

一、品字布局

1.1

* {
  margin: 0;
  padding: 0;
}
body {
  overflow: hidden;
}
div {
  margin: auto 0;
  width: 100px;
  height: 100px;
  background: red;
  font-size: 40px;
  line-height: 100px;
  color: #fff;
  text-align: center;
}

.div1 {
  margin: 100px auto 0;
}

.div2 {
  margin-left: 50%;
  background: green;
  float: left;
  transform: translateX(-100%);
}

.div3 {
  background: blue;
  float: left;
  transform: translateX(-100%);
}
<div class="div1">1</div>
<div class="div2">2</div>
<div class="div3">3</div>

1.2 全屏版

* {
  margin: 0;
  padding: 0;
}

div {
  width: 100%;
  height: 100px;
  background: red;
  font-size: 40px;
  line-height: 100px;
  color: #fff;
  text-align: center;
}

.div1 {
  margin: 0 auto 0;
}

.div2 {
  background: green;
  float: left;
  width: 50%;
}

.div3 {
  background: blue;
  float: left;
  width: 50%;
}

<div class="div1">1</div>
<div class="div2">2</div>
<div class="div3">3</div>

二、九宫格

  1. CSS实现自适应九宫格布局 大全
  2. css布局 - 九宫格布局的方法汇总

三、瀑布流布局

待补充

题目

问题描述: 实现一个div垂直居中, 其距离屏幕左右两边各10px, 其高度始终是宽度的50%。同时div中有一个文字A,文字需要水平垂直居中。

//calc和vw
* {
  padding: 0;
  margin: 0;
}

html,
body {
  width: 100%;
  height: 100%;
}

.wrapper {
  position: relative;
  width: 100%;
  height: 100%;
}

.box {
  margin-left: 10px;
  /* vw是视口的宽度, 1vw代表1%的视口宽度 */
  width: calc(100vw - 20px);
  /* 宽度的一半 */
  height: calc(50vw - 10px);
  position: absolute;
  background: red;
  /* 下面两行让块垂直居中 */
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
}
<div class="wrapper">
  <div class="box">A</div>
</div>