编码此图像的最佳技术是什么?

时间:2012-03-31 11:23:51

标签: html css3

我有这张图片:image

我想用html和css3编码这个图像(只是条形图,而不是背景 - 背景可以改变)。它必须在高度和宽度上可扩展。什么是最好的技术呢?感谢。

3 个答案:

答案 0 :(得分:1)

我可能不会推荐它是最好的技术,但不知何故它会更好用:

使用线性渐变:线性渐变是指在两条直线之间的距离上逐渐在颜色之间转换的渐变。最简单的是,线性梯度将沿着线的整个长度在两种颜色之间按比例变化。

div {
background: -moz-linear-gradient(#FFF, #000);
background: -ms-linear-gradient(#FFF, #000);
background: -o-linear-gradient(#FFF, #000);
background: -webkit-linear-gradient(#FFF, #000);
}

答案 1 :(得分:1)

好的,你可以试试这个(仅在Firefox 11中测试过)......

<强> HTML

<div class="bubble">
    <div class="content">
        Some content can go inside this bubble...
    </div>
    <div class="arrow"><div class="arrow-shadow"></div></div>
</div>

<强> CSS

    .bubble
{
    background:#D0D0D0;
    background-image: -ms-linear-gradient(top, #BBB 0%, #EEE 100%);
    background-image: -moz-linear-gradient(top, #BBB 0%, #EEE 100%);
    background-image: -o-linear-gradient(top, #BBB 0%, #EEE 100%);
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #BBB), color-stop(1, #EEE));
    background-image: -webkit-linear-gradient(top, #BBB 0%, #EEE 100%);
    background-image: linear-gradient(top, #BBB 0%, #EEE 100%);
    border-radius:10px;
    border-top:2px solid #EEE;
    border-bottom:2px solid #AAA;
    position:relative;
    width:380px;
    height:100px;
}
.bubble .content
{
    padding:10px;
}

/* Arrow */
.bubble .arrow {
    position:absolute;
    top:50%;
    left:100%;
    margin-top:-12px;
}
.bubble .arrow:after,
.arrow .arrow-shadow
{
    border:10px solid Transparent;
    border-color:rgba(255,255,255,0) rgba(255,255,255,0) rgba(255,255,255,0) rgba(255,255,255,0);
    content:' ';     
    height:0;
    position:absolute;
    width:0;
}
.bubble .arrow:after
{
    border-left-color:#D3D3D3;
}
.arrow .arrow-shadow
{
    height:3px;
    border-left-color:#AAA;
}

在我看来这是一个黑客攻击,但它似乎与你想要的相当接近。唯一可能是问题的是:

  1. 向后兼容性。较早版本的IE可能会窒息,因此需要对其进行测试并根据需要破解IE兼容性。
  2. 如果框太大,箭头可能看起来与框的颜色不同。我无法找到解决方法,所以你可能会有更好的结果将箭头放在静态位置。
  3. 你可以在这里找到一个JSFiddle:http://jsfiddle.net/eWj6q/13/

答案 2 :(得分:0)

这是我可以使用div的最接近的。

使用canvas可能会更好地获得箭头,但它需要javascript。 Javascript还可以解决类似箭头的框的背景颜色问题。 :)

演示:http://jsfiddle.net/Xvm2C/

屏幕截图:http://i.stack.imgur.com/iwlMj.png

HTML部分:

<div class="nice">
<div class="arrow-container">
</div>
Hello world!
</div>

CSS部分:

    body {padding:50px; background-color: #ccc;}
.nice {
    background-color: white;
    position: relative;
    min-height:65px;
    padding:10px 10px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
    background: -moz-linear-gradient(top, #cccccc 0%, #ffffff 100%); /* firefox */

    box-shadow: 0 0px 0px #fff, 0 0px 1px #666, inset -1px -1px 0px rgba(0,0,0,0.5), inset 0 1px 1px rgba(255,255,255,0.8);

    -moz-box-shadow: 0 0 0 #FFFFFF, 0 0 1px #666666, -1px -1px 0 rgba(0, 0, 0, 0.5) inset, 0 1px 1px rgba(255, 255, 255, 0.8) inset;

    -webkit-box-shadow: 0 0px 0px #fff, 0 0px 1px #666, inset -1px -1px 0px rgba(0,0,0,0.5), inset 0 1px 1px rgba(255,255,255,0.8);    

    text-shadow: 0 1px 2px #fff;

    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#cccccc), color-stop(100%,#ffffff));
    font-size:20px
}



.arrow-container {
    background-color: white;
    height: 26px;

    position: absolute;
    right: 0;
    top: 50%;
    margin-top:-13px;
    margin-right:-19px;
    width: 20px;

    background: -moz-linear-gradient(top, #dcdcdc 0%, #ededed 100%); /* firefox */

    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dcdcdc), color-stop(100%,#ededed));

    box-shadow: 0 0px 0px #fff, 1px 0px 1px #666, inset 0px -1px 0px rgba(0,0,0,0.5), inset -1px 1px 1px rgba(255,255,255,0.8);

    -moz-box-shadow: 0 0 0 #FFFFFF, 1px 0 1px #666666, 0px -1px 0 rgba(0, 0, 0, 0.5) inset, -1px 1px 1px rgba(255, 255, 255, 0.8) inset;

    -webkit-box-shadow: 0 0px 0px #fff, 1px 0px 1px #666, inset 0px -1px 0px rgba(0,0,0,0.5), inset -1px 1px 1px rgba(255,255,255,0.8);  


    -webkit-border-top-right-radius: 7px;
    -moz-border-top-right-radius: 7px;
    border-top-right-radius: 7px;

    -webkit-border-bottom-right-radius: 25px;
    -moz-border-bottom-right-radius: 25px;
    border-bottom-right-radius: 25px;

}