2017-07-30 76 views
0

我想要一个具有“左侧形状的角度”的div。我怎样才能用CSS3创建这个?我假设这需要2个div?我知道我可以制作一个矩形div并填充它,并有黄色文本。虽然我不知道我能做些什么来使左边的三角形成形。它可以只完成div吗?还是需要2?寻找最好的方式来做到这一点。如何用css创建一个带有三角形形状的div?

enter image description here

+1

的可能的复制[?如何CSS三角形工作(https://stackoverflow.com/questions/7073484/how-do-css-triangles-work) – Ivan

回答

2

您可以使用linear-gradient来实现此目的。演示:

.text { 
 
    width: 400px; 
 
    background-image: linear-gradient(45deg, transparent 50px, black 50px); 
 
    padding-left: 100px; 
 
    color: yellow; 
 
}
<div class="text"> 
 
    <h1>Some Name Here</h1> 
 
</div>

1

为什么不尝试这样的事:

.triangle { 
 
    width: 0; 
 
    height: 0; 
 
    border: 50px solid black; 
 
    border-bottom-color: transparent; 
 
    border-left-color: transparent; 
 
    float: left; 
 
} 
 

 
.text { 
 
    width: 400px; 
 
    height: 100px; 
 
    background-color: black; 
 
    float: left; 
 
    color: yellow; 
 
}
<div class="triangle"></div> 
 
<div class="text"><h1>Some Name Here</h1></div>

更多这方面的信息,请参阅How do CSS triangles work?

+3

另外,你可以使用':: before'来做到这一点,所以你不需要两个元素。 – jhpratt

+0

@jhpratt我不知道如何,但我同意,这将是更经济的方法 –

1

您可以使用伪元素::before::after

.triangle { 
 
    padding: 10px; 
 
    position: relative; 
 
    background-color: #000; 
 
    color: yellow; 
 
    display: inline-block; 
 
    margin-left: 40px; 
 
} 
 

 
.triangle::after { 
 
    content: ""; 
 
    position: absolute; 
 
    border: 19px solid #000; 
 
    height: 0; 
 
    width: 0; 
 
    left: -38px; 
 
    top: 0; 
 
    bottom: 0; 
 
    margin: auto; 
 
    border-left-color: transparent; 
 
    border-bottom-color: transparent; 
 
}
<div class="triangle"> 
 
    text-here 
 
</div>

Link for reference

样式因此。

0

您可以使用clip-path但它有not so good browser support。我在这里使用100vmax 100vmax来实现45度裁剪。演示:

.text { 
 
    width: 400px; 
 
    background-color: black; 
 
    -webkit-clip-path: polygon(100vmax 100vmax, 0% 0%, 100% 0%, 100% 100%); 
 
    clip-path: polygon(100vmax 100vmax, 0% 0%, 100% 0%, 100% 100%); 
 
    padding-left: 100px; 
 
    color: yellow; 
 
}
<div class="text"> 
 
    <h1>Some Name Here</h1> 
 
</div>