我想将css三角形定位为背景

时间:2017-03-16 14:36:23

标签: html css css3 layout pseudo-element

我想构建以下布局:

enter image description here

我希望只使用css。但即使有背景图像,我也不知道如何构建它。我搜索了网络,但没有找到我需要的帮助。

布局包含一个带有一些文本的div。背景颜色为浅灰色。然后我想添加一个更黑的三角形背景,如图所示。这也可以作为响应式布局。

我尝试了什么:

# html
<div class="wrapper">
    <h1>Das ist ein test</h1>
    <h2>subheadline</h2>
</div>

#css
.wrapper {
  padding-top: 100px;
  text-align: center;
  width: 100%;
  background-color: #4d4d4d;
  height: 400px;
  color: #fff;
  position: relative;
}
.wrapper:before{
  height: 50%;
  width:100%;
  position:relative;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  transform: rotate(45deg);
  content:'';
  display:block;
  position:absolute;
  top: 0;
  background-color: #3d3d3d;
}

但这不起作用,我无法自己解决。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您可以在较暗的背景上设置2个浅色渐变。

它们相互重叠,只剩下剩下的三角形

$ git fetch origin
$ git checkout master
$ git reset --hard origin/master
div {
    width: 400px;
    height: 200px;
    border: solid 1px green;
    background: linear-gradient(to top left, lightgreen 50%, transparent 50%),
    linear-gradient(to top right, lightgreen 50%, transparent 50%), green;
}

答案 1 :(得分:1)

试试这个,但仍然需要在响应部分做一些工作。

hfig = figure();
hax = axes();

t = (0:N)*2*pi/N; %t=-pi:0.01:pi
x = Radius*cos(t)+x0;
y = Radius*sin(t)+y0;

c1 = fill(x,y,col1);

set(c1, 'edgecolor','k')

set(hfig, 'PaperUnits', 'inches', ...
          'PaperSize', [0.8666,0.8666], ...
          'PaperPosition', [0 0 0.8666 0.8666], ...
          'InvertHardCopy', 'off')

axis(hax, 'equal')
axis(hax, 'off')

set(hax, 'Position', [0 0 1 1]); 
set(hfig, 'Color', 'none');

print(hfig, '-dpng', 'output.png')
.box{
  position: relative;
  width: 100%;
  max-width: 600px;
  background: #ccc;
  min-height: 300px;
}
.box:before {
  width: 0; 
  height: 0;
  content: "";
  position: absolute;
  z-index: 0;
  top: 0;
  left: 0;
  border-left: 300px solid transparent;
  border-right: 300px solid transparent;
  border-top: 180px solid #555;
}

.box .content{
  z-index: 10;
  position: relative;
  color: #fff;
  text-align: center;
  padding-top: 40px;
}

h1, h2{
  margin: 0;
  padding: 0;
}
h2{
  margin-bottom: 80px;
}

.btn{
  background: #f00;
  color: #fff;
  display: inline-block;
  padding: 5px 10px;
  text-align: center;
  text-decoration: none;
  min-width: 200px;
  font-size: 20px;
}

答案 2 :(得分:0)

这应该让你接近,并说明一个仅CSS的方法:

* {
  margin: 0;
  padding: 0
}

body {
  background: #ccc;
  min-height: 500px;
}

div {
  width: 0;
  height: 0;
  margin: 0px auto;
  border: 200px solid transparent;
  border-top-color: grey;
}

a {
  display: block;
  background: blue;
  color: white;
  padding: 5px 10px;
  width: 200px;
  margin: 0px auto;
  position: relative;
  top: -200px;
  text-align: center;
  text-decoration: none;
}
<div></div>
<a href="#">link</a>