在带有白色bg图像的div上创建一个带透明背景的CSS三角形?

时间:2012-07-07 22:17:18

标签: html css css3 css-shapes

好的,我正在尝试复制您在页面底部看到的效果,使用回到顶部按钮:http://www.ppp-templates.de/tilability/ - 我们的内容区域保持连接。

基本上他正在使用背景图像,我想用CSS复制它并保持相同的效果。

我知道如何用带边框的CSS创建三角形,但在我的情况下,我想使用透明的bg图像而不是颜色,所以我不能使用边框

我删除了背景图片,并在整个div上使用了#FFF,所以它现在都是白色的......我创建了一个新的div,我在其中添加了回到顶部按钮并添加了背景:透明到它所以它是透明的,但是如何通过CSS创建三角形?

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:9)

小提琴:

http://jsfiddle.net/JaMH9/2/

HTML:

<div class="bar">
    <span class="home">^<br>Home, sweet home!</span>
</div>​

CSS:

.bar {
    position: relative;
    width: 90%;
    height: 30px;
    margin: 0 auto;
}

.home {
    position: absolute;
    top: 0px;
    left: 60%;
    width: 20%;
    text-align: center;
}

.bar:before, .bar:after {
    content:'';
    position: absolute;
    top: 0;
    height: 0;
    border-top: 30px solid white;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
      -ms-box-sizing: border-box;
          box-sizing: border-box;
}

.bar:before {
    left: 0;
    width: 70%;
    border-right: 30px solid transparent;
}

.bar:after {
    right:0;
    width: 30%;
    border-left: 30px solid transparent;
}
​

答案 1 :(得分:3)

这是制作具有相当小的标记和css的三角形的一种方法:

HTML:

<div class="triangle"></div>

CSS:

.triangle {
    width: 0; 
    height: 0; 
    border-left: 35px solid transparent;
    border-right: 35px solid transparent;
    border-bottom: 35px solid gray;
}

http://jsbin.com/iribib/21

答案 2 :(得分:2)

在这里,http://jsfiddle.net/pkUx7/1/

<强> HTML

<body>
    <div id = "footer"></div>
    <div id = "bottom-line-left"></div>
    <div id = "triangle"></div>
    <div id = "bottom-line-right"></div>
</body>

<强> CSS

body {
    background-color: purple;
}   

div {
    margin:0;
    padding:0;
    background-color: violet;
}

#footer {
    height: 100px;
}

#bottom-line-left, #bottom-line-right {
    display: inline-block;
    height: 20px;
}

#bottom-line-left {
    width: 61%;
}

#bottom-line-right {
    float: right;
    width: 37%;
}

#triangle {
    margin-left:-6px;
    margin-right: -4px;
    padding:0;
    display: inline-block;
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 20px solid purple;
}

答案 3 :(得分:2)

我只是将它们放在一起,可能有更好的方法来实现这种效果。

HTML

<div class="div1">Lorem Ipsum</div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div>

CSS

body {
    background-color: gray;
    border: 20px solid gray;
}
.div1 {
    background-color: white;
    border: 20px solid white;
}
.div2 {
    float: right;
    border-top: 20px solid white;
    border-right: 20px solid white;
    border-left: 20px solid transparent;
}
.div3 {
    float: right;
    margin: 10px -20px;
    border-bottom: 20px solid white;
    border-right: 20px solid transparent;
    border-left: 20px solid transparent;
}
.div4 {
    border-top: 20px solid white;
    border-right: 20px solid transparent;
    margin-right: 40px;
}

here

答案 4 :(得分:0)

您可以使用向量path。 例如,带绿色边框的透明三角形:

<svg height="151" width="150">
    <path d="m0 150 h150 l -75 -150 z" fill="transparent" stroke="green" />
</svg>

here