CSS三角形和IMG

时间:2014-11-16 17:05:53

标签: css image position geometry css-shapes

我正在尝试做你在图像上看到的三角形部分。 enter image description here

我尝试了一些方法但没有成功。

如果图像改变大小,我需要三角形来代替。 而且我不希望容器div因为三角形而扩展。 但我无法修复div高度,因为如果图像大小改变它会改变。 我不想在Photoshop中做三角形并导出图像,因为当你点击它时你也会看到三角形。

任何想法如何以正确的方式实现这一目标。

以下是我的尝试。

http://jsfiddle.net/37uufbg3/

.arrow-down {
    width: 0; 
    height: 0; 
    border-left: 20px solid transparent;
    border-right: 20px solid transparent;   
    border-top: 20px solid #f00;
}
.image{
    width:100%;
}

<div class="imageTriangle">
   <img src="image.jpg">
   <div class="arrow-down"></div>
</div>

2 个答案:

答案 0 :(得分:4)

对图像使用伪元素:after

演示 - http://jsfiddle.net/victor_007/dvv7bg76/

此示例不适用于ie8

.image:after {
    content:'';
    width: 0; 
    height: 0; 
    border-left: 20px solid transparent;
    border-right: 20px solid transparent;   
    border-top: 20px solid #f00;
    position:absolute;
    left:50%;
    top:0;
    transform:translatex(-50%); /** making it horizontally center **/
}

或旧版浏览器也可以使用此

演示 - http://jsfiddle.net/victor_007/dvv7bg76/1/

这将适用于ie8

.image:after {
    content:'';
    width: 0;
    height: 0;
    border-left: 20px solid transparent;
    border-right: 20px solid transparent;
    border-top: 20px solid #f00;
    position:absolute;
    left:50%;
    top:0;
    margin-left:-20px; /** for older browsers **/
}

答案 1 :(得分:0)

试试这个

&#13;
&#13;
.arrow-down {
  position:absolute;
  top:0;
  left:50%;
  width:0; 
  height:0; 
  border-left:20px solid transparent;
  border-right:20px solid transparent;   
  border-top:20px solid black;
}
.image{
  position:absolute;
  top:0;
  left:0;
  width:100%;
}
img{
  width:100%;
}
&#13;
<div class="image">
   <img src="http://lorempixel.com/400/200/">
   <div class="arrow-down"></div>
</div>
&#13;
&#13;
&#13;

如果我需要进一步澄清,请添加评论。