css从中间到角落旋转背景

时间:2018-03-26 21:34:14

标签: css css3 background-color css-transforms

我想在CSS中实现这一点,对所有屏幕尺寸都有效: example

从屏幕的左侧到中间,背景应为蓝色,从上中间到右下角,背景应为白色。 这就是我已经得到的:

<style>
.wrapper {
    position: fixed;
    z-index: 1;
    width: 100%;
    height: 100%;
    background: #297fca;
}
.right {
    position: fixed;
    z-index: 2;
    top: -70%;
    right: -50%;
    background: #fff;
    width: 100%;
    height: 100%;
    transform: translateY(50%) rotate(45deg);
  }
</style>
...
 <div class="wrapper">
    <div class="right">
    </div>

  </div>

这适用于某些屏幕尺寸,但不适用于一般解决方案。 我正在寻找一个仅限CSS的解决方案。如果这不可能,SVG配备也可以。

提前致谢。

2 个答案:

答案 0 :(得分:4)

您可以使用线性渐变轻松完成此操作。您需要其中两个,一个将创建一个正方形形状以填充前50%,第二个将创建三角形形状以填充剩余的50%。

body {
  margin:0;
  height:100vh;
  background:
  linear-gradient(#297fca,#297fca) 0 0/50% 100% no-repeat,
  linear-gradient(to bottom left,transparent 49.8%,#297fca 50%)100% 100%/50.5% 100% no-repeat;
}

语法更简单:

body {
  margin:0;
  height:100vh;
  background-image:
   linear-gradient(#297fca,#297fca),
   linear-gradient(to bottom left,transparent 49.8%,#297fca 50%);
  background-repeat:no-repeat;
  background-size:50.1% 100%; /* both gradient will fill 50% width and 100% height*/
  background-position:
    left, /* The first one placed on the left*/
    right /* The second one placed on the right*/
}

答案 1 :(得分:2)

您可以使用css clip-path属性并为其指定必要的填充规则。试试下面的代码:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.container {
  height: 100vh;
  background: #297fca;
  clip-path: polygon(0 0, 50% 0, 100% 100%, 0 100%);
}
<div class="container"></div>